Entidade Relacionamento - Pode um fraco entidade participar de uma 'um para muitos' relacionamento como o 'um'

StackOverflow https://stackoverflow.com/questions/2464094

Pergunta

Com a entidade seguinte estrutura de relação eu estou lutando para descobrir se a relação entre o EMPRÉSTIMO e o ITEM entidades é válido?

O fraco entidade de EMPRÉSTIMO usa uma chave parcial de 'loan_dateLeant' e as chaves primárias do CLIENTE e do ITEM a forma de Empréstimos de chave primária.No entanto EMPRÉSTIMO tem um 'um para muitos' relação com o ITEM como um empréstimo pode consistir em mais do que um item.Mas, certamente, isso significa que, se mais do que um item é emprestado, em seguida, o empréstimo, disporão de dois item_id valores por parte de uma chave primária?

alt text

Foi útil?

Solução

Você está certo, isso não é válido - você não pode usar um relacionamento para muitos como uma parte definidora de uma chave primária. O que você pode considerar fazer é adicionar um único loan_id que você faz parte da sua chave primária, em vez dos itens que o empréstimo contém; Em seguida, um único empréstimo é definido por seu cliente e empréstimo (ou cliente, data e identificação de empréstimos).

Se isso não funcionar, faça date_leant Um campo DateTime e aumente a precisão até que você não possa (dentro das restrições do seu sistema), faça dois empréstimos ao mesmo tempo - qual a probabilidade de um único cliente transações dois empréstimos separados em milissegundos um do outro ?

Observe que isso não impede que a entidade do empréstimo participe do relacionamento como o "One"; Significa apenas que você não pode definir a entidade fraca usando os "muitos".

Outras dicas

Na verdade, você pode fazer isso.

Lembre-se, a chave primária de EMPRÉSTIMO irá depender de data+identificador de cliente.Enquanto houver um máximo de cardinalidade de "1" a "pode fazer" relacionamento (por exemplo, um empréstimo está relacionada a apenas 1 cliente), você está bem na chave primária com o EMPRÉSTIMO.

A tabela do ITEM, em vez de tomar o (único) identificador do empréstimo (customerID + data) como uma chave estrangeira dentro de ITEM.A Chave Primária de EMPRÉSTIMO não serão afetados por esta modelagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top