885 Stimmen

Was ist der Unterschied zwischen identifizierenden und nicht-identifizierenden Beziehungen?

Ich habe die Unterschiede noch nicht ganz begriffen. Können Sie beide Konzepte beschreiben und Beispiele aus der Praxis anführen?

2 Stimmen

Gute Frage, das Rad muss nicht neu erfunden werden: Peter Chen. Das Entity-Relationship-Modell, Auf dem Weg zu einer einheitlichen Sicht auf Daten, 1976 § 2.3.2: " Wenn Beziehungen zur Identifizierung der Entitäten verwendet werden, sprechen wir von einer schwachen Entitätsbeziehung. Wenn keine Beziehungen zur Identifizierung der Entitäten verwendet werden, sprechen wir von einer regulären Entitätsbeziehung. ". Die Frage der OP läuft auf Folgendes hinaus: Was sind schwache/regelmäßige Entitätsbeziehungen? .

3voto

Branko Dimitrijevic Punkte 48944

Helfen Attribute, die vom Elternteil auf das Kind übertragen werden identifizieren. 1 das Kind?

  • Si ja Die Identifikationsabhängigkeit besteht, die Beziehung ist identifizierend und die untergeordnete Einheit ist "schwach".
  • Si no Die Identifikationsabhängigkeit besteht nicht, die Beziehung ist nicht-identifizierend und das Kind ist "stark".

Es ist zu beachten, dass die Abhängigkeit von der Identifikation die Abhängigkeit von der Existenz impliziert, nicht aber andersherum. Jeder Nicht-NULL-FK bedeutet, dass ein Kind nicht ohne Elternteil existieren kann, aber das allein macht die Beziehung nicht identifizierend.

Weitere Informationen hierzu (und einige Beispiele) finden Sie im Abschnitt "Identifizieren von Beziehungen" in der ERwin Methoden-Leitfaden .

P.S. Mir ist klar, dass ich (extrem) spät dran bin, aber ich habe das Gefühl, dass andere Antworten entweder nicht ganz korrekt sind (sie definieren es im Sinne von Existenz-Abhängigkeit statt Identifikations-Abhängigkeit) oder etwas mäandernd. Hoffentlich bringt diese Antwort mehr Klarheit...


1 Der FK des Kindes ist Teil der PRIMARY KEY- oder (non-NULL) UNIQUE-Beschränkung des Kindes.

2voto

Walter Mitty Punkte 17177

Ein gutes Beispiel ist die Auftragsabwicklung. Eine Bestellung eines Kunden hat in der Regel eine Bestellnummer, die die Bestellung identifiziert, einige Daten, die einmal pro Bestellung vorkommen, wie das Bestelldatum und die Kunden-ID, und eine Reihe von Positionen. Jede Position enthält eine Positionsnummer, die eine Position innerhalb einer Bestellung identifiziert, ein bestelltes Produkt, die Menge dieses Produkts, den Preis des Produkts und den Betrag für die Position, der durch Multiplikation der Menge mit dem Preis berechnet werden kann.

Die Nummer, die eine Position identifiziert, identifiziert sie nur im Zusammenhang mit einem einzelnen Auftrag. Die erste Position in jedem Auftrag ist die Positionsnummer "1". Die vollständige Identität einer Position ist die Positionsnummer zusammen mit der Auftragsnummer, zu der sie gehört.

Die Eltern-Kind-Beziehung zwischen Aufträgen und Einzelposten ist daher eine identifizierende Beziehung. Ein eng verwandtes Konzept in der ER-Modellierung heißt "Subentität", wobei die Position eine Subentität des Auftrags ist. Normalerweise hat eine Untereinheit eine obligatorische Kind-Eltern-Identitätsbeziehung zu der Entität, der sie untergeordnet ist.

Im klassischen Datenbankdesign wäre der Primärschlüssel der Tabelle LineItems (OrderNumber, ItemNumber). Einige der heutigen Designer würden einer Position eine separate ItemID geben, die als Primärschlüssel dient und vom DBMS automatisch erhöht wird. Ich empfehle in diesem Fall das klassische Design.

1voto

That Brazilian Guy Punkte 3078

Eine Ergänzung zu Antwort von Daniel Dinnyes :

Bei einer nicht identifizierenden Beziehung kann dieselbe Primärschlüsselspalte (z. B. "ID") nicht zweimal denselben Wert haben.

Allerdings mit einer identifizierenden Beziehung, Sie können denselben Wert zweimal in der Spalte "ID" anzeigen lassen solange sie einen anderen Fremdschlüsselwert "otherColumn_ID" hat, da der Primärschlüssel die Kombination beider Spalten ist.

Beachten Sie, dass es keine Rolle spielt, ob der FK "nicht-null" ist oder nicht! ;-)

0voto

sp1rs Punkte 776

Eine identifizierende Beziehung besteht zwischen zwei starken Einheiten. Eine nicht-identifizierende Beziehung muss nicht immer eine Beziehung zwischen einer starken und einer schwachen Entität sein. Es kann eine Situation geben, in der ein Kind selbst einen Primärschlüssel hat, aber die Existenz seiner Entität kann von seiner Elternentität abhängen.

Beispiel: Eine Beziehung zwischen einem Verkäufer und einem Buch, bei der ein Buch von einem Verkäufer verkauft wird, kann bestehen, wobei der Verkäufer seinen eigenen Primärschlüssel haben kann, seine Entität aber nur erstellt wird, wenn ein Buch verkauft wird.

Referenz basiert auf Bill Karwin

7 Stimmen

Es könnte hilfreich sein, zu definieren, was Sie hier unter einer "starken" und "schwachen" Einheit verstehen.

0voto

nsv Punkte 10549

Nehmen wir an, wir haben diese Tabellen:

user
--------
id
name

comments
------------
comment_id
user_id
text

Beziehung zwischen diesen beiden Tabellen identifiziert die Beziehung. Denn Kommentare können nur dem Besitzer gehören, nicht aber anderen Benutzern, zum Beispiel. Jeder Benutzer hat einen eigenen Kommentar, und wenn ein Benutzer gelöscht wird, sollten auch die Kommentare dieses Benutzers gelöscht werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X