Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Primärschlüssel

Erklärt, was ein Primärschlüssel ist und warum er ein integraler Bestandteil relationaler Datenbanken ist.

Als wir unsere beiden Tabellen erstellt haben, haben wir auch einen Primärschlüssel für jede Tabelle erstellt.

Wenn Sie die Knoten im linken SCHEMAS erweitern sehen Sie die Primärschlüssel (und Fremdschlüssel – dazu kommen wir als Nächstes), die unter jeder Tabelle aufgeführt sind:

Wie der beigefügte Screenshot zeigt, sind die Indexes Knoten enthalten beliebige Indizes (in unserem Fall Fremdschlüssel und/oder Primärschlüssel). Diese Primärschlüssel und Fremdschlüssel sind nur da, weil wir sie in unserem Code angegeben haben, als wir die Tabellen erstellt haben.

Insbesondere haben wir PRIMARY KEY (FruitId) verwendet um die FruitId zu erstellen Spalte den Primärschlüssel für Fruit Tabelle, und wir haben PRIMARY KEY (UnitId) verwendet um die UnitId zu erstellen Spalte den Primärschlüssel für die Units Tabelle.

Was ist ein Primärschlüssel?

Ein Primärschlüssel (auch als eindeutiger Schlüssel bezeichnet ) ist eine Spalte, die als Feld für die eindeutige Kennung zugewiesen wurde. Der Wert in einer Primärschlüsselspalte ist für jeden Datensatz eindeutig. Mit anderen Worten, keine zwei Datensätze können denselben Wert in dieser Spalte teilen.

Ein klassisches Beispiel für ein Primärschlüsselfeld ist ein „ID“-Feld. Die meisten Tabellen haben ein ID-Feld, das eine eindeutige Kennung für jeden Datensatz bereitstellt. Beispiele könnten "CustomerId", "ProductId", "FruitId" usw. sein. Ohne solche ID-Felder wäre die Funktion Ihrer Datenbank stark beeinträchtigt. Wenn Sie zwei oder mehr Kunden mit demselben Namen haben, wie können Sie deren Datensatz finden? Es stimmt zwar, dass Sie möglicherweise etwas Einzigartiges zu jedem Datensatz finden könnten, aber es ist viel sauberer und einfacher, eine Spalte zu haben, deren Hauptzweck darin besteht, jeden Datensatz eindeutig zu identifizieren.

Ein Primärwert kann entweder ein normaler Wert sein, der garantiert eindeutig ist (eine ISBN-Nummer für Bücher, Produktcode usw.), oder er kann ein Wert sein, der von der Anwendung oder dem DBMS speziell generiert wird, um eindeutig zu sein (z. B. eine global eindeutige Identifikator oder automatisch inkrementierende Ganzzahl).

Auswahl eines Primärschlüssels

Seien Sie vorsichtig, wenn Sie eine Spalte für Ihren Primärschlüssel auswählen. Sie müssen sicherstellen, dass jeder Datensatz einen hat und dass es nicht möglich ist, dass zwei Datensätze denselben Wert haben oder dass ein Datensatz mehr als einen Wert hat.

Beispielsweise kann die Verwendung der E-Mail-Adresse des Benutzers in einigen Fällen funktionieren, ist jedoch keine sehr solide Grundlage für eine eindeutige Kennung. Benutzer können ihre E-Mail-Adresse ändern. Benutzer können E-Mail-Adressen teilen. Einige Benutzer haben möglicherweise keine E-Mail-Adresse. Natürlich könnten Sie Ihr System so schreiben, dass Benutzer daran gehindert werden, ihre E-Mail-Adresse zu ändern oder sie weiterzugeben, aber Ihr System wäre nicht sehr flexibel oder benutzerfreundlich.

Sie könnten verlangen, dass alle Benutzer einen eindeutigen Benutzernamen haben. Das könnte funktionieren. Sie müssen jedoch sorgfältig über alle Möglichkeiten nachdenken. Wenn die Möglichkeit besteht, dass Benutzer ihn ändern oder teilen (Vergangenheit, Gegenwart oder Zukunft), verwenden Sie ihn nicht als Primärschlüssel. Was ist, wenn „TechGuy12“ sein Konto deaktiviert? Bedeutet das, dass jetzt ein anderer Benutzer "TechGuy12" verwenden kann? Wird dies ein Problem für Ihre Anwendung oder Berichte sein, die Sie erstellen müssen?

Wenn Sie Zweifel an der "Eindeutigkeit" Ihres Primärschlüsselfelds haben, verwenden Sie eine automatisch generierte Nummer, die mit jedem erstellten Datensatz erhöht wird.