Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sollte dieses ER-Diagramm stattdessen eine ternäre Beziehung verwenden

Du scheinst die Spezifikation falsch gelesen zu haben. Ein Artikel wird zu einem UPS-Einzelhandelszentrum gebracht und dann an einen Bestimmungsort versandt. Betrachten wir jedoch die ternäre Beziehung, dass ein versendeter Artikel ein Transportereignis benötigt, um ein bestimmtes Ziel zu erreichen .

Das ist eine von vielen denkbaren Beziehungen zu diesen drei Entitäten.

Ja tut es. Aber die ternäre Beziehung ist in Form dieser Diagramm-Binärbeziehungen ausdrückbar. (Und nicht umgekehrt.)

Jede Tabelle – Basisvariable oder Abfrageergebnis – enthält Zeilen, die an einer bestimmten Beziehung beteiligt sind. Wir können die Beziehung durch ein Prädikat charakterisieren --eine durch Attribute parametrisierte Anweisungsvorlage.

Eine Tabelle enthält die Zeilen, deren Werte für Attribute aus ihrem Prädikat eine wahre Aussage machen. Das Prädikat einer Basisvariablen wird vom DBA angegeben.

-- shipped item ItemNumber is received by retail center UniqueId
SELECT * FROM ReceivedFrom
-- shipped item ItemNumber takes transportation event ScheduleNumber
SELECT * FROM ShippedVia

Das Prädikat eines Abfrageausdrucks wird aus seinen Operatoren und Argumenten erstellt. ZB ist das Prädikat des NATURAL JOIN zweier Tabellen das UND der Prädikate der Tabellen.

-- shipped item ItemNumber is received by retail center UniqueId
       and takes transportation event ScheduleNumber
SELECT * FROM ReceivedFrom NATURAL JOIN ShippedVia

Natürlich ist Ihre spezielle Vorstellung von der ternären Beziehung möglicherweise nicht genau diese Abfrage / Tabelle. Aber eine praktische UPS-Datenbank hätte Tabellen für die grundlegenden Beziehungen, anhand derer jede relevante Beziehung ausgedrückt werden kann.

(Normalisierung spaltet Prädikate der Form "... AND ..." in separate Prädikate für die "..."s auf, wenn dies möglich und hilfreich ist; die ursprüngliche Tabelle wird durch das JOIN der Komponenten zurückgegeben.)