Schwer, sich zu entscheiden, auf identifizierende oder nicht identifizierende Beziehung
Ich dies gelesen habe Frage: Was ist der Unterschied zwischen identifizierenden und nicht identifizierenden Beziehungen?
Aber ich bin noch nicht allzu sicher...
Was ich habe, ist drei Tabellen.
- Benutzer
- Objekte
- Bilder
Kann ein Benutzer besitzen viele Objekte und können auch nach vielen Bildern pro einzelnes Objekt.
Mein Bauchgefühl sagt mir, das ist eine identifizierende Beziehung, denn ich brauche die userID, in der Objekte-Tabelle, und ich muss die objectID in die Bilder, Tabellen...
Oder bin ich da falsch? Die Erklärungen in dem anderen Thema beschränken sich auf die theoretische Erklärung der Art, wie die Datenbank interpretiert es, nachdem es bereits codiert wurde, nicht, wie die Objekte verbunden sind, im realen Leben. Ich bin irgendwie verwirrt, wie, um die Entscheidung zu identifizieren oder nicht zu identifizieren, wenn Sie darüber nachdenken, wie ich werde um die Datenbank zu konstruieren.
InformationsquelleAutor der Frage KdgDev | 2009-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide klingen wie die Identifizierung von Beziehungen zu mir. Wenn Sie gehört haben die Begriffe eins-zu-eins oder eins-zu-viele und viele-zu-viele, eins-zu - Beziehungen sind identifizierende Beziehungenund viele-zu-viele-Beziehungen sind nicht-identifizierende Beziehungen.
Wenn das Kind erkennt seine Eltern, es ist eine identifizierende Beziehung. In dem link, den Sie gegeben haben, wenn Sie eine Telefonnummer haben, wissen Sie, wem es gehört (es gehört nur einer).
Wenn das Kind nicht erkennen seine Eltern, es ist eine nicht-identifizierende Beziehung. In dem link, er nennt Staaten. Denken Sie an einen Zustand als eine Zeile in einer Tabelle darstellt Stimmung. "Happy" nicht die Identifizierung einer bestimmten person, sondern viele Menschen.
Bearbeiten: Andere Beispiele aus dem wirklichen Leben:
InformationsquelleAutor der Antwort Nicole
Ich denke, ein einfacher Weg, um zu visualisieren, es ist zu Fragen, ob Sie das Kind aufnehmen kann existieren, ohne die Eltern. Zum Beispiel eine Bestellung Einzelposten benötigt ein Auftragskopf zu existieren. Also, eine Bestellung, die werbebuchung muss die Reihenfolge header-identifier als Teil seines Schlüssels und damit ist dies ein Beispiel für eine identifizierende Beziehung.
Auf der anderen Seite, Telefon-Nummern existieren kann ohne den Besitz einer person, obwohl eine person kann mehrere Telefonnummern. In diesem Fall, die person, die Eigentümer der Rufnummer ist ein nicht-Schlüssel-oder nicht-identifizierende Beziehung, da die Telefonnummern existieren können, unabhängig von der Eigentümer-person (also die Handy-Nummer Besitzer person kann null sein, in der Erwägung, dass in der Bestellung Einzelposten Beispiel die Reihenfolge header-id darf nicht null sein.
InformationsquelleAutor der Antwort Rick Sumner
Die Erklärung scheint völlig falsch zu mir. Können Sie haben:
Vorstellen, haben Sie die folgenden Tabellen:
customer
products
undfeedback
. Alle von Ihnen sind auf der Grundlage dercustomer_id
vorhanden ist auf dercutomer
Tabelle. Also, durch die NickC definition sollte es nicht vorhanden ist jegliche Art von Viele-zu-Viele-Identifizierende Beziehungen, aber in meinem Beispiel kann man deutlich sehen, dass: Ein Feedback kann besteht nur, wenn das entsprechende Produkt vorhanden ist, und wurde vom Kunden gekauft, so dass Kunden, Produkte und Feedback sollte die Identifizierung.Können Sie einen Blick auf MySQL-Handbuchzu erklären, wie das hinzufügen von Fremdschlüsseln in MySQL Workbench als auch.
InformationsquelleAutor der Antwort Mahdi
Mahdi, Ihre Instinkte sind korrekt. Dies ist eine doppelte Frage und das stimmte Antwort ist nicht korrekt oder vollständig sind.
Schaue dir die obersten beiden Antworten hier:
Unterschied zwischen Identifizierung nicht identifizieren
Identifizieren vs nicht-erkennen hat nichts mit Identität zu tun.
Einfach sich selbst Fragen, können Sie den untergeordneten Datensatz existieren, ohne die Eltern? Wenn die Antwort ja ist, es ist nicht zu ermitteln.
Die zentrale Frage, ob der Primärschlüssel des Kindes enthält den Fremdschlüssel der Eltern. In der nicht-identifizierende Beziehung des Kindes primary key (PK), darf nicht die Fremdschlüssel (FK).
Fragen Sie sich diese Frage
Wenn das Kind existieren kann ohne die Eltern, dann die Beziehung ist nicht zu ermitteln. (Danke MontrealDevOne für die Angabe es deutlicher)
Eins-zu-eins-Identifizierung-Beziehung
die Soziale Sicherheit zahlen passen gut in diese Kategorie.stellen wir uns zum Beispiel, dass die soziale Sicherheit zahlen, nicht existieren kann, mit der sich eine person (vielleicht können Sie in der Realität, aber nicht in unserer Datenbank) Die person_id wäre die PK für die person Tabelle einschließlich der Spalten, wie ein Namen und Adresse. (wir halten es einfach). Die social_security_number Tabelle sind die ssn Spalte und die person_id Spalte als Fremdschlüssel. Da diese FK genutzt werden können, wie die PK für die social_security_number Tabelle es ist eine identifizierende Beziehung.Eins-zu-eins-nicht-identifizierende Beziehung
In einem großen Büro-komplexen, haben Sie vielleicht eine office Tabelle mit den Zimmer-Nummern von Boden-und Gebäude-Nummer mit einem PK und einem separaten Mitarbeiter Tabelle. Die employee-Tabelle (Kind) hat ein FK, das ist der office_id Spalte aus der office Tabelle PK. Während jeder Mitarbeiter hat nur eine Büro-und (für dieses Beispiel) jedes Amt hat nur eine Mitarbeiter-dies ist eine nicht-identifizierende Beziehung seit ämter vorhanden sein können, ohne Mitarbeiter, und die Mitarbeiter können sich ändern, ämter oder die Arbeit auf dem Feld.
Eins-zu-viele-Beziehungen
Eins-zu-viele-Beziehungen kategorisiert werden können, einfach, indem er die gleiche Frage.
Viele-zu-viele-Beziehungen
Viele-zu-viele-Beziehungen sind immer identifizierende Beziehungen. Dies scheint counter-intuitive, aber Geduld mit mir. Nehmen Sie zwei Tabellen Bibliothek und Bücherjede Bibliothek hat viele Bücher, und eine Kopie von jedem Buch gibt es in vielen Bibliotheken.
Hier ist, was macht es und identifizieren Beziehung:
Um diesen umzusetzen, müssen Sie eine Verknüpfung Tabelle mit zwei Spalten, die den Primärschlüssel jeder Tabelle. Nennen Sie die library_id Spalte und die ISBN Spalte. Diese neue Verknüpfung Tabelle hat keinen separaten Primärschlüssel, aber warten Sie! Der Fremdschlüssel zu einem multi-Spalten-Primärschlüssel für die Verknüpfung von Tabelle, da doppelte Datensätze in der Tabelle verknüpfen sinnlos wäre. Die links kann nicht existieren, ohne die Eltern; deshalb ist dies eine identifizierende Beziehung. Ich weiß, igitt richtig?
Die meisten der Zeit, die Art der Beziehung spielt keine Rolle.
Allen, sagte, in der Regel, die Sie nicht haben, um über sorgen, die Sie haben. Nur die Zuweisung der richtigen primär-und Fremdschlüssel jeder Tabelle und die Beziehungen entdecken, sich selbst.
EDIT: NicoleCich lese die Antwort Sie verknüpft, und das tut es mit den meinigen überein. Ich nehme seinen Standpunkt über SSN, und Stimmen zu, dass ist ein schlechtes Beispiel. Ich werde versuchen zu denken, bis ein anderes deutlicheres Beispiel gibt. Jedoch, wenn wir beginnen, zu verwenden realen Analogien in der Definition einer Datenbank Beziehung die Analogien immer brechen. Es kommt nicht darauf an, ob eine SSN identifiziert eine person Fragen, ob Sie es als foreign key.
InformationsquelleAutor der Antwort rkedge