- Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 10 meses atrás por itiburski.
-
AutorPosts
-
23 de janeiro de 2007 às 11:49 pm #78340drhoffmanParticipante
boas pessoal, tou aqui com uma duvida . é o seguinte, tou a fazer um proj pa faculdade para uma seguradora automovel e a minha duvida consiste no seguinte! tenho um cliente( que é o que paga) e tenho um segurado(aquele a quem o seguro e dirigido) , num contrato de seguro o segurad e o cliente podem ser a mesma pessoa como podem ser pessoas diferentes! eu tinha criado uma tabela segurado e outra cliente mas o meu professor disse me para criar apenas uma tabela cliente pois se o cliente e segurado fossem a mesma pessoa ia haver repeticao de dados! a tabela cliente liga a seguros atraves de um relacionamento 1:n em que o n fica do lado do seguro! o que eu nao percebo é como se o cliente e o segurado forem pessoas diferentes como ´+e que eu apenas com uma tabela cliente consigo distinguir ambos! podiam me ajudar?
24 de janeiro de 2007 às 3:44 am #78342chduarteParticipanteVoce pode criar uma coluna person_type. Se ele for cliente, este campo sera -1, se nao sera o id principal.
Tome como o seguinte exemplo a tabela:
funcionarios (id, name, manager)
id = 1 | name = Gerente geral | manager = -1
id = 2 | name = Gerente de setor | manager = 1
id = 3 | name = jose | manager = 2
id = 4 | name = joao | manager = 2
id = 5 | name = Gerente de loja | manager = 1
id = 6 | name = Maria | manager = 5E assim por diante. Note que o Gerente geral nao tem manager, logo ele é o topo da raiz.
Teremos entao:
– Gerente geral
— Gerente de setor
—- jose
—- joao
— Gerente de loja
—– Maria[]
24 de janeiro de 2007 às 3:58 am #78346drhoffmanParticipanteboas, mas eu tou na parte ainda do modelo relacional! tipo! o meu professor disse me pa criar uma tabela clientes ligada ao contrato! e que a tabela contrato ia receber o id_cliente e o id_segurado como chave estrangeira! nesta situacao a tabela cliente tem que ter uam chave primaria com id_cliente e id_segurado certo? mas o que nao consigo entender é quando o segurado e o cliente sao pessoas diferentes como eide registar!
por exemplo
tabela cliente
id_cliente id_segurado morada
1 1 rua….neste caso e facil! i cliente e o seguro sao a mm pessoa!
mas por exemplo
id_cliente id_segurado morada
1 2 rua….nesta situacao a morada e do cliente ou e do segurado? e esta parte que nao consigo perceber! quando eles sao pessoas diferentes como vao ficar representados na tabela cliente?
24 de janeiro de 2007 às 2:03 pm #78347chduarteParticipanteExatamente como no modelo do primeiro post.
id_cliente id_segurado rua
1 0 rua 1
2 0 rua 2
3 1 rua 3
4 1 rua 4
5 2 rua 5No caso acima se o id_segurado = 0 significa que ele é segurado, senao ele é cliente do segurado xxx, veja o campo id_segurado. O cliente 3 é segurado do cliente 1. A rua do cliente 3 é rua 3 e do seu segurado é rua 1.
A primary key sao os campos (id_cliente,id_segurado) e vc gera uma sequence para o campo id_cliente e uma trigger para inserir automaticamente neste campo.
O campo id_segurado é default 0.
[]
24 de janeiro de 2007 às 7:26 pm #78354itiburskiParticipanteVocê não vai distinguir o cliente e o segurado através da tabela de clientes, mas sim através dos campos id_cliente e id_segurado da tabela de contrato de seguros. A partir do momento que esses campos contenham códigos diferentes, você sabe que tratam-se de pessoas diferentes. No caso de você precisar fazer uma consulta SQL para retornar o nome do cliente e o nome do segurado, você vai precisar incluir duas “instancias” da tabela de cliente.
SELECT CONT.NUMERO, CLI.NOME, SEG.NOME
FROM CLIENTE CLI, CLIENTE SEG, CONTRATO_SEGURO CONT
WHERE CLI.ID = CONT.ID_CLIENTE
AND SEG.ID = CONT.ID_SEGURADODessa forma, pode-se distinguir quem é o cliente (CLI) e quem é o segurado (SEG).
Espero ter clareado um pouco as coisas. Se não ficar claro, poste suas novas dúvidas.
-
AutorPosts
- Você deve fazer login para responder a este tópico.