Müssen Primärschlüssel der Datenbank Ganzzahlen sein?

8

Ich sehe immer Primärschlüssel der MySQL-Datenbank als ganze Zahlen. Liegt das daran, dass Primärschlüssel ganze Zahlen sein müssen oder weil die Verwendung von auto_increment in der Spalte einfach ist?

Ich frage mich, ob mein Primärschlüssel in Zukunft ein varchar sein soll.

    
GusDeCooL 27.12.2012, 18:52
quelle

6 Antworten

8

Sie können varchar genauso lange verwenden, wie Sie sicherstellen, dass jede eindeutig ist. Dies ist jedoch nicht ideal (siehe Artikellink unten für weitere Informationen).

Was Sie suchen, heißt natürlicher Schlüssel , aber ein Primärschlüssel mit Autoinkrement und behandelt vom RDBMS wird Ersatzschlüssel genannt, was der bevorzugte Weg ist. Daher müssen Sie Ganzzahl haben.

Erfahren Sie mehr:

Sarfraz 27.12.2012, 18:54
quelle
10

Warum Ganzzahlen gute Primärschlüssel bilden

Im Vergleich zu einer Zeichenfolge oder einem zusammengesetzten Schlüssel ist es oft einfacher, eine Ganzzahl für die Indizierung zu verwenden, da sie sich gut für die Behandlung von Ergebnissen (konzeptionell oder in der Praxis) als Array eignet. Abhängig von der Datenbankimplementierung können Integer auch schneller auf Daten zugreifen, sortieren oder vergleichen, und der Integer-Typ bietet normalerweise zusätzliche Funktionen wie die automatische Inkrementierung, die für andere Datentypen nicht verfügbar sind. Wie würden Sie beispielsweise einen zusammengesetzten Schlüssel automatisch inkrementieren?

MySQL hat dies zu sagen über den Primärschlüssel:

  

Der Primärschlüssel für eine Tabelle stellt die Spalte oder Spaltengruppe dar, die Sie in Ihren wichtigsten Abfragen verwenden. Es verfügt über einen zugeordneten Index für eine schnelle Abfrageleistung. Die Leistung der Abfrage profitiert von der NOT NULL-Optimierung, da sie keine NULL-Werte enthalten kann.

SQL erlaubt die Verwendung einer beliebigen eindeutigen Spalte (oder eines Satzes von Spalten), die nicht null ist, als Primärschlüssel. Wenn Sie jedoch keine automatische Inkrementierung wünschen, können Sie Ihren Primärschlüssel in der Regel erstellen jeder Index , der UNIQUE und NOT NULL ist.

Berücksichtigen Sie die Erwartungen Ihrer Anwendung

Obwohl dies keine schwierige Anforderung ist, optimieren einige Frameworks für Integer-Primärschlüssel. Beispielsweise vereinfacht Ruby on Rails standardmäßig die Verwendung eines automatisch inkrementierenden Primärschlüssels. Sie müssen bewusst gegen die Konvention arbeiten, wenn Sie etwas anderes verwenden möchten.

Das bedeutet nicht, dass man Ganzzahlen als Primärschlüssel verwenden sollte oder nicht. Es bedeutet nur, dass die Wahl des Primärschlüssels zum Teil vom zugrunde liegenden Datenbanksystem und den Abfragen, die Sie erwarten, und zum Teil von den Anwendungen, die Sie zum Abrufen der Daten verwenden, abhängt. All diese Dinge sollten berücksichtigt werden, wenn Kandidatenschlüssel in Betracht gezogen werden.

    
Todd A. Jacobs 27.12.2012 19:15
quelle
1

Ein Primärschlüssel ist unique.int ist einfach, diese Bedingung mit automatischem Inkrement zu erfüllen. Wenn Sie es char machen, müssen Sie einen Weg schaffen, um es einmalig zu machen, wenn Sie Daten hinzufügen.

    
Salih Erikci 27.12.2012 18:54
quelle
1

Nein, der Primärschlüssel muss keine ganze Zahl sein; es ist nur sehr häufig, dass es ist. Als Beispiel haben wir hier Benutzer-IDs, die führende Nullen haben können und daher in einem VARCHAR-Feld gespeichert werden müssen. Dieses Feld wird als Primärschlüssel in unserer Employee-Tabelle verwendet.

    
Melanie 27.12.2012 18:55
quelle
1

Wenn ein Primärschlüssel eine Ganzzahl ist, ist er einfacher zu verwalten und sein Index wird effektiver. Wie Sie wissen, werden die Indizes, während die Schlüssel automatisch indexiert werden, als Binärbaum gespeichert, der am besten für Ganzzahlen beim Traversieren geeignet ist. Es gibt keine Einschränkung, einen Schlüssel int zu machen, Sie können ihn auch als varchar deklarieren.

    
Sashi Kant 27.12.2012 18:56
quelle
1

Grundsätzlich muss ein Primärschlüssel nur zwei Bedingungen erfüllen: Er muss eine Nicht-Null-Spalte sein und muss eindeutig sein. Jede Art von Spalte, die diese 2 Bedingungen erfüllt, kann als Primärschlüssel festgelegt werden. Wenn der Primärschlüssel ein Mehrfachspalte ist, müssen beide Spalten nicht null sein.

Während Sie theoretisch andere Felder als Primärschlüssel verwenden können, sind Ganzzahlen am einfachsten zu verwalten und die schnellsten verfügbaren Indizes.

    
Xnoise 27.12.2012 19:16
quelle

Tags und Links