Ich habe mich also mit dem Identifizieren und Nicht-Identifizieren von Beziehungen in meinem Datenbankdesign befasst, und einige der Antworten auf SO scheinen mir zu widersprechen. Hier sind die zwei Fragen, die ich betrachte:
- Was ist der Unterschied zwischen identifizierenden und nicht identifizierenden Beziehungen?
- Probleme bei der Entscheidung, eine Beziehung zu identifizieren oder nicht zu identifizieren
Wenn ich mir die besten Antworten auf jede Frage ansehe, bekomme ich anscheinend zwei verschiedene Vorstellungen davon, was eine identifizierende Beziehung ist.
Die Antwort der ersten Frage besagt, dass eine identifizierende Beziehung "eine Situation beschreibt, in der das Vorhandensein einer Zeile in der untergeordneten Tabelle von einer Zeile in der übergeordneten Tabelle abhängt". Ein Beispiel hierfür ist: "Ein Autor kann viele Bücher schreiben (1-zu-n-Beziehung), aber ein Buch kann ohne einen Autor nicht existieren." Das macht für mich Sinn.
Wenn ich jedoch die Antwort auf Frage zwei lese, bin ich verwirrt, als es heißt: "Wenn ein Kind seinen Elternteil identifiziert, ist es eine identifizierende Beziehung." In der Antwort werden dann Beispiele wie die Sozialversicherungsnummer (identifiziert eine Person) angegeben, eine Adresse jedoch nicht (da viele Personen an einer Adresse wohnen können). Für mich klingt dies eher nach einer Entscheidung zwischen Primärschlüssel und Nicht-Primärschlüssel.
Mein eigenes Bauchgefühl (und zusätzliche Recherchen auf anderen Websites) deuten darauf hin, dass die erste Frage und ihre Antwort korrekt sind. Ich wollte jedoch überprüfen, bevor ich fortfuhr, da ich nichts Falsches lernen möchte, während ich daran arbeite, das Datenbankdesign zu verstehen. Danke im Voraus.
"da ich nichts falsches lernen will".
Nun, wenn Sie das wirklich so meinen, können Sie aufhören, sich Gedanken über die Umgangssprache und die Terminologie der Notaufnahme zu machen. Es ist ungenau, verwirrt, verwirrend, überhaupt nicht allgemein vereinbart und größtenteils irrelevant.
ER ist ein Bündel von Rechtecken und geraden Linien, die auf ein Stück Papier gezeichnet sind. ER soll bewusst ein Mittel zur informellen Modellierung sein. Als solches ist es ein wertvoller erster Schritt im Datenbankdesign, aber es ist auch genau das: ein erster Schritt.
Niemals darf ein ER-Diagramm die Genauigkeit, Genauigkeit und Vollständigkeit eines in D formell formulierten Datenbankdesigns erreichen.
quelle
Identifizierende / nicht identifizierende Beziehungen sind Konzepte in der ER-Modellierung - eine Beziehung ist eine identifizierende, wenn sie durch einen Fremdschlüssel dargestellt wird, der Teil des Primärschlüssels der Referenzierungstabelle ist. Dies ist in Bezug auf die relationale Modellierung normalerweise von sehr geringer Bedeutung, da Primärschlüssel im relationalen Modell und in SQL-Datenbanken keine besondere Bedeutung oder Funktion haben, wie dies in einem ER-Modell der Fall ist.
Angenommen, Ihre Tabelle erzwingt zwei Kandidatenschlüssel, A und B. Angenommen, A ist auch ein Fremdschlüssel in dieser Tabelle. Die so dargestellte Beziehung wird als "identifizierend" angesehen, wenn A als "Primärschlüssel" bezeichnet wird, aber nicht als identifizierend, wenn B der Primärschlüssel ist. Form, Funktion und Bedeutung der Tabelle sind jedoch jeweils identisch! Aus diesem Grund halte ich das identifizierende / nicht identifizierende Konzept meiner Meinung nach nicht für sehr wichtig.
quelle
Ich glaube, der einzige Unterschied zwischen einer identifizierenden und einer nicht identifizierenden Beziehung besteht in der Nullbarkeit des Fremdschlüssels. Wenn ein FK nicht NULL sein kann, ist die Beziehung, die er darstellt, identifizierend (Kind kann nicht ohne Elternteil existieren), andernfalls ist es nicht identifizierend.
quelle
Ein Teil des Problems ist hier die Verwirrung der Terminologie. Das Identifizieren von Beziehungen ist nützlich, um lange Verknüpfungspfade zu vermeiden.
Die beste Definition, die ich gesehen habe, ist "eine identifizierende Beziehung enthält die PK ab dem Elternteil in der untergeordneten PK. Mit anderen Worten, die PK des Kindes enthält die FK gegenüber dem Elternteil sowie die" tatsächliche "PK des Kindes.
quelle
Ja, gehen Sie mit dem ersten, aber ich glaube nicht, dass der zweite dem ersten widerspricht. Es ist nur ein bisschen verwirrend formuliert ..
AKTUALISIEREN:
Nur überprüft - die Antwort der zweiten Frage ist in einigen Annahmen falsch. Der Buchautor ist nicht unbedingt eine 1: n-Beziehung, da es sich um m: n handeln könnte. In relationalen Datenbanken, die eine Schnittstellentabelle für diese m: n-Beziehung erstellen, erhalten Sie identifizierende Beziehungen zwischen der Schnittpunkttabelle und diesen beiden anderen Tabellen.
quelle
Das Identifizieren einer Beziehung gibt eine bis viele optionale Beziehungen aus, wenn wir die Beziehung zwischen Eltern und Kindern definieren müssen. Außerdem gibt es nur eine Beziehung von Kind zu Eltern. Da der Primärschlüssel der Elternentität der Teil des Primärschlüssels der Kindentität ist, Die untergeordnete Entitätsinstanz identifiziert die übergeordnete Entitätsinstanz. Sie wird in einem Diagramm durch eine durchgezogene Linie dargestellt.
Für die Existenz einer untergeordneten Entitätsinstanz sollte eine übergeordnete Entitätsinstanz vorhanden sein, aber jede Entitätsinstanz in der untergeordneten Entität kann mit vielen Entitätsinstanzen der übergeordneten Entität verknüpft sein. Dies ist der Grund, warum der Primärschlüssel von Die übergeordnete Entität ist zwar der Fremdschlüssel der untergeordneten Entität, die untergeordnete Entität verwendet jedoch nicht den Primärschlüssel der übergeordneten Entität als Primärschlüssel. Sie verfügt über einen eigenen Primärschlüssel. Viele zu viele Beziehungen existieren im Diagramm der realen Welt nicht. also muss es gelöst werden
quelle
Eine identifizierende Beziehung ist in der Tat ein ERD-Konzept, da dies der Bereich der konzeptuellen Modellierung ist und unser Verständnis des „Universums des Diskurses“ modelliert. Es handelt sich um eine Eltern-Kind-Beziehung, bei der wir die Tatsache modellieren, dass die Identität jedes untergeordneten Objekts (zumindest teilweise) durch die Identität des übergeordneten Objekts festgestellt / bestimmt wird. Es ist daher obligatorisch und unveränderlich.
Ein Beispiel aus der Praxis ist die ständige Herausforderung, Menschen zu identifizieren. Die einzigartige Identität einer Person kann (teilweise) durch ihre Beziehung zu ihrer leiblichen Mutter und ihrem leiblichen Vater definiert werden. Wenn bekannt, sind dies unveränderliche Tatsachen. Daher ist die Beziehung zwischen leiblichem Elternteil und Kind insofern eine identifizierende Beziehung, als sie (unveränderlich) zur Definition der Identität des Kindes beiträgt.
Es sind diese Eigenschaften und die Verwendung relationaler DBMS-Konstrukte, die dazu führen, dass die PK des Kindes ein zusammengesetzter Schlüssel ist, der über FK die PK des Elternteils enthält. Als PK ist die Identität des Kindes obligatorisch und unveränderlich (sie kann sich nicht ändern). Eine 'Änderung' in einer PK instanziiert tatsächlich ein neues Objekt. Daher darf die PK nicht geändert werden können. Die Unveränderlichkeit einer PK sollte ebenfalls eingeschränkt werden. DB-Einschränkungen können verwendet werden, um diese Qualität von PKs zu implementieren.
quelle