Handelt es sich in SQL um zusammengesetzte oder zusammengesetzte Schlüssel?


31

Informationen zu SQL (Computing / Datenbanken):

Wenn wir zwei oder mehr Felder in einer Tabelle haben, die zusammen ihre Datensätze eindeutig identifizieren, wie kann man sie dann richtig aufrufen? Verbund- oder Verbundschlüssel?

Ich habe im Web beide Verwendungen gesehen, daher bin ich mir nicht wirklich sicher.


1
Sehen Sie sich diese beiden Trends der Google-Suche an: goo.gl/5u4XdR .
Igordcard

Antworten:


32

Sowohl der zusammengesetzte Schlüssel als auch der zusammengesetzte Schlüssel beschreiben einen Kandidatenschlüssel mit mehr als einem Attribut. Nach dem Relational Database Dictionary (CJDate) bedeuten sie dasselbe.

Bei der ER-Modellierung hat der Begriff "zusammengesetzter Schlüssel" auch eine spezifischere Bedeutung. Es bedeutet einen Schlüssel, dessen konstituierende Attribute Verweise auf Schlüssel in anderen Entitäten sind - dh ein zusammengesetzter Schlüssel bildet eine identifizierende Beziehung. Für die meisten Zwecke ist dies kein besonders nützliches oder wichtiges Konzept, daher werden die Begriffe Verbundwerkstoff häufig als austauschbar behandelt. Es ist wahrscheinlich am besten, sich an den "zusammengesetzten Schlüssel" zu halten, es sei denn, Sie beziehen sich speziell auf das ER-Modellierungskonzept eines zusammengesetzten Schlüssels.


3
"In der ER-Modellierung hat der Begriff" zusammengesetzter Schlüssel "auch eine spezifischere Bedeutung" - Klingt überzeugend :) Aber haben Sie ein Zitat?
Eintägig, wenn der

Ein zusammengesetzter Schlüssel ist also der Schlüssel, der normalerweise in einer Junction-Tabelle enthalten ist, die beispielsweise für viele-viele-Beziehungen verwendet wird.
Josh P

19

Ich bin mir immer noch nicht sicher, warum http://en.wikipedia.org/wiki/Compound_key nicht konsultiert wurde. Es heißt sehr deutlich (und ist richtig):

Beim Datenbankentwurf ist ein zusammengesetzter Schlüssel ein Schlüssel, der aus mindestens zwei Attributen besteht, die ein Entitätsvorkommen eindeutig identifizieren. Jedes Attribut, aus dem der zusammengesetzte Schlüssel besteht, ist ein einfacher Schlüssel für sich.

Dies wird häufig mit einem zusammengesetzten Schlüssel verwechselt, wobei, obwohl dies auch ein Schlüssel ist, der aus zwei oder mehr Attributen besteht, die ein Entitätsvorkommen eindeutig identifizieren, mindestens ein Attribut, aus dem der zusammengesetzte Schlüssel besteht, kein einfacher Schlüssel für sich ist.

Ein zusammengesetzter Schlüssel besteht aus Elementen, die Fremdschlüssel sein können oder nicht. Beispiel: In einer Tabelle mit Transaktionsdetails lautet der Schlüssel (TransactionId, ItemNumber). Ein Transaktionsdetail ist ein Unterelement einer Transaktion. TransactionId ist ein Fremdschlüssel, der auf die Transactions-Tabelle verweist. ItemNumber ist kein Schlüssel für sich. Es identifiziert einen Artikel nur eindeutig im Kontext einer einzelnen Transaktion.

Ein zusammengesetzter Schlüssel ist ein Schlüssel, bei dem jeder Teil des Schlüssels ein Fremdschlüssel ist. Beispiel: In einem Hotelreservierungssystem hat eine Reservierung den zusammengesetzten Schlüssel (GuestId, HotelId, ArrivalDate). GuestId identifiziert einen Guest und verweist auf die Guests-Tabelle. HotelId identifiziert ein Hotel und verweist auf die Tabelle Hotels. ArrivalDate identifiziert ein Datum. Möglicherweise gibt es eine Datumstabelle, auf die verwiesen wird, aber es gibt eine Entität (ein Datum) an.

Bemerkenswert ist auch dieses Faktoid: Ein einfacher Schlüssel ist ein Schlüssel, der aus einer Spalte besteht, während ein zusammengesetzter Schlüssel aus zwei oder mehr Spalten besteht.


4
jcolebrand: "Ein zusammengesetzter Schlüssel ist ein Schlüssel, mit dem jeder Teil des Schlüssels den Datensatz identifizieren kann." Das ist falsch Per Definition muss ein Schlüssel irreduzibel sein (ein minimaler Superkey). Wenn nur einige der Attribute erforderlich sind, um ein Tupel eindeutig zu identifizieren, ist dies per Definition ein Superschlüssel und kein Schlüssel.
nvogel

a) Ich habe die Wikipedia-Seite zitiert. b) Ich stimme dem eher zu. Jeder Teil eines zusammengesetzten Schlüssels ist selbst ein einfacher Schlüssel. Es macht mir nichts aus, wenn du es auch einen Superkey nennst. Ich glaube jedoch nicht, dass alle zusammengesetzten Schlüssel Superschlüssel sein können. Ergo stehe ich zu dem, was in dem Wikipedia-Artikel steht, und stehe zu der Definition, die ich zitiert habe. Ich kann mein veröffentlichtes Hardcover-Datenbank-Designbuch holen, wenn Sie das glücklicher machen würden.
jcolebrand

2
Ich denke, Sie haben jedoch den relevanten Punkt übersehen, nämlich, dass ein zusammengesetzter Schlüssel aus Schlüsseln anderer Entitäten besteht . Eine richtige Teilmenge eines Schlüssels kann unmöglich ein Schlüssel sein. Wie Sie sicher wissen, muss ein Schlüssel minimal sein (innerhalb derer er ein Schlüssel ist). Wenn Sie also ein Attribut daraus entfernen, wird er kein Schlüssel mehr sein.
nvogel

2
"Key" ist die Abkürzung für "Candidate Key". Die Lehrbuchdefinition eines Kandidatenschlüssels war und ist ein "minimaler Superkey". Referenzen: Date's Dictionary S. 17 oder The Alice Book, wenn Sie Zweifel an der Definition eines Schlüssels haben.
nvogel

1
Die Definitionen von " zusammengesetzter Schlüssel " und " zusammengesetzter Schlüssel " auf der Wikipedia-Seite wurden am 13. Juli 2014 geändert und stimmen nicht mehr mit den Definitionen in dieser Antwort überein. (Ich habe die Definitionen nicht geändert, nur darauf hingewiesen, dass die Definitionen jetzt nicht übereinstimmen.)
spencer7593

3

Auf Englisch ist es "zusammengesetzte Schlüssel". Schauen Sie sich zum Beispiel die MSDN-Website an (jede Suche, die "sql composite key" enthält, ist ausreichend).

http://www.google.com/search?q=sql+composite+key+site:msdn.microsoft.com

Unter der Annahme, dass die Frage relationale Datenbanken betrifft, habe ich in Wikipedia nach einer "neutralen" Definition gesucht :

Ein zusammengesetzter Schlüssel ist ein Schlüssel, der aus zwei oder mehr Attributen in einer Tabelle besteht, die einen Datensatz (zusammen) eindeutig identifizieren


1
Keine Quelle, kein Verweis, kein Link, nichts ... schlechte Antwort.


google.com/search?q=sql+composite+key+definition bringt Sie auf eine Unmenge von Websites, die sich um
Hemme,

1
auch eine google-suche nach zusammengesetzten schlüsseln
jcolebrand

3
Dies ist wissenschaftlich: googlefight.com/…
Hemme

3

Ein zusammengesetzter Schlüssel besteht aus mehr als einem Attribut, um ein Entitätsvorkommen eindeutig zu identifizieren. Dies unterscheidet sich von einem zusammengesetzten Schlüssel darin, dass eines oder mehrere der Attribute, aus denen der Schlüssel besteht, keine eigenen einfachen Schlüssel sind.

Beispielsweise verfügen Sie über eine Datenbank, in der Ihre CD-Sammlung gespeichert ist. Eine der Entitäten heißt Tracks und enthält Details zu den Tracks auf einer CD. Dies hat einen zusammengesetzten Schlüssel aus CD-Name und Titelnummer.


2

Es klingt für mich so, als ob ein zusammengesetzter Schlüssel eine Obermenge ist, die zusammengesetzte Schlüssel enthält. Wenn wir akzeptieren, dass ein zusammengesetzter Schlüssel aus mehr als einem Attribut (jeglicher Art) und ein zusammengesetzter Schlüssel aus mehr als einem einfachen Schlüssel besteht. Ein zusammengesetzter Schlüssel ist eine Art zusammengesetzter Schlüssel mit einer genaueren Bedeutung, aber der Begriff "zusammengesetzter Schlüssel" ist immer passend zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.