Dies ist im Grunde eine Frage, was sind schwache Einheiten? Wann sollten wir sie verwenden? Wie sollen sie modelliert werden?
Was ist der Hauptunterschied zwischen normalen und schwachen Entitäten? Entsprechen schwache Entitäten beim domänengetriebenen Design Wertobjekten?
Um die Frage hier am Laufen zu halten, ist ein Beispiel aus Wikipedia , mit dem die Leute diese Frage beantworten können:
In diesem Beispiel OrderItem
wurde es als schwaches Objekt modelliert, aber ich kann nicht verstehen, warum es nicht als normales Objekt modelliert werden kann.
Eine andere Frage ist, was wäre eine normale oder schwache Entität, wenn ich die Bestellhistorie (dh die Änderungen des Status) verfolgen möchte?
OrderItem
kommt es darauf an,Order
wie kein GegenstandorderItems
existieren kann, ohne zu einem zu gehörenorder
, aber ich kann nicht erkennen, warum ichItemLineNumber
einen Gegenstand nicht ausschließlich identifizieren kann ?! Eigentlich könnte ich einfachItemLineNumber
eine automatische Generierung durchführenint
, um die Eindeutigkeit zu gewährleisten, und einen Fremdschlüssel verwendenorderID
, um die beiden Entitäten miteinander zu verbinden ?!Ein
OrderItem
kann nicht ohne eine Bestellung oder ein Produkt existieren. Daher ist es schwach, da es durch Abhängigkeiten gesteuert wird.Wenn Sie zum Beispiel die Bestellung entfernen, können Sie nicht wissen, wohin der Artikel versendet werden soll. Oder wenn Sie das Produkt entfernen, wissen Sie nicht, was Sie versenden sollen.
quelle
Nach meinem Verständnis in der obigen Abbildung haben sie die zwei Entitäten / Tabellen anstelle von einer, dh Bestellungen und Bestellpositionen, eingeschlossen, so dass der Zugriff auf die Informationen einfacher wird, wenn zwei Entitäten entworfen werden. Die Bestellposition hängt von der Bestellentität ab, sodass sie als schwache Entität betrachtet wird. weil das Merkmal einer schwachen Entität ist, hängt es von einer anderen Entität ab. Angenommen, Sie enthalten keine Bestellartikel-Entität. Wie können Sie den Preis und den Rabatt des Bestellartikels ermitteln? und wie jgauffin sagte Wenn Sie zum Beispiel die Bestellung entfernen, haben Sie keine Möglichkeit zu wissen, wohin der Artikel versendet werden soll. Oder wenn Sie das Produkt entfernen, wissen Sie nicht, was Sie versenden sollen.
Das ER-Diagramm ist entsprechend den Geschäftsanforderungen zu gestalten.
quelle
Siehe, eine Bestellung hat viele Bestellpositionen (mehrwertiges Attribut). Daher erstellen wir gemäß der Regel eine separate Tabelle.
Angenommen, 2 Kunden haben die gleiche Bestellung. ZB kaufen beide das iPhone zum gleichen Preis, Rabatt, zum gleichen Datum usw. Idealerweise sollte es also zwei exakte Tupel für die Bestellung des iPhone in Bestellbeziehung geben. Aber gemäß der Einschränkung einer Beziehung sollten alle Tupel eindeutig sein. Lassen Sie uns also bis jetzt zwei Bestellungen mit derselben item_line_number.no Problem in Beziehung setzen. Betrachten Sie nun einen der Kundenstornierungen. Ist das iPhone order.also wird das item_line_number Tupel gelöscht. Jetzt werden auch andere Kunden, die das iPhone gekauft haben, aufgrund von M: 1-Korrespondenz gelöscht. Schließlich ist die Datenbank inkonsistent. Aus diesem Grund verwenden wir einen Deskriptorschlüssel, der orderid lautet. Wenn Sie ein bestelltes iPhone löschen, wird die Datenbank nicht beschädigt.
quelle