Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MPS2

[Resolvido] Relacionamento mutuamente exclusivo

Recommended Posts

Olá.

 

Estou com uma dúvida de como modelar um relacionamento mutuamente exclusivo.

 

Às vezes, eu quero representar um caráter opcional no que diz respeito à totalidade dos relacionamentos. Por exemplo:

 

Tenho 3 entidades: Contrato, Banco e Fornecedor. Um contrato de financiamento que pode ser realizado por um banco ou por um fornecedor.

 

Contrato

 

Banco Fornecedor

 

 

Apenas um dos relacionamentos de financiamento ocorre efetivamente, mas sempre um deles ocorre. No exemplo acima, todo contrato é financiado (não existe contrato que não seja financiado), mas pode ser financiado ou por um banco ou por um fornecedor. Um banco pode financiar 0 (zero) ou muitos contratos. Um forncedor pode financiar 0 (zero) ou muitos contratos e, por fim, um contrato será financiado ou por um banco ou por um fornecedor. Nunca pelos dois ao mesmo tempo.

 

Quanto ao modelo lógico ok, sem problemas.

 

Qual seria a solução em termos de modelo físico vcs dariam para uma situação destas?

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se BD suporta Classes UML haveria uma Classe Abstrata Financiador (Banco e Fornecedor) seriam generalizações desta.

 

Num modelo físico ER uma solução seria duas fk não obrigatórias, uma para Banco e outra para Fornecedor. A presença de uma ou outra já seria o indicador.

 

A solução física depende também do BD pois alguns suportam soluções que outros não tem, num Sistema multiBD a mais simples (que todos BD´s suportem) deverá ser feita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Motta.

 

O banco de dados é Oracle. A solução que pensei foi criar uma tabela para banco, outra tabela para fornecedor e uma outra tabela para contrato. A tabela contrato com 2 fk's (uma fk vindo da tabela banco e outra fk vindo de fornecedor). Então, a tabela contrato com 2 fk's não obrigatórias.

 

Na verdade, eu fiquei na dúvida se esta solução seria a melhor ou os colegas estavam usando alguma outra.

 

Só não entendi porque usar generalizações.

 

Obs.: a solução tecnológica será Java.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num modelo UML a ligação seria entre a Classe abstrata Financiador com a Contrato, Fornecedor e Banco seriam classes que seriam generalizações destas.

 

Banco
|
|
V
Financiador>-----------<Contrato
A
|
|
|
Fornecedor

 

==============================================================================================================

 

Entendi teu modelo , use uma Check Constraint para garantir que só uma das fk´s esteja preenchida

 

 

((fk1 is null and fk2 is not null) or (fk1 is not null and fk2 is null)))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

Estou em dúvida de qual é a melhor solução para um problema muito parecido com o do MPS2, a diferença é que em vez da tabela receber dois fk que neste caso são o Banco e Fornecedor, a tabela irá receber diversos fk de mais ou menos 8 a 10 outra tabelas.

 

Estava pensando para este caso criar somente um campo fk, e um outro campo para identificação de qual tabela vem este fk.

 

Essa seria a melhor solução? Ou é melhor colocar diversos fk?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.