Ich arbeite an einer Datenbank, die Computer und ihre Benutzer darstellen muss. Jeder Computer kann mehrere Benutzer haben, und jeder Benutzer kann mehreren Computern zugeordnet werden. Es handelt sich also um eine klassische Viele-zu-Viele-Beziehung. Es muss jedoch auch ein Konzept eines "primären" Benutzers geben. Ich muss in der Lage sein, mich dem primären Benutzer anzuschließen, um alle Computer mit ihren primären Benutzern aufzulisten. Ich bin mir nicht sicher, was der beste Weg dies in der Datenbank zu strukturieren:Viele-zu-viele mit "Primär"
1) Wie ich gerade mache: Verknüpfungstabelle mit einer booleschen IsPrimary-Spalte. Das Verbinden erfordert etwas wie ON (c.computer_id = l.computer_id UND l.is_primary = 1). Es funktioniert, aber es fühlt sich falsch an, weil es nicht einfach ist, die Daten auf nur einen primären Benutzer pro Computer zu beschränken.
2) Ein Feld in der Computertabelle, das direkt auf eine Benutzerzeile zeigt, alle Zeilen in der Benutzertabelle repräsentieren nicht primäre Benutzer. Dies stellt die Einschränkung für einen primären Computer pro Computer besser dar, macht es jedoch schwieriger, eine Liste von Computerbenutzern zu erstellen.
3) Ein Feld in der Computertabelle, das mit einer Zeile in der Verknüpfungstabelle verknüpft ist. Fühlt sich komisch an ...
4) Noch etwas?
Was ist der "relationale" Weg, diese Beziehung zu beschreiben?
EDIT: @Mark Brackett: Die dritte Option scheint mir jetzt viel weniger seltsam, dass Sie gezeigt haben, wie schön es aussehen kann. Aus irgendeinem Grund dachte ich nicht einmal daran, einen zusammengesetzten Fremdschlüssel zu verwenden, also dachte ich, ich müsste eine Identitätsspalte auf der Verknüpfungstabelle hinzufügen, damit es funktioniert. Sieht gut aus, danke!
@ j04t: Cool, ich bin froh, dass wir jetzt auf # 3 zustimmen.
warum es schwer, zeigen? – albertein
Da die Verknüpfungstabelle nicht alle Benutzer für einen bestimmten Computer enthält. –