Heim  >  Artikel  >  Datenbank  >  Analyse des Unterschieds zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel in MySQL

Analyse des Unterschieds zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel in MySQL

WBOY
WBOYnach vorne
2022-08-01 15:08:321867Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über MySQL. Er stellt hauptsächlich die Unterschiede zwischen Superschlüsseln, Primärschlüsseln und Kandidatenschlüsseln in MySQL vor. Ich hoffe, dass er für alle hilfreich ist.

Analyse des Unterschieds zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel in MySQL

Empfohlenes Lernen: MySQL-Video-Tutorial

Über den Unterschied zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel

Ich bin kürzlich beim Lesen von MySQL-Büchern auf ein Problem gestoßen:

Jetzt haben wir bereits das Konzept Der Primärschlüssel kann die Anforderungen bereits erfüllen. Warum benötigen wir also einen Kandidatenschlüssel? Welche Rolle spielen Kandidatenschlüssel? Es ist eine Kandidatenschlüsseldefinition angegeben, aber es spielt eigentlich keine Rolle.

Mit der Mentalität, nach weiteren Informationen zu fragen, habe ich online gesucht und mir die Erklärungen der Experten angesehen, also wollte ich es hier klären, um es mir klarer zu machen Ich hoffe auch, wenn Gibt es ein Missverständnis, kann mir jemand einen Rat geben? Hier ist ein Teil meines Verständnisses:

Tatsächlich sind Primärschlüssel und Superschlüssel besser. Es gibt zum Beispiel eine solche Tabelle:

Analyse des Unterschieds zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel in MySQL

Die Schrift Der Tisch ist etwas rau, daher ist es in Ordnung, Bar zu lesen.

Superschlüssel

Der Satz von Attributen, der ein Tupel in einer Beziehung eindeutig identifizieren kann, wird als Superschlüssel des relationalen Schemas bezeichnet. Beachten Sie den „Attributsatz“ in der Definition. Der Superschlüssel kann ein großer Satz sein, solange er bestimmen kann, um welche Zeile es sich handelt, also „id“, „user“, „pwd“, „section“, „name“. Sind alle in Ordnung, ist der Satz von Supertasten.

Kandidatenschlüssel

Ein Superschlüssel, der keine redundanten Attribute enthält. Im obigen Superschlüssel kann „id“ beispielsweise selbst bestimmen, um welche Zeile es sich handelt, sodass er mit Ausnahme der anderen vier ein eigenständiger Kandidatenschlüssel sein kann Es kann sich auch um einen Kandidatenschlüssel handeln, aber diese fünf werden zusammengestellt, da es redundante Spalten gibt, es handelt sich also nicht um Kandidatenschlüssel. (Der Grund, warum die anderen vier Kandidatenschlüssel sein können, liegt darin, dass jede Spalte doppelten Inhalt haben kann.)

Primärschlüssel

Suchen Sie einen aller Kandidatenschlüssel zur Verwendung als Primärschlüssel, was bedeutet, dass es sich um eine ID oder etwas anderes handeln kann. Die Kombination der vier kann auch andere Wahlmöglichkeiten sein, solange dadurch sichergestellt werden kann, dass die Menge der Wahlmöglichkeiten eindeutig bestimmt werden kann.

Zusammenfassend sind Kandidatenschlüssel eine Teilmenge der Superschlüssel und Primärschlüssel eine Teilmenge der Kandidatenschlüssel.

Nachdem ich so viel geklärt habe, verstehe ich immer noch nicht, welche Funktion der Kandidatenschlüssel hat. Tatsächlich kann es sein, dass es nur noch einen Sitzplatz im Auto gibt, und das gibt es auch Mehrere Hauptschlüssel liegen in der Wartehalle. Sagen Sie mir: „Wir haben alle Fahrkarten gekauft und sind alle berechtigt, in den Bus einzusteigen. Das sollte derjenige sein, der in den Bus einsteigt.“ Es.

Verstehen Sie die Konzepte von Superschlüssel, Kandidatenschlüssel, Primärschlüssel und Beziehung.

Grundkonzepte des Beziehungsmusters.

Kandidatenschlüssel: Ein Superschlüssel, der keine redundanten Attribute enthält, wird als Kandidatenschlüssel bezeichnet, das heißt, seine wahre Teilmenge ist kein Superschlüssel mehr.
  • Primärschlüssel: Ein vom Benutzer als Tupel-ID ausgewählter Kandidatenschlüssel wird als Primärschlüssel bezeichnet und ist einer der Kandidatenschlüssel.
  • Beziehung
  • Kandidatenschlüssel sind eine Teilmenge der Superschlüssel, und der Primärschlüssel ist einer der Kandidatenschlüssel.

Als Beispiel

Betrachten Sie den Attributsatz (ID-Nummer, Name, Geschlecht, Alter), vorausgesetzt, es gibt keine doppelten Namen

a. Die Superschlüssel sind:

ID-Kartennummer, Name, (Name , Geschlecht), (Name, Geschlecht, Alter) usw.

– Hier ist zu sehen, dass der Superschlüssel die Attributgruppe ist, die eine Person eindeutig identifizieren kann
  • b

ID-Kartennummer, der Name ist eindeutig und hat keine redundanten Attribute, es handelt sich also um einen Kandidatenschlüssel

– Hier ist zu sehen, dass der Kandidatenschlüssel ein Superschlüssel ohne redundante Attribute ist
  • c. Wählen Sie den Primärschlüssel aus

Benutzer können die Wahl nach ihren eigenen Vorlieben treffen. Name oder ID-Nummer als Primärschlüssel

– Der Primärschlüssel ist ein ausgewählter Kandidatenschlüssel
  • Noch nicht verstanden?
Beispiel:

In der SQL Server-Datenbank gibt es eine Studenteninformationstabelle wie unten gezeigt. Der Satz von Attributen, die in dieser Tabelle nicht als Kandidatenschlüssel verwendet werden können, ist ( ) (wählen Sie eines aus)

Studentennummer , Name, Geschlecht, Alter Hauptfach

20020612 Li Huinan 20 Computersoftwareentwicklung

20060613 Zhang Mingnan 18 Computersoftwareentwicklung
20060614 Wang Xiaoyu Weiblich 19 Physik und Mechanik

20060615 Li Shuhua Weiblich 17 Biozoologie
20060616 Zhao. J ingnan 21 Chemie Lebensmittelchemie
200 60617 Zhao Jingnu 20 Biological Plants Study



a) {Studentennummer}

b) {Studentennummer, Name}
c) {Alter, Abteilung}
d) {Name, Geschlecht}

e) {Name, Hauptfach}


Empfohlene Studie:
MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAnalyse des Unterschieds zwischen Superschlüssel, Primärschlüssel und Kandidatenschlüssel in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen