Dúvida com a modelagem de dados do sistema

PostgreSQL

Java

Modelagem

31/10/2016

Boa tarde Pessoal, preciso muito da ajuda de vocês com a modelagem do meu projeto para Faculdade.

Meu sistema é sobre prestação de serviço, onde o cliente posta um Projeto( Problema que contém na casa dele e precisa consertar) e o Freelancer cadastra Proposta nesse projeto afim de resolver o problema do cliente. O problema galera que estou com dúvidas em como modelar isso para depois programar, pois do jeito que modelei está falho e não funcionará futuramente. Pois, eu preciso que no projeto tenha os dados do cliente, para que depois eu possa adicionar no perfil do freelancer os projetos que ele realizou. Poderiam me ajudar, abaixo tem as fotos onde tentei melhor me expressar.

https://uploaddeimagens.com.br/imagens/asasasa-png--17

Essa é a minha modelagem ( ocultei alguns campos, pois são desnecessários para entendimento).

https://uploaddeimagens.com.br/imagens/abc-png--27
Matheus Cano

Matheus Cano

Curtidas 0

Melhor post

Npi Tecnologia

Npi Tecnologia

31/10/2016

Boa tarde Matheus!

--Para ilustrar melhor, criei as tabelas CLIENTE e PROFISSIONAL com campos básicos:

CREATE TABLE CLIENTE(
ID INT NOT NULL,
NOME VARCHAR(50) NOT NULL,
);

CREATE TABLE PROFISSIONAL(
ID INT NOT NULL,
NOME VARCHAR(50) NOT NULL,
);

--Na tabela de projetos, temos o campo CLIENTE_ID para que seja possível mostrar as informações do cliente:

CREATE TABLE PROJETO(
ID INT NOT NULL,
CLIENTE_ID INT NOT NULL,
DESCRICAO VARCHAR(50) NOT NULL
);

--Na tabela PROPOSTA, temos o campo PROFISSIONAL_ID para que possamos mostrar as informações dos projetos no perfil do profissional:
CREATE TABLE PROPOSTA(
ID INT NOT NULL,
PROJETO_ID INT NOT NULL,
PROFISSIONAL_ID INT NOT NULL,
STATUS CHAR(1) --N: NÃO VISTA, A: ACEITA, R: RECUSADA
);

--Quando formos exibir as informações do cliente no projeto usaremos uma consulta como essa:
SELECT p.ID,
p.DESCRICAO,
c.ID AS CLIENTE_ID,
c.NOME
FROM PROJETO p,
CLIENTE c
WHERE p.CLIENTE_ID = c.CLIENTE_ID

--Para exibirmos os projetos que o profissional realizou, faremos assim:
SELECT p.ID,
p.DESCRICAO,
FROM PROJETO p
PROPOSTA r
WHERE p.ID = r.PROJETO_ID
AND r.PROFISSIONAL_ID = ?
AND r.STATUS = 'A';

--Basta substituir o ponto de interrogação pelo id do profissional. Repare que fiz uma junção com a tabela PROPOSTA para poder trazer somente os projetos que tiveram propostas aceitas do profissional

Se a resposta foi útil dê um like! :-)
GOSTEI 1

Mais Respostas

Matheus Cano

Matheus Cano

31/10/2016

Muito obrigado Daniel, foi mais do que útil, foi incrivel cara! Me deu uma luz imensa pra prosseguir no projeto!
GOSTEI 0
Npi Tecnologia

Npi Tecnologia

31/10/2016

Por nada Matheus! Fico feliz em ajudar.
GOSTEI 0
POSTAR