Escolar Documentos
Profissional Documentos
Cultura Documentos
ADRIELLY LOPES
BRUNO HENRIQUE
ESDRAS DE LIMA SILVA
WESLEY ALVES
Cajazeiras - PB
2023
ADRIELLY LOPES
BRUNO HENRIQUE
ESDRAS DE LIMA SILVA
WESLEY
Cajazeiras - PB
2023
Sumário
A Makitex será uma empresa de marketing digital que oferecerá serviços online de
escrita e revisão de conteúdos como posts de blog, newsletter e etc. Para oferecer
um serviço de qualidade, e organizar bem todas as informações, a empresa terá um
banco de dados que armazenará diversos dados sobre os conteúdos, clientes,
funcionários e etc.
1.2 Requisitos
● Será preciso guardar as informações dos clientes que desejam contratar
qualquer serviço da empresa. Os dados a serem guardados são: nome,
CPF/CNPJ, ramo de atuação, tipo de empreendimento e ano de
fundação/início de atuação e se ele é um cliente especial. Clientes
especiais têm prioridade no atendimento e tem seus conteúdos realizados por
redatores mais qualificados.
Entidade Cliente
Criada para armazenar informações de um cliente.
Atributos
Entidade Serviço
Generalização das entidades Conteúdo, Revisão e Formação. Criada para
armazenar todos os atributos comuns a todos os tipos diferentes de serviço.
Atributos
Entidade Revisão
Especialização da entidade Serviço. Criada para armazenar atributos únicos ao tipo
de serviço de revisão.
Atributos
● categoria: Armazena a categoria que a revisão se enquadra. (geral, tradução,
ortográfica, alinhamento);
● descrição: Armazena detalhes específicos passados pelo cliente para o
serviço de revisão.
Entidade Formação
Especialização da entidade Serviço. Criada para armazenar atributos únicos ao tipo
de serviço de formação.
Atributos
● titulo: Armazena o título do curso;
● duracao: Armazena a duração, em horas, da formação em questão;
● descrição: Armazena a descrição da formação contendo mais detalhes sobre
o curso em questão;
Entidade Conteúdo
Especialização da entidade Serviço. Criada para armazenar atributos específicos
dos serviços de produção de conteúdo;
Atributos
● numeroPalavras: Armazena a quantidade de palavras que o conteúdo deve
possuir;
● persona: Armazena os dados e descrição da persona destinada àquele
conteúdo;
Entidade Pagamento:
Generalização das entidades Débito e Pix. Criada para armazenar atributos comuns
a ambos os tipos de pagamento distintos;
Atributos
● id: Armazena um código único que identifica um pagamento específico;
● titular: Armazena o titular da conta/cartão de quem efetuou o pagamento;
Entidade Débito
Especialização da entidade pagamento. Armazena dados específicos de
pagamentos realizados com cartão de débito;
Atributos
● numeroCartao: Armazena o número do cartão utilizado no pagamento;
● bandeira: Armazena a bandeira do cartão utilizado;
Entidade Pix
Especialização da entidade pagamento. Armazena dados específicos de
pagamentos realizados com Pix;
Atributos
● chaveUtilizada: Armazena a chave que o cliente utilizou para efetuar o
pagamento;
Entidade Funcionário
Generalização das entidades Revisor, Redator e Educador. Criada para armazenar
dados comuns às três entidades mencionadas.
Atributos
● cpf: Armazena o cpf do funcionário;
● nome: Armazena o nome do funcionário;
● dataNascimento: Armazena da data de nascimento do funcionário;
● dataContratacao: Armazena a data de contratação do fun cionário;
● telefone: Armazena os telefones principais do funcionário;
● email: Guarda o email do funcionário.
Entidade Redator
Especialização da entidade Funcionário. Criada para guardar os dados específicos
de cada redator.
Atributos
● areas: Atributos multivalorado que armazena as áreas que o redator está
apto para escrever;
● precoPalavra: Armazena o preco unitário por palavra de cada redator;
● especial: Armazena a informação de que o redator é ou não um profissional
apto para atender demandas de clientes especiais;
Entidade Educador
Especialização da entidade Funcionário. Criada para guardar os dados específicos
de cada educador.
Atributos
● graduacao: Armazena o título acadêmico mais alto que o educador possui;
● instituicao: Armazena a instituição de ensino que o educador conseguiu seu
título mais alto;
● anoConclusao: Armazena o ano de conclusão do curso da graduação,
doutorado e etc;
Entidade Revisor
Especialização da entidade Funcionário. Criada para guardar os dados específicos
de cada revisor.
Atributos
● precoUnitario: Armazena o preço unitário de cada revisor;
● unidade: Armazena a unidade de medida relativa ao preço de cada revisor.
(hora ou palavra).
Relacionamentos
● paga: Relaciona Pagamento à Serviço, por conta de um mesmo pagamento
poder pagar um conjunto de serviços, possui dois atributos: valor e data do
pagamento. Cada serviço só pode ser pago por um único pagamento, mas o
mesmo pagamento pode cobrir vários serviços;
● feito: Relaciona Pagamento à Cliente. Cada pagamento só pode ser feito por
um único cliente, e cada cliente pode efetuar um ou mais pagamentos;
● revisa: Relaciona Revisor à Revisão. Cada revisor pode efetuar zero ou mais
revisões, mas uma revisão só pode ser feita por um único revisor.
3.2.1 Cliente
*chave primária
armazena o cpf apenas
*semântica,
cpfCnpj ou o cnpj do varchar(14) caracteres
deve possuir no
cliente numéricos
mínimo 11
caracteres
armazena o
nome varchar(100) varchar(100) *não nulo
nome do cliente
armazena o
ramo de
ramoAtuacao varchar(100) varchar(100) *não nulo
atividade do
cliente
armazena qual
tipoEmpreendi a forma de
varchar(100) varchar(100)
mento empreendedoris
mo
armazena o ano
de início do
anoInicio character(4) character(4)
empreendiment
o
armazena a
informação se o
especial cliente é boolean boolean *não nulo
considerado
especial
3.2.2 Serviço
identificador
Id único da uuid character(36) *chave primária
revisão
*não nulo
preco da
valores não
preco revisão Real
negativos *semântico, não
realizada
negativo
data da
dataRealizacao realização da date data
revisão
representa o
status status atual da varchar(10) varchar(10) *não nulo
revisão
representa a
classificação valores entre 0 *semântico,
classificação Int
dada pelo e5 entre 1 e 5
cliente
*chave
guarda o estrangeira
cpf/cnpj do referenciando
cpfCnpjCliente cliente que varchar(14) varchar(14) cpfCnpj na
solicitou a tabela Cliente
revisão
*não nulo
3.2.3 Revisão
*chavePrimária
identificador *chave
IdServico único da UUID character(36) estrangeira
revisão referenciando id
na tabela
Serviço
caracteriza a
categoria revisão varchar(50) varchar(50) *não nulo
realizada
representa uma
breve descrição
descrição varchar(300) varchar(300) *não nulo
da revisão
realizada
*não nulo
guarda o cpf do
apenas *chave
revisor que
cpfRevisor character(11) caracteres estrangeira
realizou o
numéricos referenciando
serviço
cpf na tabela
Revisor
3.2.4 Formação
*chavePrimária
identificador *chave
IdServico único da uuid character(36) estrangeira
formação referenciando id
na tabela
Serviço
titulo da
titulo formação varchar(100) varchar(100) *não nulo
disponiblizada
representa uma
breve descrição
descrição varchar(300) varchar(300) *não nulo
da revisão
realizada
*não nulo
guarda o cpf do
apenas *chave
educador que
cpfEducador character(11) caracteres estrangeira
realizou a
numéricos referenciando
formação
cpf na tabela
Educador
3.2.5 Conteúdo
*chavePrimária
identificador *chave
idSerivco único da uuid character(36) estrangeira
formação referenciando id
na tabela
Serviço
descrição da
persona varchar(300) varchar(300)
persona
*chave
estrangeira
guarda o cpf do
apenas referenciando
redator que
cpfRedator character(11) caracteres cpf na tabela
realizou o
numéricos Redator
serviço
*não nulo
3.2.6 Débito
identificador
Id único do uuid character(36) *chave primária
pagamento
*não nulo
número do
apenas
cartão utilizado *semântica,
numeroCartao varchar(20) caracteres
para o apenas
numéricos
pagamento caracteres
numéricos
identifica a qual
bandeira bandeira o Int Int *não nulo
cartão pertence
nome do titular
Titular varchar(100) varchar(100) *não nulo
do cartão
*chave
estrangeira
cpf/cnpj do
apenas referenciando
cliente
cpfCnpjCliente varchar(14) caracteres cpfCnpj na
beneficiado
numéricos tabela cliente
pelo pagamento
*não nulo
*chave
estrangeira
id do serviço referenciando id
idServico uuid character(36)
que foi pago na tabela
Servico
*não nulo
*não nulo
valor que foi apenas valores
valor Real
pago positivos *semântica,
maior que zero
data do
data Date Date *não nulo
pagamento
3.2.7 Pix
identificador
Id único do uuid character(36) *chave primária
pagamento
chave utilizada
chave utilizada para o varchar(100) varchar(100) *não nulo
pagamento
*chave
estrangeira
cpf/cnpj do
apenas referenciando
cliente
cpfCnpjCliente varchar(14) caracteres cpfCnpj na
beneficiado
numéricos tabela cliente
pelo pagamento
*não nulo
*chave
estrangeira
referenciando id
id do serviço
idServico uuid character(36) na tabela
que foi pago
Servico
*não nulo
*não nulo
valor que foi apenas valores
valor Real
pago positivos *semântica,
maior que zero
data do
data Date Date *não nulo
pagamento
3.2.8 Redator
*chave primária
apenas
cpf cpf do redator character(11) caracteres *semântica,
numérios apenas
números
*atributo chave
email email do redator varchar(100) varchar(100)
*não nulo
nome do
nome varchar(100) varchar(100) *não nulo
redator
data de *semântica,
apenas maiores
dataNascimento nascimento do date apenas maiores
de 18 anos
redator de 18 anos
data de
dataContrataca
contratação do date date *não nulo
o
redator
*não nulo
preço cobrado valores
precoPalvra real *semântica,
por palavra positivos
valores
positivos
identifica
especial redatores boolean boolean *não nulo
especiais
*não nulo
telefone apenas
telefone1 principal do varchar(15) caracteres *semântica,
redator numéricos apenas
números
apenas *semântica,
telefone reserva
telefone2 varchar(15) caracteres apenas
do redator
numéricos números
área principal
area1 varchar(100) varchar(100) *não nulo
de atuação do
redator
área secundária
area2 de atuação do varchar(100) varchar(100)
redator
3.2.9 Educator
*chave primária
apenas
cpf cpf do educador character(11) caracteres *semântica,
numérios apenas
números
*atributo chave
email do
email varchar(100) varchar(100)
educador
*não nulo
nome do
nome varchar(100) varchar(100) *não nulo
educador
data de *semântica,
apenas maiores
dataNascimento nascimento do date apenas maiores
de 18 anos
educador de 18 anos
data de
dataContrataca
contratação do date date *não nulo
o
educador
curso de
graduacao graduação do varchar(100) varchar(100) *não nulo
educador
instituição de
instituicao formação do varchar(100) varchar(100) *não nulo
educador
ano de
conclusão do
anoConclusao character(4) character(4) *não nulo
curso do
educador
*não nulo
telefone apenas
telefone1 principal do varchar(15) caracteres *semântica,
educador numéricos apenas
números
apenas *semântica,
telefone reserva
telefone2 varchar(15) caracteres apenas
do educador
numéricos números
3.2.10 Revisor
apenas
cpf cpf do educador character(11) caracteres *chave primária
numérios
*atributo chave
email do
email varchar(100) varchar(100)
educador
*não nulo
nome do
nome varchar(100) varchar(100) *não nulo
educador
data de *semântica,
apenas maiores
dataNascimento nascimento do date apenas maiores
de 18 anos
educador de 18 anos
data de
dataContrataca
contratação do date date *não nulo
o
educador
unidade
unidade utilizada para varchar(50) varchar(50) *não nulo
cobrança
*não nulo
telefone apenas
telefone1 principal do varchar(15) caracteres *semântica,
educador numéricos apenas
números
apenas *semântica,
telefone reserva
telefone2 varchar(15) caracteres apenas
do educador
numéricos números
4. Projeto físico
-- CLIENTE
create table cliente(
cpfCnpj varchar(14) check (cpfCnpj not like '%[^0-9]%') check
(length(cpfCnpj) >= 11),
nome varchar(100) not null,
ramoAtuacao varchar(100) not null,
tipoEmpreendimento varchar(100),
anoInicio character(4),
especial boolean not null,
constraint user_pkey primary key (cpfCnpj)
);
-- SERVIÇO
create table servico(
id uuid default uuid_generate_v4(),
preco real not null check (preco >= 0),
dataRealizacao date,
status varchar(10) not null,
classificacao int check (classificacao >=0) check (classificacao <=
5),
cpfCnpjCliente varchar(14) not null,
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente)
references cliente(cpfCnpj),
constraint servico_id_pkey primary key (id)
);
-- REVISOR
create table revisor(
cpf varchar(11),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date not null check (age(current_date, dataNascimento)
>= interval '18 years'),
dataContratacao date not null,
precoUnitario Real not null,
unidade varchar(50) not null,
telefone1 varchar(15) not null check (telefone1 not like
'%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint revisor_cpf_pkey primary key (cpf)
);
-- REVISAO
create table revisao(
idServico uuid,
categoria varchar(50) not null,
descricao varchar(300) not null,
cpfRevisor varchar(11) not null,
constraint id_revisao_pkey primary key (idServico),
constraint fk_id_servico foreign key(idServico) references
servico(id),
constraint fk_cpf_revisor foreign key(cpfRevisor) references
revisor(cpf)
);
-- EDUCADOR
create table educador (
cpf character(11) check (cpf not like '%[^0-9]%'),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date check (age(current_date, dataNascimento) >=
interval '18 years'),
dataContratacao date not null,
graduacao varchar(100) not null,
instituicao varchar(100) not null,
anoConclusao character(4) not null,
telefone1 varchar(15) not null check (telefone1 not like
'%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint id_educador_pkey primary key (cpf)
);
-- REDATOR
create table redator (
cpf character(11) check (cpf not like '%[^0-9]%'),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date check (age(current_date, dataNascimento) >=
interval '18 years'),
dataContratacao date not null,
conteudosEscritos int not null check (conteudosEscritos >= 0),
precoPalavra real not null check(precoPalavra > 0),
especial boolean not null,
area1 varchar(100) not null,
area2 varchar(100) default null,
telefone1 varchar(15) not null check (telefone1 not like '%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint cpf_redator_pkey primary key (cpf)
);
-- PIX
create table pix (
id uuid default uuid_generate_v4(),
chaveUtilizada varchar(100) not null,
cpfCnpjCliente varchar(14) not null,
idServico uuid not null,
valor real not null check (valor > 0),
dataPagamento date not null,
constraint fk_idServico_pix foreign key(idServico) references
servico(id),
constraint id_pix_pkey primary key (id),
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente) references
cliente(cpfCnpj)
);
-- DEBITO
create table debito (
id uuid default uuid_generate_v4(),
numeroCartao varchar(20) not null check (numeroCartao not like
'%[^0-9]%'),
bandeira int not null,
cpfCnpjCliente varchar(14) not null,
idServico uuid not null,
titular varchar(100) not null,
valor real not null check (valor > 0),
dataPagamento date not null,
constraint fk_idServico_debito foreign key (idServico) references
servico(id),
constraint id_debito_pkey primary key (id),
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente) references
cliente(cpfCnpj)
);
-- CONTEUDO
create table conteudo (
idServico uuid not null,
numeroPalavras int not null check (numeroPalavras > 0),
persona varchar(300),
cpfRedator character(11) not null,
constraint id_conteudo_pkey primary key (idServico),
constraint fk_idServico_conteudo foreign key (idServico) references
servico (id),
constraint fk_cpf_redator foreign key(cpfRedator) references
redator(cpf)
);
-- FORMACAO
create table formacao (
idServico uuid not null,
titulo varchar(100) not null,
descricao varchar(300) not null,
duracao int not null check (duracao > 0),
cpfEducador character(11) not null,
constraint id_formacao_pkey primary key (idServico),
constraint fk_idServico_formacao foreign key (idServico) references
servico(id),
constraint fk_cpf_educador foreign key(cpfEducador) references
educador(cpf)
);
4.1.1 Extensão UUID
4.1.2 Cliente
-- CLIENTE
create table cliente(
cpfCnpj varchar(14) check (cpfCnpj not like '%[^0-9]%') check
(length(cpfCnpj) >= 11),
nome varchar(100) not null,
ramoAtuacao varchar(100) not null,
tipoEmpreendimento varchar(100),
anoInicio character(4),
especial boolean not null,
constraint user_pkey primary key (cpfCnpj)
);
4.1.3 Serviço
-- SERVIÇO
create table servico(
id uuid default uuid_generate_v4(),
preco real not null check (preco >= 0),
dataRealizacao date,
status varchar(10) not null,
classificacao int check (classificacao >=0) check (classificacao <=
5),
cpfCnpjCliente varchar(14) not null,
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente)
references cliente(cpfCnpj),
constraint servico_id_pkey primary key (id)
);
4.1.4 Revisor
-- REVISOR
create table revisor(
cpf varchar(11),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date not null check (age(current_date, dataNascimento)
>= interval '18 years'),
dataContratacao date not null,
precoUnitario Real not null,
unidade varchar(50) not null,
telefone1 varchar(15) not null check (telefone1 not like
'%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint revisor_cpf_pkey primary key (cpf)
);
4.1.5 Revisão
-- REVISAO
create table revisao(
idServico uuid,
categoria varchar(50) not null,
descricao varchar(300) not null,
cpfRevisor varchar(11) not null,
constraint id_revisao_pkey primary key (idServico),
constraint fk_id_servico foreign key(idServico) references
servico(id),
constraint fk_cpf_revisor foreign key(cpfRevisor) references
revisor(cpf)
);
4.1.6 Educador
-- EDUCADOR
create table educador (
cpf character(11) check (cpf not like '%[^0-9]%'),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date check (age(current_date, dataNascimento) >=
interval '18 years'),
dataContratacao date not null,
graduacao varchar(100) not null,
instituicao varchar(100) not null,
anoConclusao character(4) not null,
telefone1 varchar(15) not null check (telefone1 not like
'%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint id_educador_pkey primary key (cpf)
);
4.1.7 Redator
-- REDATOR
create table redator (
cpf character(11) check (cpf not like '%[^0-9]%'),
email varchar(100) not null unique,
nome varchar(100) not null,
dataNascimento date check (age(current_date, dataNascimento) >=
interval '18 years'),
dataContratacao date not null,
conteudosEscritos int not null check (conteudosEscritos >= 0),
precoPalavra real not null check(precoPalavra > 0),
especial boolean not null,
area1 varchar(100) not null,
area2 varchar(100) default null,
telefone1 varchar(15) not null check (telefone1 not like '%[^0-9]%'),
telefone2 varchar(15) check (telefone2 not like '%[^0-9]%'),
constraint cpf_redator_pkey primary key (cpf)
);
4.1.8 Pix
-- PIX
create table pix (
id uuid default uuid_generate_v4(),
chaveUtilizada varchar(100) not null,
cpfCnpjCliente varchar(14) not null,
idServico uuid not null,
valor real not null check (valor > 0),
dataPagamento date not null,
constraint fk_idServico_pix foreign key(idServico) references
servico(id),
constraint id_pix_pkey primary key (id),
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente) references
cliente(cpfCnpj)
);
4.1.9 Débito
-- DEBITO
create table debito (
id uuid default uuid_generate_v4(),
numeroCartao varchar(20) not null check (numeroCartao not like
'%[^0-9]%'),
bandeira int not null,
cpfCnpjCliente varchar(14) not null,
idServico uuid not null,
titular varchar(100) not null,
valor real not null check (valor > 0),
dataPagamento date not null,
constraint fk_idServico_debito foreign key (idServico) references
servico(id),
constraint id_debito_pkey primary key (id),
constraint fk_cpf_cnpj_cliente foreign key(cpfCnpjCliente) references
cliente(cpfCnpj)
);
4.1.10 Conteúdo
-- CONTEUDO
create table conteudo (
idServico uuid not null,
numeroPalavras int not null check (numeroPalavras > 0),
persona varchar(300),
cpfRedator character(11) not null,
constraint id_conteudo_pkey primary key (idServico),
constraint fk_idServico_conteudo foreign key (idServico) references
servico (id),
constraint fk_cpf_redator foreign key(cpfRedator) references
redator(cpf)
);
4.1.11 Formação
-- FORMACAO
create table formacao (
idServico uuid not null,
titulo varchar(100) not null,
descricao varchar(300) not null,
duracao int not null check (duracao > 0),
cpfEducador character(11) not null,
constraint id_formacao_pkey primary key (idServico),
constraint fk_idServico_formacao foreign key (idServico) references
servico(id),
constraint fk_cpf_educador foreign key(cpfEducador) references
educador(cpf)
);
4.2 Scripts de povoamento
-- Povoamento Serviço
INSERT INTO Servico(id, preco, dataRealizacao, status, classificacao,
cpfCnpjCliente)
VALUES
('4827dc22-6e0e-4d1e-b4d6-9602f2c492f1',120, '2023-11-10', 'concluído',
4, '81997734052'),
('af04c594-8d90-4304-a407-09230b5251d8', 21, '2023-10-01', 'concluído',
3, '93486588000116'),
('0f25c0b8-dcbf-4d6d-aa9f-f190121340e4',140, '2023-11-05', 'andamento',
0, '93486588000116'),
('3c409f64-0d5c-4300-9a3f-4384cdf8087e', 25.6, '2020-12-20', 'concluído',
4, '85162521000106'),
('2502c49b-3c19-4ee5-910e-569383c93a4b', 15, '2020-12-24', 'concluído',
5, '85162521000106'),
('f47ac10b-58cc-4372-a567-0e02b2c3d479', 16, '2021-05-10', 'concluído',
4, '81997734052'),
('6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 30, '2021-10-01', 'concluído',
3, '54658743094'),
('c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1',110, '2019-03-17', 'andamento',
0, '85162521000106'),
('8b41b5b6-1a43-4972-b92a-2e23081c97ea',130, '2021-08-13', 'concluído',
4, '85162521000106'),
('24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 140, '2021-04-19', 'concluído',
5, '33749790000161'),
('db2b5ff0-6a41-4eb3-883f-3fbb68b0fd7c',300, '2023-05-12', 'concluído',
4, '33749790000161'),
('9f7e3a2d-5087-4d13-847d-f03465d6e147', 240, '2023-03-09', 'concluído',
3, '93486588000116'),
('a7889a64-4e46-46e8-8ec0-52a2d5691dfe',225, '2022-07-07', 'concluido',
0, '54658743094'),
('b5ac7dc9-19c7-4ba0-9f38-6dbcc13b45db',332, '2021-04-14', 'concluído',
4, '85162521000106'),
('e94d758f-5941-45f3-87c3-8480c77f1e05',310, '2021-08-23', 'concluído',
5, '81997734052');
-- Povoamento Revisor
INSERT INTO Revisor(cpf,email,nome, dataNascimento, dataContratacao,
precoUnitario, unidade, telefone1, telefone2)
VALUES
('73876313015', 'julio@email.com','Júlio da Silva', '2001-11-16',
'2020-10-05', 18, 'hora', '88992345678', '85964324758'),
('67966634035', 'amanda@email.lcom','Amanda da Silva', '1990-06-11',
'2020-10-05', 15, 'hora', '83965987856', '86955689748'),
('10110017056', 'roberta@email.com','Roberta Alves', '1989-02-01',
'2017-11-03', 15, 'palavra', '85991929365',null),
('56246288030', 'dani@email.com','Daniela Campos', '2000-07-22',
'2018-07-08', 15, 'hora', '84999568874', null),
('85107563090', 'jose@email.com','José Carvalho', '1995-06-06',
'2020-02-20', 15, 'palavra', '88993236354',null);
-- Povoamento Educador
INSERT INTO educador(cpf, email, nome,dataNascimento, dataContratacao,
graduacao, instituicao, anoConclusao, telefone1, telefone2)
VALUES
('41180541081', 'jorge@email.com', 'Jorge Henrique', '1992-12-24',
'2020-05-12', 'Publicidade', 'FECAP', '2019', '86957845125',null),
('65081889091', 'bruna@email.com', 'Bruna Mendes', '1991-11-08',
'2020-02-08', 'Publicidade', 'ESPM', '2019', '85969874589',null),
('46644579019', 'pnobre@email.com', 'Paulo Nobre', '1990-07-12',
'2019-07-20', 'Publicidade', 'USP', '2019', '83994656768',null),
('92337404048', 'kadan@email.com', 'Kauã Dantas', '2000-09-19',
'2018-11-10','Engenharia Civil', 'IFPB', '2019', '85999663589',null),
('18661834007', 'isans@email.com', 'Isa Nunes', '1889-07-23',
'2017-04-15','Análise e Desenvolvimento de Sistemas', 'IFPB', '2019',
'82996655478', '83997949585');
-- Povoamento Redator
insert into Redator(cpf, email, nome, dataNascimento, dataContratacao,
conteudosEscritos, precoPalavra, especial, area1, area2, telefone1,
telefone2)
values
('99767411038', 'joao@email.com', 'Joao Silva','1985-09-11',
'2018-10-05', 1, 0.03,true, 'saúde', 'marketing digital', '84999523212',
null),
('65022657074', 'wesley@email.com', 'Wesley Alves','1991-04-18',
'2020-07-12', 1, 0.03,false, 'educação', 'tecnologia da informação',
'87954216598', null),
('98061973057', 'roberta@email.com', 'Roberta Barbosa','2000-04-08',
'2017-06-12', 1, 0.035,true, 'tecnologia da informação', 'marketing
digital', '83996547888', null),
('05787003012', 'luana@email.com', 'Luana
Cardoso','1997-06-16','2021-11-14', 2, 0.032, false,'educação', 'saúde',
'83978569852', null),
('43366511087', 'aline@email.com', 'Aline
Gregório','1983-10-22','2016-12-07', 0, 0.03,true,'carpintaria',
'construção civil', '83941245478', null);
-- Povoamento Pix
insert into pix(chaveUtilizada, cpfCnpjCliente, idServico, valor,
dataPagamento)
values
('38428716005', '81997734052', '4827dc22-6e0e-4d1e-b4d6-9602f2c492f1',
120, '2023-11-11'),
('88999999999', '81997734052', 'af04c594-8d90-4304-a407-09230b5251d8',
80, '2023-10-02'),
('38428716005', '81997734052', '0f25c0b8-dcbf-4d6d-aa9f-f190121340e4',
140, '2023-11-06'),
('88999999999', '81997734052', '3c409f64-0d5c-4300-9a3f-4384cdf8087e',
100, '2020-12-21'),
('38428716005', '81997734052', '2502c49b-3c19-4ee5-910e-569383c93a4b',
60, '2020-12-25');
-- Povoamento Débito
insert into Debito(numeroCartao, bandeira, cpfCnpjCliente, idServico,
valor, dataPagamento, titular)
values
('5285804732114624', '5', '81997734052',
'f47ac10b-58cc-4372-a567-0e02b2c3d479', 100, '2021-05-11', 'Jorge
Jesus'),
('5205145933582970', '5', '54658743094',
'6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 80, '2021-10-02', 'Rogério
Almeida'),
('4532335468782700', '4', '85162521000106',
'c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1', 110, '2019-03-18', 'Transtour'),
('6062827689363800', '6', '85162521000106',
'8b41b5b6-1a43-4972-b92a-2e23081c97ea', 130, '2021-08-14', 'Transtour'),
('5013067460567103', '5', '33749790000161',
'24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 140, '2021-04-20', 'TechNd');
-- Povoamento Conteúdo
insert into conteudo(idServico, numeroPalavras, persona, cpfRedator)
values
('2502c49b-3c19-4ee5-910e-569383c93a4b', 500,'Profissional urbano, 30
anos, entusiasta de tecnologia, busca eficiência e inovação no trabalho,
apaixonado por viagens e estilo de vida saudável.', '99767411038'),
('6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 1000,'Estudante universitário,
22 anos, amante de arte e cultura, busca inspiração criativa, interessado
em networking e eventos sociais.', '65022657074'),
('af04c594-8d90-4304-a407-09230b5251d8', 600,'Mãe dedicada, 35 anos,
procura soluções práticas, interessada em produtos familiares
sustentáveis, comprometida com o bem-estar dos filhos.', '98061973057'),
('3c409f64-0d5c-4300-9a3f-4384cdf8087e', 800,'Empreendedor(a)
ambicioso(a), 40 anos, orientado(a) a resultados, focado(a) em
crescimento, apaixonado(a) por liderança e inovação empresarial.',
'05787003012'),
('f47ac10b-58cc-4372-a567-0e02b2c3d479', 500,'Aventureiro(a) digital, 28
anos, entusiasta de jogos e tecnologia, busca experiências online únicas,
comprometido(a) com comunidades virtuais.', '05787003012');
-- Povoamento Revisão
insert into revisao(idServico, categoria, descricao, cpfrevisor)
values
('c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1', 'tradução', 'revisão de tradução
de conteúdo de PT-BT para EN-US', '73876313015'),
('4827dc22-6e0e-4d1e-b4d6-9602f2c492f1', 'ortografia', 'revisão
ortográfica de documento', '67966634035'),
('8b41b5b6-1a43-4972-b92a-2e23081c97ea', 'alinhamento', 'revisão de
alinhamento de email', '10110017056'),
('0f25c0b8-dcbf-4d6d-aa9f-f190121340e4', 'alinhamento', 'revisão de
alinhamento de conteúdo', '10110017056'),
('24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 'ortografia', 'revisão
ortográfica de post', '85107563090');
-- Povoamento Formação
insert into formacao(idservico, titulo, descricao, duracao, cpfeducador)
values
('a7889a64-4e46-46e8-8ec0-52a2d5691dfe', 'Inbound Marketing', 'Curso
introdutório de Inbound Marketing', 720, '41180541081'),
('9f7e3a2d-5087-4d13-847d-f03465d6e147', 'Inbound Marketing', 'Curso
introdutório de Inbound Marketing', 600, '65081889091'),
('db2b5ff0-6a41-4eb3-883f-3fbb68b0fd7c', 'Tráfego Orgânico', 'Entendo
Tráfego Orgânico', 540, '46644579019'),
('e94d758f-5941-45f3-87c3-8480c77f1e05', 'Tráfego Pago', 'Estratégias de
Tráfego Pago', 780, '92337404048'),
('b5ac7dc9-19c7-4ba0-9f38-6dbcc13b45db', 'Persona e Publico-Alvo',
'Diferença entre persona e publico-alvo', 840, '18661834007');
4.2.1 Povoamento Cliente
-- Povoamento Serviço
INSERT INTO Servico(id, preco, dataRealizacao, status, classificacao,
cpfCnpjCliente)
VALUES
('4827dc22-6e0e-4d1e-b4d6-9602f2c492f1',120, '2023-11-10', 'concluído', 4,
'81997734052'),
('af04c594-8d90-4304-a407-09230b5251d8', 21, '2023-10-01', 'concluído', 3,
'93486588000116'),
('0f25c0b8-dcbf-4d6d-aa9f-f190121340e4',140, '2023-11-05', 'andamento', 0,
'93486588000116'),
('3c409f64-0d5c-4300-9a3f-4384cdf8087e', 25.6, '2020-12-20', 'concluído', 4,
'85162521000106'),
('2502c49b-3c19-4ee5-910e-569383c93a4b', 15, '2020-12-24', 'concluído', 5,
'85162521000106'),
('f47ac10b-58cc-4372-a567-0e02b2c3d479', 16, '2021-05-10', 'concluído', 4,
'81997734052'),
('6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 30, '2021-10-01', 'concluído', 3,
'54658743094'),
('c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1',110, '2019-03-17', 'andamento', 0,
'85162521000106'),
('8b41b5b6-1a43-4972-b92a-2e23081c97ea',130, '2021-08-13', 'concluído', 4,
'85162521000106'),
('24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 140, '2021-04-19', 'concluído', 5,
'33749790000161'),
('db2b5ff0-6a41-4eb3-883f-3fbb68b0fd7c',300, '2023-05-12', 'concluído', 4,
'33749790000161'),
('9f7e3a2d-5087-4d13-847d-f03465d6e147', 240, '2023-03-09', 'concluído', 3,
'93486588000116'),
('a7889a64-4e46-46e8-8ec0-52a2d5691dfe',225, '2022-07-07', 'concluido', 0,
'54658743094'),
('b5ac7dc9-19c7-4ba0-9f38-6dbcc13b45db',332, '2021-04-14', 'concluído', 4,
'85162521000106'),
('e94d758f-5941-45f3-87c3-8480c77f1e05',310, '2021-08-23', 'concluído', 5,
'81997734052');
-- Povoamento Revisor
INSERT INTO Revisor(cpf,email,nome, dataNascimento, dataContratacao,
precoUnitario, unidade, telefone1, telefone2)
VALUES
('73876313015', 'julio@email.com','Júlio da Silva', '2001-11-16', '2020-10-05',
18, 'hora', '88992345678', '85964324758'),
('67966634035', 'amanda@email.lcom','Amanda da Silva', '1990-06-11',
'2020-10-05', 15, 'hora', '83965987856', '86955689748'),
('10110017056', 'roberta@email.com','Roberta Alves', '1989-02-01', '2017-11-03',
15, 'palavra', '85991929365',null),
('56246288030', 'dani@email.com','Daniela Campos', '2000-07-22', '2018-07-08',
15, 'hora', '84999568874', null),
('85107563090', 'jose@email.com','José Carvalho', '1995-06-06', '2020-02-20',
15, 'palavra', '88993236354',null);
-- Povoamento Educador
INSERT INTO educador(cpf, email, nome,dataNascimento, dataContratacao,
graduacao, instituicao, anoConclusao, telefone1, telefone2)
VALUES
('41180541081', 'jorge@email.com', 'Jorge Henrique', '1992-12-24',
'2020-05-12', 'Publicidade', 'FECAP', '2019', '86957845125',null),
('65081889091', 'bruna@email.com', 'Bruna Mendes', '1991-11-08',
'2020-02-08', 'Publicidade', 'ESPM', '2019', '85969874589',null),
('46644579019', 'pnobre@email.com', 'Paulo Nobre', '1990-07-12',
'2019-07-20', 'Publicidade', 'USP', '2019', '83994656768',null),
('92337404048', 'kadan@email.com', 'Kauã Dantas', '2000-09-19',
'2018-11-10','Engenharia Civil', 'IFPB', '2019', '85999663589',null),
('18661834007', 'isans@email.com', 'Isa Nunes', '1889-07-23',
'2017-04-15','Análise e Desenvolvimento de Sistemas', 'IFPB', '2019',
'82996655478', '83997949585');
-- Povoamento Redator
insert into Redator(cpf, email, nome, dataNascimento, dataContratacao,
conteudosEscritos, precoPalavra, especial, area1, area2, telefone1,
telefone2)
values
('99767411038', 'joao@email.com', 'Joao Silva','1985-09-11',
'2018-10-05', 1, 0.03,true, 'saúde', 'marketing digital', '84999523212',
null),
('65022657074', 'wesley@email.com', 'Wesley Alves','1991-04-18',
'2020-07-12', 1, 0.03,false, 'educação', 'tecnologia da informação',
'87954216598', null),
('98061973057', 'roberta@email.com', 'Roberta Barbosa','2000-04-08',
'2017-06-12', 1, 0.035,true, 'tecnologia da informação', 'marketing
digital', '83996547888', null),
('05787003012', 'luana@email.com', 'Luana
Cardoso','1997-06-16','2021-11-14', 2, 0.032, false,'educação', 'saúde',
'83978569852', null),
('43366511087', 'aline@email.com', 'Aline
Gregório','1983-10-22','2016-12-07', 0, 0.03,true,'carpintaria',
'construção civil', '83941245478', null);
-- Povoamento Pix
insert into pix(chaveUtilizada, cpfCnpjCliente, idServico, valor,
dataPagamento)
values
('38428716005', '81997734052', '4827dc22-6e0e-4d1e-b4d6-9602f2c492f1',
120, '2023-11-11'),
('88999999999', '81997734052', 'af04c594-8d90-4304-a407-09230b5251d8',
80, '2023-10-02'),
('38428716005', '81997734052', '0f25c0b8-dcbf-4d6d-aa9f-f190121340e4',
140, '2023-11-06'),
('88999999999', '81997734052', '3c409f64-0d5c-4300-9a3f-4384cdf8087e',
100, '2020-12-21'),
('38428716005', '81997734052', '2502c49b-3c19-4ee5-910e-569383c93a4b',
60, '2020-12-25');
-- Povoamento Débito
insert into Debito(numeroCartao, bandeira, cpfCnpjCliente, idServico,
valor, dataPagamento, titular)
values
('5285804732114624', '5', '81997734052',
'f47ac10b-58cc-4372-a567-0e02b2c3d479', 100, '2021-05-11', 'Jorge
Jesus'),
('5205145933582970', '5', '54658743094',
'6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 80, '2021-10-02', 'Rogério
Almeida'),
('4532335468782700', '4', '85162521000106',
'c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1', 110, '2019-03-18', 'Transtour'),
('6062827689363800', '6', '85162521000106',
'8b41b5b6-1a43-4972-b92a-2e23081c97ea', 130, '2021-08-14', 'Transtour'),
('5013067460567103', '5', '33749790000161',
'24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 140, '2021-04-20', 'TechNd');
-- Povoamento Conteúdo
insert into conteudo(idServico, numeroPalavras, persona, cpfRedator)
values
('2502c49b-3c19-4ee5-910e-569383c93a4b', 500,'Profissional urbano, 30
anos, entusiasta de tecnologia, busca eficiência e inovação no trabalho,
apaixonado por viagens e estilo de vida saudável.', '99767411038'),
('6a1c54db-9c3d-4f4e-a03e-26b5b5b4c7ee', 1000,'Estudante universitário,
22 anos, amante de arte e cultura, busca inspiração criativa, interessado
em networking e eventos sociais.', '65022657074'),
('af04c594-8d90-4304-a407-09230b5251d8', 600,'Mãe dedicada, 35 anos,
procura soluções práticas, interessada em produtos familiares
sustentáveis, comprometida com o bem-estar dos filhos.', '98061973057'),
('3c409f64-0d5c-4300-9a3f-4384cdf8087e', 800,'Empreendedor(a)
ambicioso(a), 40 anos, orientado(a) a resultados, focado(a) em
crescimento, apaixonado(a) por liderança e inovação empresarial.',
'05787003012'),
('f47ac10b-58cc-4372-a567-0e02b2c3d479', 500,'Aventureiro(a) digital, 28
anos, entusiasta de jogos e tecnologia, busca experiências online únicas,
comprometido(a) com comunidades virtuais.', '05787003012');
-- Povoamento Revisão
insert into revisao(idServico, categoria, descricao, cpfrevisor)
values
('c64e5831-8dcd-4c04-af7e-6eae7fd5a3e1', 'tradução', 'revisão de tradução
de conteúdo de PT-BT para EN-US', '73876313015'),
('4827dc22-6e0e-4d1e-b4d6-9602f2c492f1', 'ortografia', 'revisão
ortográfica de documento', '67966634035'),
('8b41b5b6-1a43-4972-b92a-2e23081c97ea', 'alinhamento', 'revisão de
alinhamento de email', '10110017056'),
('0f25c0b8-dcbf-4d6d-aa9f-f190121340e4', 'alinhamento', 'revisão de
alinhamento de conteúdo', '10110017056'),
('24f229b0-9fc5-4d6d-94c3-98f432bc8e90', 'ortografia', 'revisão
ortográfica de post', '85107563090');
-- Povoamento Formação
insert into formacao(idservico, titulo, descricao, duracao, cpfeducador)
values
('a7889a64-4e46-46e8-8ec0-52a2d5691dfe', 'Inbound Marketing', 'Curso
introdutório de Inbound Marketing', 720, '41180541081'),
('9f7e3a2d-5087-4d13-847d-f03465d6e147', 'Inbound Marketing', 'Curso
introdutório de Inbound Marketing', 600, '65081889091'),
('db2b5ff0-6a41-4eb3-883f-3fbb68b0fd7c', 'Tráfego Orgânico', 'Entendo
Tráfego Orgânico', 540, '46644579019'),
('e94d758f-5941-45f3-87c3-8480c77f1e05', 'Tráfego Pago', 'Estratégias de
Tráfego Pago', 780, '92337404048'),
('b5ac7dc9-19c7-4ba0-9f38-6dbcc13b45db', 'Persona e Publico-Alvo',
'Diferença entre persona e publico-alvo', 840, '18661834007');
4.3.1.1 Redator
select *
from redator
where cpf = '99767411038';
4.3.1.2 Revisor
select *
from revisor
where cpf = '67966634035' ;
4.3.1.3 Educador
select *
from educador
where cpf = '41180541081' ;
4.3.2 Resgatar um cliente específico
select *
from cliente
where cpfCnpj = '93486588000116';
select *
from servico
where (dataRealizacao >= '2010-01-01') and (dataRealizacao <=
'2023-10-01')
order by dataRealizacao;
4.3.5.1 Redator
4.3.5.2 Revisor
select *
from servico
where (cpfCnpjCliente = '81997734052');
4.3.8 Resgatar a média de preço, menor preço e maior preço para serviços com
classificação máxima
select AVG (preco) as media, MIN (preco) as menor, MAX (preco) as maior
from servico
where (classificacao = 5);
4.3.9 Resgatar todos os funcionários que não estejam associados a nenhum serviço
de acordo com sua função
4.3.9.1 Redator
select *
from redator r
where r.cpf not in (
select c.cpfredator
from conteudo c
);
4.3.9.2 Revisor
select *
from revisor r
where r.cpf not in (
select rev.cpfrevisor
from revisao rev
);
4.3.9.3 Educador
select *
from educador
where cpf not in (
select cpfeducador
from formacao
);
select *
from cliente
where especial is true;
4.4.2 Recupera os conteúdos com o número de palavras produzidos por João Silva
select *
from servico
where classificacao is not null;
4.4.5 Recupera todos os conteúdos que tenham uma persona envolvida com
tecnologia
select *
from conteudo
where persona like '%tecnologia%';
4.4.6 Recupera todos os conteúdos que tenha como início de descrição de persona a
palavra Mãe
select *
from conteudo
where persona like 'Mãe%';
select *
from servico
where classificacao is not null
order by classificacao;
select *
from conteudo
order by numeropalavras desc;
select *
from redator r
where r.cpf not in (
select c.cpfredator
from servico s inner join conteudo c on s.id = c.idservico
);
select *
from debito d
where d.valor not in (
select p.valor
from pix p
);
select red.nome
from redator red
where exists (
select *
from conteudo c
where red.cpf = c.cpfredator
);
select cl.nome
from cliente cl
where exists (
select *
from pix p full join debito d on p.id = d.id
where cl.cpfCnpj = p.cpfCnpjCliente or cl.cpfCnpj = d.cpfCnpjCliente
);
4.4.13 Recupera todos os serviços que são conteúdos
select *
from servico se
where se.id in (
(
select s.id
from servico s
)
intersect
(
select c.idservico
from conteudo c
));
(
select r.cpf, r.nome
from revisor r
)
union
(
select e.cpf, e.nome
from educador e
)
union
(
select re.cpf, re.nome
from redator re
);
select tipoempreendimento
from cliente
group by tipoempreendimento;
4.5.1 Cria uma visão incluindo o cliente e o funcionário responsável pelo serviço
4.5.3 Cria uma visão com uma relação entre revisor, servico e cliente
4.5.4 Cria uma visão com uma relação entre educador, servico e cliente
return servicos_count;
end;
$$;
4.6.3 Cria uma função que calcula a quantidade total de dinheiro gasto por um
cliente
create or replace function valor_gasto_cliente(cliente varchar)
returns real as
$$
declare
total real := 0;
resultado Servico%ROWTYPE;
begin
for resultado in select * from Servico
where cpfCnpjCliente = cliente
loop
total = total + resultado.preco;
end loop;
return total;
end
$$
language plpgsql;
4.7.1 Cria um gatilho onde atualiza um redator quando um novo conteúdo é criado
4.7.2 Cria um gatilho que impede que um novo revisor seja criado caso cobre menos
de 10 por palavra
update servico
set preco = New.numeroPalavras * precoPalavra
where id = New.idServico;
return New;
end
$$
language plpgsql;