Estou lendo este tutorial e tenho uma dúvida sobre isso.
Olhe para essa foto:
'Lendo' a relação lógica, li que a Project
deve ter um ou mais Employee
. Mas a implementação física tem que um Projeto pode ter zero ou mais ProjectEmployee
.
Ou talvez eu esteja errado e a implementação física esteja correta.
O que você acha?
O modelo físico é o que é criado na maioria das implementações físicas de um relacionamento muitos-para-muitos. No entanto, ele não replica corretamente as regras no modelo lógico .
O modelo físico permite zero ou mais em ambas as direções. O modelo lógico indica um ou mais de projeto para funcionário.
A razão pela qual muitas implementações físicas de qualquer relacionamento fazem isso é que em muitos DBMSs as restrições referenciais declarativas SQL (ou seja, restrições de chave estrangeira) não permitem que a regra seja suspensa enquanto os dados são inseridos em duas tabelas ao mesmo tempo. O padrão SQL fornece "restrições adiáveis" e alguns DBMSs as implementam, mas muitos não o fazem e os que o fazem nem sempre, portanto, nem todos os usam, mesmo que estejam disponíveis. Velhos hábitos podem ser difíceis de morrer.
Para aqueles que não implementam restrições adiáveis, pense desta forma: para que haja qualquer tipo de relação obrigatória em ambas as direções (ou seja, 1:1, M ou mesmo 1:1), você teria que inserir o pai e a criança ao mesmo tempo. Embora você possa criar uma transação que garanta que o pai e o filho sejam criados em uma unidade lógica de trabalho, as regras de integridade referencial não são criadas para "suspender o julgamento" até que toda a transação seja concluída.
É por isso que, na prática, as implementações físicas sem restrições adiáveis são essencialmente sempre opcionais no final filho. Isso permite inserir o pai e, em seguida, inserir o filho.
A maneira prática de contornar isso geralmente é escrever lógica de aplicativo adicional para garantir que haja pelo menos um filho por pai quando 1:1,M é a regra ou simplesmente deixá-la e esperar que os usuários façam a coisa certa. Essas soluções alternativas não são necessárias se você tiver acesso a restrições adiáveis.