Heim  >  Artikel  >  Datenbank  >  Was bedeutet der zusammengesetzte MySQL-Primärschlüssel?

Was bedeutet der zusammengesetzte MySQL-Primärschlüssel?

青灯夜游
青灯夜游Original
2023-03-30 10:15:294133Durchsuche

In MySQL bedeutet ein zusammengesetzter Primärschlüssel, dass der Primärschlüssel einer Datenbanktabelle mehr als ein Feld enthält, d. h. ein zusammengesetzter Primärschlüssel ist eine Art Primärschlüssel und hat die gleiche Funktion Definition als Primärschlüssel. Der zusammengesetzte Primärschlüssel darf keine unnötigen redundanten Spalten enthalten. Wenn eine Spalte des zusammengesetzten Primärschlüssels gelöscht wird und der aus den verbleibenden Spalten bestehende Primärschlüssel immer noch das Eindeutigkeitsprinzip erfüllt, ist der zusammengesetzte Primärschlüssel falsch.

Was bedeutet der zusammengesetzte MySQL-Primärschlüssel?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Was ist der zusammengesetzte Primärschlüssel einer Datentabelle?

Der sogenannte zusammengesetzte Primärschlüssel bedeutet, dass der Primärschlüssel Ihrer Tabelle mehr als ein Feld enthält.

MySQL-Mehrfeld-Primärschlüssel kann auch zu einem zusammengesetzten Primärschlüssel werden. Ein zusammengesetzter Primärschlüssel ist ebenfalls eine Art Primärschlüssel und hat dieselben Funktionen und Definitionen wie der Primärschlüssel.

Die Primärschlüsseleinschränkung besteht darin, einen Primärschlüssel in der Tabelle zu definieren, um die Kennung jeder Datenzeile in der Tabelle eindeutig zu bestimmen. Der Primärschlüssel kann eine bestimmte Spalte in der Tabelle oder eine Kombination mehrerer Spalten sein. Ein aus mehreren Spalten bestehender Primärschlüssel wird als zusammengesetzter Primärschlüssel bezeichnet.

Der zusammengesetzte Primärschlüssel darf keine unnötigen redundanten Spalten enthalten. Wenn eine Spalte des zusammengesetzten Primärschlüssels gelöscht wird und der aus den verbleibenden Spalten zusammengesetzte Primärschlüssel immer noch das Eindeutigkeitsprinzip erfüllt, ist der zusammengesetzte Primärschlüssel falsch. Dies ist das Prinzip der Minimierung.

Zum Beispiel:

create table test
(
name varchar(19),
id number,
value varchar(10),
primary key (name,id)
)

Die Kombination der oben genannten Namens- und ID-Felder ist der zusammengesetzte Primärschlüssel Ihrer Testtabelle

Es erscheint, weil Ihr Namensfeld möglicherweise doppelte Namen enthält. Sie müssen also das ID-Feld hinzufügen, um dies sicherzustellen Sie Eindeutigkeit von Datensätzen

Warum wird ein zusammengesetzter Primärschlüssel angezeigt? Dies liegt daran, dass das Tabellennamenfeld möglicherweise doppelte Namen enthält. Daher muss ein ID-Feld hinzugefügt werden, um die Eindeutigkeit des Datensatzes sicherzustellen Schlüsselfelder Es ist besser, eines beizubehalten. Wenn Sie zwei zusammengesetzte Primärschlüssel erstellen müssen, sollten Sie beim Erstellen der Tabelle nach einem Feld suchen, das das Objekt eindeutig identifizieren kann.

Dann kommt wieder die Frage: Bedeutet das nicht, dass eine Tabelle nur einen Primärschlüssel haben kann? Der Primärschlüssel ist der einzige Index einer Tabelle. Warum kann eine Tabelle also mehrere Primärschlüssel erstellen?

Tatsächlich ist „Der Primärschlüssel ist der einzige Index“ etwas mehrdeutig. Hier ein Beispiel: Wir sind es gewohnt, ein ID-Feld in der Tabelle zu haben, das auf automatisches Wachstum eingestellt und als Primärschlüssel festgelegt ist. Zu diesem Zeitpunkt ist „der Primärschlüssel der einzige Index“ „Index“, die ID wächst automatisch, um die Eindeutigkeit sicherzustellen. Wenn zu diesem Zeitpunkt ein Feldname varchar (50) erstellt wird, wird er auch als Primärschlüssel festgelegt. Zu diesem Zeitpunkt werden ID und Name zum zusammengesetzten Primärschlüssel, und das Namensfeld in der Tabelle kann denselben Namenswert einfügen Beim Einfügen von Daten gibt es zu diesem Zeitpunkt nicht ein weiteres Problem: „Der Primärschlüssel ist ein eindeutiger Index? Wie kann er denselben Wert haben?“ Es ist also mehrdeutig zu sagen, dass „der Primärschlüssel“ ist ein eindeutiger Index“; die Prämisse, dass der Primärschlüssel ein eindeutiger Index ist, lautet: „Wenn die Tabelle nur einen Primärschlüssel enthält, ist er der einzige Index, wenn die Tabelle mehrere Primärschlüssel enthält Die Kombination der zusammengesetzten Primärschlüssel garantiert einen eindeutigen Index, der als Kombination der zusammengesetzten Primärschlüssel zum eindeutigen Index einer Tabelle (Primärschlüssel) verstanden werden kann. Warum wird die sich selbst erhöhende ID bereits als Primärschlüssel zur eindeutigen Identifizierung verwendet? Warum wird weiterhin ein zusammengesetzter Primärschlüssel benötigt? Da nicht alle Tabellen über das Feld „ID“ verfügen müssen. Wenn wir beispielsweise eine Schülertabelle erstellen und es keine eindeutige ID gibt, mit der Schüler identifiziert werden können, was sollten wir dann tun? Der Name, das Alter und die Klasse eines Schülers können alle wiederholt werden und können nicht eindeutig anhand eines einzelnen Felds identifiziert werden. In diesem Fall können wir mehrere Felder als Primärschlüssel festlegen, um einen zusammengesetzten Primärschlüssel zu bilden , Bestimmte Felder Es gibt kein Problem mit doppelten Primärschlüsselfeldwerten. Solange alle Primärschlüsselwerte in mehreren Datensätzen genau gleich sind, werden sie nicht als Duplikate betrachtet.

Zusammenfassung: In der Entwicklung ist es am besten, die Anzahl der Primärschlüsselfelder auf eins zu belassen. Wenn Sie zwei zusammengesetzte Primärschlüssel erstellen müssen, sollten Sie beim Erstellen der Tabelle nach einem Feld suchen, das das Objekt eindeutig identifizieren kann. Kurz gesagt: Verwenden Sie weniger zusammengesetzte Primärschlüssel.

Wie füge ich einen zusammengesetzten Primärschlüssel hinzu?

Sie können beim Erstellen einer Tabelle einen zusammengesetzten Primärschlüssel hinzufügen. Die Syntaxregeln lauten wie folgt:

PRIMARY KEY [字段1,字段2,…,字段n]
Beispiel: Erstellen Sie eine Datentabelle tb_emp Keine Primärschlüssel-ID in der Tabelle. Um einen Mitarbeiter eindeutig zu identifizieren, können Sie Name und Abteilungs-ID als Primärschlüssel kombinieren Der Schlüssel lautet: Der gemeinsame Primärschlüssel spiegelt sich in mehreren Tabellen wider, und der zusammengesetzte Primärschlüssel spiegelt sich in mehreren Tabellen in einem Tabellenfeld wider.
mysql> CREATE TABLE tb_emp
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)

Zu diesem Zeitpunkt stellt die ID in stu_course den gemeinsamen Primärschlüssel dar, und über die ID kann eine Aufzeichnung von Studenten und Kursen abgerufen werden

Der kombinierte Primärschlüssel ist also, wie der Name schon sagt, die Kombination mehrerer Primärschlüssel zu einer Primärschlüsselkombination, die sich in der Vereinigung widerspiegelt. (Primärschlüssel sind im Prinzip eindeutig, lassen Sie sich durch eindeutige Werte nicht stören.) Indizes können die Geschwindigkeit der Datenabfrage erheblich verbessern, verlangsamen jedoch die Geschwindigkeit des Einfügens, Löschens und Aktualisierens von Tabellen, da bei der Ausführung dieser Schreibvorgänge Der Index muss dokumentbezogen sein. Einfaches Beispiel: Primärschlüssel A und Primärschlüssel B bilden einen gemeinsamen Primärschlüssel C. Die Daten von Primärschlüssel A und Primärschlüssel B können genau gleich sein. Die Vereinigung besteht darin, dass der gemeinsame Primärschlüssel C aus Primärschlüssel A und Primärschlüssel besteht B ist einzigartig.

【Verwandte Empfehlung: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet der zusammengesetzte MySQL-Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn