Dúvida com a modelagem de dados do sistema
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
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
Curtidas 0
Melhor post
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! :-)
--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
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
31/10/2016
Por nada Matheus! Fico feliz em ajudar.
GOSTEI 0