Comment avoir une relation un-à-plusieurs avec un enfant privilégié?
-
31-10-2019 - |
Question
Je veux avoir une relation un-à-plusieurs dans laquelle pour chaque parent, un ou zéro des enfants est marqué comme un «favori». Cependant, tous les parents n'auront pas d'enfant. (Considérez les parents comme des questions sur ce site, les enfants comme réponses et préférés comme la réponse acceptée.) Par exemple,
TableA
Id INT PRIMARY KEY
TableB
Id INT PRIMARY KEY
Parent INT NOT NULL FOREIGN KEY REFERENCES TableA.Id
La façon dont je le vois, je peux soit ajouter la colonne suivante à Tablea:
FavoriteChild INT NULL FOREIGN KEY REFERENCES TableB.Id
ou la colonne suivante à TableB:
IsFavorite BIT NOT NULL
Le problème avec la première approche est qu'il introduit une clé étrangère nullable, qui, je comprends, n'est pas sous forme normalisée. Le problème avec la deuxième approche est que davantage de travail doit être fait pour s'assurer qu'au plus un enfant est le favori.
Quel type de critères dois-je utiliser pour déterminer quelle approche utiliser? Ou y a-t-il d'autres approches que je ne considère pas?
J'utilise SQL Server 2012.
Pas de solution correcte