Me surgiu uma dúvida grande em relação a como descrever diferentes obrigatoriedades em relacionementos com SQL, para entender melhor fiz a imagem utilizando o MySQL Workbench (antes que perguntem, sim, tentei usar a ferramenta que transforma os diagramas em código SQL mas ela mesma pareceu não saber como indicar essas obrigatoriedades peculiares, com exceção das três que marquei em verde na imagem) para representar as obrigatoriedades que são mais simples de serem descritas via SQL e as que ainda não sei como.
Na relação entre table3 e table4 não há nada que indique que a tabela que recebeu a chave estrangeira é opcional para a tabela que a forneceu, ao menos eu não encontrei.
Na relação entre table 7 e 8 a mesma coisa, há dois ‘mínimo 0’, mas só o da tabela 8 para a 7 é fácil de descrever (basta deixar a chave estrangeira como nullable), o contrário não.
Nas relações representativas à direita as coisas ficam ainda mais estranhas:
A relação entre a tabela 11 e 12 sofre do mesmo problema que comentei nas anteriores; já a relação entre 13 e 14 não faz sentido, visto que a tabela 13 não pode receber dados nulos na chave estrangeira já que ela também é chave primária; já a última relação (tabelas 15 e 16) sofre de ambos os problemas ao mesmo tempo.
variações de obrigatoriedades entre tabelas em SQL
Gostaria que alguém mais avançado que eu em SQL (independente do SGBD usado) pudesse me tirar essas dúvidas, o que deve ser feito nesses casos? Mudar as regras de negócios? Fundir as tabelas? Não fazer nada?
Btw, permaneço com essa dúvida em relacionamentos nas outras duas cardinalidades (1:n e n:m), mas preferi não perguntar aqui também para não sobrecarregar a pergunta, até porque provavelmente as respostas à essa cardinalidade provavelmente responderão sobre as outra também.
Ventura is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.