Was ist der Unterschied zwischen Primärschlüssel und Superschlüssel in DBMS?


20

Ich bin neu in DBMS und lerne immer noch die Theorie.

Ich bin wirklich verwirrt mit diesem Schlüsselgeschäft und nach dem googeln habe ich es auf nur 2 Schlüssel eingegrenzt, die ich nicht bekomme (Primär- und Superschlüssel).

Ich habe ein paar Fragen zu DBMS. Ich wäre Ihnen dankbar, wenn Sie mir antworten könnten.

1) Was ist der Unterschied zwischen Primärschlüssel und Superschlüssel in DBMS? Schätzen Sie es sehr, wenn Sie ein umfassendes Beispiel verwenden können, um es richtig zu erklären

2) Primärschlüssel und Super - Taste beide haben mehrere Spalten kombiniert Primärschlüssel und Super Schlüssel zu bilden?

3) Ist der Primärschlüssel eine Teilmenge des Superschlüssels oder umgekehrt?


1
Eine Sache, die viel beschönigt wird, ist, dass das Tupel (Zeile) selbst ein Superschlüssel ist. Da die Absicht besteht, die Zeile eindeutig identifizieren zu können, dh das Tupel, das eine bestimmte Wertekombination enthält, eindeutig identifizieren zu können, besteht eine Möglichkeit darin, bereits alle Werte verfügbar zu haben. Daher ist das Tupel ein Superschlüssel für sich selbst, da wir, sobald wir die Werte im Tupel kennen, eindeutig wissen, wie wir das Tupel mit diesen Werten finden. Es scheint zunächst albern, aber es legt eine Obergrenze für das fest, was ein Superschlüssel für ein Tupel sein kann - das Tupel selbst.
Dave

@ Dave Die Menge aller Spaltennamen einer Relation / Tabelle (und damit jedes ihrer Tupel / Zeilen) ist ein Superschlüssel davon. Nicht "das Tupel (Zeile) selbst".
philipxy

@philipxy Sie haben Recht und ich habe einen falschen Tipp - ich stehe korrigiert. Vielen Dank für die Klarstellung.
Dave

Antworten:


23

Ein Superschlüssel ist einfach ein nicht minimaler Kandidatenschlüssel , dh ein Schlüssel mit zusätzlichen Spalten, die nicht unbedingt erforderlich sind, um die Eindeutigkeit der Zeile sicherzustellen.

Ein Primärschlüssel ist ein minimaler Kandidatenschlüssel , dh, alle Spalten der Bestandteile sind unbedingt erforderlich, um die Eindeutigkeit sicherzustellen.

Als Datenbankentwickler / -designer mit 30 Jahren Erfahrung habe ich den Begriff Super Key erst gehört, als ich diese Frage gesehen und nachgeschlagen habe. Das Konzept von Super Key scheint für das Thema Leistung und Entwurf des physischen Schemas relevanter zu sein, da es direkt dem Konzept eines eindeutigen Nonclustered-Indexes mit zusätzlichen Spalten zur besseren Abdeckung von Abfragen zugeordnet ist.


3
Das ist ziemlich ungenau. Sie verwenden Superkey, CK und PK anstelle des richtigen Superkey, Superkey und CK. Ein Superkey ist ein EINZIGARTIGES Set. (Ein CK ist ein "minimaler" Superkey. Es gibt keine Vorstellung von "minimalem" CK. Jeder CK ist ein Superkey. Ein Superkey muss also nicht mehr Spalten als ein CK haben. Ein PK ist ein CK, den man den PK nennt. Wenn es ein "minimales CK" sein müsste, müsste "minimal" "willkürlich" bedeuten.) SQL PK & UNIQUE NOT NULL deklarieren Superkeys. (Eine SQL-PK kann eine PK sein oder auch nicht.) Superschlüssel sind für die Definition von CK von entscheidender Bedeutung, die für den Entwurf einschließlich der Normalisierung von entscheidender Bedeutung ist. Siehe meine Antwort.
philipxy

1
Darüber hinaus ist das Verständnis von SK erforderlich, um den Boyce-Codd NF
Tanckom

16

Superschlüssel: Superschlüssel steht für die Obermenge eines Schlüssels. Ein Superschlüssel besteht aus einem oder mehreren Attributen, die gemeinsam verwendet werden und alle anderen Attribute eindeutig identifizieren können.

Zum Beispiel haben wir einen Tisch

Book (BookId, BookName, Author)

Also können wir in dieser Tabelle haben

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Als unser Superschlüssel. Jeder Superschlüssel kann jedes Tupel (Datensatz) eindeutig identifizieren.

Kandidatenschlüssel Kandidatenschlüssel sind Superschlüssel ohne redundante Attribute. Mit anderen Worten, Kandidatenschlüssel sind minimale Superschlüssel. Zum Beispiel in der obigen Abbildung

   (BookId)
   (BookName,Author)

Diese beiden Schlüssel können Kandidatenschlüssel sein, da die verbleibenden Schlüssel redundante Attribute aufweisen. Mittelwerte in Superschlüsseldatensätzen (BookId, BookName) können nur durch bookid eindeutig identifiziert werden, und daher ist Bookname ein redundantes Attribut

Primärschlüssel: Dies ist ein Kandidatenschlüssel, der vom Datenbankdesigner ausgewählt wird, um Entitäten in einem Entitätssatz zu identifizieren. ODER Ein Schlüssel, mit dem jeder Datensatz eindeutig identifiziert wird, wird als Primärschlüssel bezeichnet.

Von den oben genannten Kandidatenschlüsseln kann jeder der Primärschlüssel sein. Und der andere, der nicht als Primärschlüssel ausgewählt wurde, wird als Alternativschlüssel bezeichnet


Dies beantwortet die Frage und verdient Zustimmung.
Srk

Beachten Sie auch, dass ein anderer Name für alternative keyist, dass secondary keysie gleich sind. Gute Antwort!
Wael Alshabani

2

Aus meiner Antwort auf stackoverflow.com :

Ein Kandidatenschlüssel ist eine Reihe von Spalten, die Zeilen eindeutig identifizieren und die keine kleinere ("richtige") Teilmenge von Spalten enthält, die Zeilen eindeutig identifizieren.

Ein Superkey ist eine Reihe von Spalten, die Zeilen eindeutig identifizieren. Ein Kandidatenschlüssel ist also ein Superkey, der keinen kleineren Superkey enthält.

In SQL können Sie keinen leeren Kandidatenschlüssel deklarieren. Außerdem deklarieren UNIQUE NOT NULL und PRIMARY KEY (was in Bezug auf Einschränkungen nur UNIQUE NOT NULL bedeutet) Superschlüssel, nicht Schlüssel an sich. Wenn der Spaltensatz einer solchen Deklaration keinen kleineren Spaltensatz enthält, der als Superschlüssel deklariert wurde, ist der deklarierte Superschlüssel ein Kandidatenschlüssel.

Aus meiner Antwort auf stackoverflow.com zu einer bestimmten Tabelle:

Für Mengen von Spalten X und Y können wir X -> Y schreiben . Wir sagen, dass X die Determinantenmenge und Y die ermittelte Menge von / in funktionaler Abhängigkeit ( FD ) X -> Y ist.

Wir sagen, X bestimmt funktionell Y und Y wird funktionell durch X bestimmt. Wir sagen, X ist die Determinante von X -> Y. In {C} -> Y sagen wir, C bestimmt funktionell Y. In X -> {C} sagen wir X bestimmt funktionell C. Wenn X eine Obermenge von Y ist, sagen wir, dass X -> Y trivial ist .

Wir sagen X -> Y gilt in Tabelle T, wenn jede Unterreihe von Werten für X immer / nur mit derselben Unterreihe von Werten für Y erscheint. Oder wir sagen X -> Y ist eine FD von / in T. Wenn X eine Determinante ist von einigen FD in Tabelle T sagen wir, dass X eine Determinante von / in T ist.

Ein Superkey einer Tabelle T ist eine Menge von Spalten, die jedes Attribut funktional bestimmt. Ein Candidate Key ( CK ) ist ein Superkey, der keinen kleineren Superkey enthält. Wir können einen CK als Primärschlüssel ( PK ) auswählen und dann die anderen CKs als Alternativschlüssel aufrufen . Eine Spalte ist eine Primzahl, wenn sie sich in einem CK befindet.

(Wie ich dort kommentierte: "Die vier fettgedruckten Sätze für FD, hold, superkey und CK hätten ausgereicht.")

(Eine Tabelle mit einem leeren CK darf höchstens eine Zeile enthalten. Ein durch den leeren Satz bestimmter Spaltensatz muss in jeder Zeile denselben Unterzeilenwert aufweisen.)


1

Schlüssel Ein Schlüssel ist ein einzelnes Feld oder eine Kombination mehrerer Felder. Sein Zweck ist es, entsprechend der Anforderung auf Datenzeilen in der Tabelle zuzugreifen oder diese abzurufen. Die Schlüssel sind in Tabellen definiert, um schnell und reibungslos auf die gespeicherten Daten zuzugreifen oder diese zu sortieren. Sie werden auch zum Erstellen von Verknüpfungen zwischen verschiedenen Tabellen verwendet.

Schlüsseltypen Die folgenden Tabellen oder Beziehungen werden verwendet, um verschiedene Schlüsseltypen zu definieren.

Primärschlüssel Das Attribut oder die Kombination von Attributen, die eine Zeile oder einen Datensatz in einer Beziehung eindeutig identifizieren, wird als Primärschlüssel bezeichnet.

Sekundärschlüssel Ein Feld oder eine Kombination von Feldern, die als Basis für den Abruf dienen, wird als Sekundärschlüssel bezeichnet. Der Sekundärschlüssel ist ein nicht eindeutiges Feld. Ein Sekundärschlüsselwert kann auf viele Datensätze verweisen.

Kandidatenschlüssel oder Alternativschlüssel Eine Beziehung kann nur einen Primärschlüssel haben. Es kann viele Felder oder eine Kombination von Feldern enthalten, die als Primärschlüssel verwendet werden können. Ein Feld oder eine Kombination von Feldern wird als Primärschlüssel verwendet. Die Felder oder Feldkombinationen, die nicht als Primärschlüssel verwendet werden, werden als Kandidatenschlüssel oder Alternativschlüssel bezeichnet.

Zusammengesetzter Schlüssel oder verketteter Schlüssel Ein Primärschlüssel, der aus zwei oder mehr Attributen besteht, wird als zusammengesetzter Schlüssel bezeichnet.

Sortier- oder Steuerschlüssel Ein Feld oder eine Kombination von Feldern, mit denen die gespeicherten Daten, die als Sortierschlüssel bezeichnet werden, physisch sortiert werden. Es wird auch als Steuerschlüssel bezeichnet.

Ein Superkey ist eine Kombination von Attributen, mit denen ein Datenbankeintrag eindeutig identifiziert werden kann. Ein Tisch könnte viele Superschlüssel haben. Kandidatenschlüssel sind eine spezielle Untergruppe von Superschlüsseln, die keine überflüssigen Informationen enthalten.

Beispiel für Superschlüssel: Stellen Sie sich eine Tabelle mit den Feldern Name, Alter, SSN und <Durchwahl> vor. Diese Tabelle enthält viele mögliche Superkeys. Drei davon sind SSN, Durchwahl und Name. Von den aufgelisteten ist nur SSN ein Kandidatenschlüssel, da die anderen Informationen enthalten, die zur eindeutigen Identifizierung von Datensätzen nicht erforderlich sind.

Fremdschlüssel Ein Fremdschlüssel ist ein Attribut oder eine Kombination von Attributen in einer Beziehung , deren Wert in einer anderen Beziehung einen Primärschlüssel entsprechen. Die Tabelle, in der der Fremdschlüssel erstellt wird, wird als abhängige Tabelle bezeichnet. Die Tabelle, auf die sich der Fremdschlüssel bezieht, wird als übergeordnete Tabelle bezeichnet.

Für Minimal Super Key siehe diesen Link. Dort ist es klarer. http://www.answers.com/topic/superkey-1

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.