MySQL Primärschlüssel (PRIMARY KEY) erklärt: So setzen Sie ihn, beheben Fehler und wählen das optimale Design

目次

1. Einführung

In der Datenbankgestaltung ist der „Primärschlüssel (PRIMARY KEY)“ ein wesentliches Konzept.
Ein Primärschlüssel spielt eine entscheidende Rolle, um die Eindeutigkeit jedes Datensatzes zu gewährleisten und bildet die Grundlage für effizientes Datenmanagement und Datenintegrität.

In diesem Artikel erklären wir alles von den Grundlagen der Primärschlüssel in MySQL bis hin zum Setzen, zur Fehlerbehebung und zur Auswahl guter Designs. Dieser Leitfaden soll für ein breites Spektrum von Benutzern nützlich sein, von Anfängern bis zu fortgeschrittenen Anwendern.

Nach dem Lesen dieses Leitfadens können Sie:

  • Das Grundkonzept eines Primärschlüssels verstehen.
  • Einen Primärschlüssel setzen und damit verbundene Fehler beheben.
  • Einen optimalen Primärschlüssel für das Datenbankdesign auswählen.

Jetzt beginnen wir mit den Grundlagen der Primärschlüssel.

2. Was ist ein Primärschlüssel (PRIMARY KEY)?

In einer Datenbank ist ein „Primärschlüssel (PRIMARY KEY)“ einer der wichtigsten Schlüsseltypen, die in einer Tabelle verwendet werden, um Eindeutigkeit zu garantieren. Ein Primärschlüssel fungiert als Identifikator für Daten und identifiziert jede Zeile eindeutig.

Eigenschaften eines Primärschlüssels

  1. Garantiert Eindeutigkeit Werte in der/den Spalte(n), die als Primärschlüssel festgelegt sind, dürfen in der Tabelle nicht dupliziert werden.
  2. NULL‑Werte sind nicht erlaubt Ein Primärschlüssel muss immer einen Wert besitzen und lässt keine NULL‑Werte zu.
  3. Nur einer pro Tabelle Jede Tabelle kann nur einen Primärschlüssel haben; mehrere Primärschlüssel sind nicht zulässig. Sie können jedoch einen „zusammengesetzten Primärschlüssel“ erstellen, indem Sie mehrere Spalten zu einem einzigen Primärschlüssel kombinieren.

Warum Sie einen Primärschlüssel benötigen

Das Setzen eines Primärschlüssels bietet Vorteile wie:

  • Sichert Datenintegrität : Verhindert das Einfügen doppelter Datensätze.
  • Effiziente Suche : Verbessert die Leistung beim Suchen, Aktualisieren und Löschen von Daten.
  • Verwaltet Beziehungen zwischen Tabellen : Ein Primärschlüssel ist der Bezugspunkt bei der Verwendung von Fremdschlüsseln.

Beispielsweise ermöglicht das Setzen von „User ID“ als Primärschlüssel in einer Tabelle, die Benutzerdaten verwaltet, die eindeutige Identifizierung jedes Benutzers.

3. Wie man einen Primärschlüssel in MySQL setzt

In MySQL können Sie einen Primärschlüssel (PRIMARY KEY) ganz einfach setzen. Im Folgenden erklären wir anhand konkreter Beispiele, wie Sie einen Primärschlüssel beim Erstellen einer neuen Tabelle festlegen und wie Sie einer bestehenden Tabelle einen Primärschlüssel hinzufügen.

Einen Primärschlüssel beim Erstellen einer neuen Tabelle setzen

Um beim Erstellen einer neuen Tabelle einen Primärschlüssel zu setzen, verwenden Sie das CREATE TABLE‑Statement. Die Spalte, die als Primärschlüssel dient, muss die Einschränkung NOT NULL besitzen.

Einfaches Beispiel

Im folgenden Beispiel erstellen wir eine Tabelle namens users und setzen die Spalte id als Primärschlüssel.

CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    PRIMARY KEY (id)
);

Erklärung:

  • Die Spalte id verwendet AUTO_INCREMENT, um automatisch fortlaufende eindeutige Werte zu erzeugen.
  • PRIMARY KEY (id) legt die Spalte id als Primärschlüssel fest.

Mehrere Spalten als Primärschlüssel setzen (zusammengesetzter Primärschlüssel)

Durch das Setzen eines zusammengesetzten Primärschlüssels können Sie die Eindeutigkeit mittels einer Kombination mehrerer Spalten garantieren.

Beispiel: Definition eines zusammengesetzten Primärschlüssels

CREATE TABLE orders (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);

Erklärung:

  • Die Kombination aus order_id und product_id wird als Primärschlüssel definiert.
  • Auch bei gleichem order_id können Sie Datensätze mit unterschiedlichen product_id‑Werten anlegen.

Wie man einer bestehenden Tabelle einen Primärschlüssel hinzufügt

Um einer bereits bestehenden Tabelle später einen Primärschlüssel hinzuzufügen, verwenden Sie das ALTER TABLE‑Statement.

Beispiel: Einen Primärschlüssel für eine einzelne Spalte hinzufügen

Im Folgenden ein Beispiel, wie Sie der bestehenden Tabelle users die Spalte id als Primärschlüssel hinzufügen.

ALTER TABLE users ADD PRIMARY KEY (id);

Beispiel: Einen zusammengesetzten Primärschlüssel hinzufügen

Der gleiche Ansatz funktioniert, wenn Sie einen Primärschlüssel mittels einer Kombination mehrerer Spalten festlegen.

ALTER TABLE orders ADD PRIMARY KEY (order_id, product_id);

Wie man einen Primärschlüssel entfernt

Um einen Primärschlüssel zu entfernen, verwenden Sie die ALTER TABLE‑Anweisung wie unten gezeigt.

ALTER TABLE users DROP PRIMARY KEY;

Hinweis:

  • Das Entfernen eines Primärschlüssels löscht auch den darauf basierenden Index, daher sollten Sie vorsichtig vorgehen.

Verwendung von AUTO_INCREMENT

Eine häufig genutzte Funktion in Kombination mit Primärschlüsseln ist AUTO_INCREMENT. Mit dieser Einstellung erhöht sich der Wert bei jedem Einfügen von Daten automatisch.

Beispiel: Primärschlüssel mit AUTO_INCREMENT

CREATE TABLE customers (
    customer_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100),
    PRIMARY KEY (customer_id)
);

4. Verwendung zusammengesetzter Primärschlüssel

Ein zusammengesetzter Primärschlüssel ist eine Methode, mehrere Spalten zu einem einzigen Primärschlüssel zu kombinieren, um Daten‑Eindeutigkeit zu gewährleisten. Er ist besonders nützlich, wenn eine einzelne Spalte keine Eindeutigkeit garantieren kann oder wenn Daten anhand spezifischer Geschäftsregeln identifiziert werden müssen.

Grundkonzept eines zusammengesetzten Primärschlüssels

Mit einem zusammengesetzten Primärschlüssel können Sie garantieren, dass die Kombination von Werten aus zwei oder mehr Spalten eindeutig ist. Zum Beispiel ermöglicht die Kombination von Bestell‑ID (order_id) und Produkt‑ID (product_id) in einer Tabelle, die Bestelldaten verwaltet, jedes Produkt innerhalb einer Bestellung eindeutig zu identifizieren.

Wie man einen zusammengesetzten Primärschlüssel festlegt

Festlegen beim Erstellen einer neuen Tabelle

Unten finden Sie ein Beispiel für das Festlegen eines zusammengesetzten Primärschlüssels in der Tabelle orders.

CREATE TABLE orders (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);

Erklärung:

  • order_id und product_id werden gemeinsam als Primärschlüssel angegeben.
  • Selbst wenn order_id gleich ist, können Datensätze mit unterschiedlichen product_id‑Werten eingefügt werden.

Hinzufügen eines zusammengesetzten Primärschlüssels zu einer bestehenden Tabelle

Um einer bestehenden Tabelle einen zusammengesetzten Primärschlüssel hinzuzufügen, verwenden Sie die ALTER TABLE‑Anweisung wie folgt.

ALTER TABLE orders ADD PRIMARY KEY (order_id, product_id);

Vorteile zusammengesetzter Primärschlüssel

  1. Garantiert Eindeutigkeit
  • Sie können die Eindeutigkeit durch Kombinieren mehrerer Spalten aufrechterhalten.
  1. Entspricht Geschäftsregeln
  • Zum Beispiel kann bei der Verwaltung von Bestellinformationen order_id allein keine Eindeutigkeit garantieren, aber die Kombination von order_id und product_id kann die Datenintegrität wahren.
  1. Vereinfacht die Datenverwaltung
  • Die Verwendung eines zusammengesetzten Primärschlüssels hilft, doppelte Daten zu vermeiden und die Struktur einfach zu halten.

Zu beachtende Punkte bei zusammengesetzten Primärschlüsseln

  1. Leistungseinfluss
  • Da zusammengesetzte Primärschlüssel bei Suchen und Einfügungen mehrere Spalten vergleichen, können sie kostenintensiver sein als einspaltige Primärschlüssel. Dies ist besonders in großen Datenbanken wichtig.
  1. Einschränkungen bei der Indexnutzung
  • Wenn ein zusammengesetzter Primärschlüssel festgelegt ist, deckt der automatisch erzeugte Index mehrere Spalten ab. Möchten Sie einzelne Spalten indexieren, müssen Sie separate Indizes erstellen.
  1. Komplexeres Design
  • Das Kombinieren mehrerer Spalten kann das Design komplexer machen. Die Auswahl geeigneter Spalten ist entscheidend.

Wann Sie zusammengesetzte Primärschlüssel verwenden sollten

  • Wenn Eindeutigkeit durch mehrere Bedingungen verwaltet werden muss Beispiel: Bestell‑ID und Produkt‑ID, oder Projekt‑ID und Aufgaben‑ID.
  • Wenn eine einzelne Spalte keine Eindeutigkeit garantieren kann Beispiel: Wenn ein Kunde mehrere Produkte kaufen kann, kombinieren Sie Kunden‑ID und Kaufdatum, um die Eindeutigkeit zu verwalten.

5. Unterschiede zwischen Primärschlüsseln und Indizes

Primärschlüssel (PRIMARY KEY) und Indizes (INDEX) sind beide wichtige Konzepte in MySQL, aber ihre Rollen und Zwecke unterscheiden sich. Dieser Abschnitt erklärt die Unterschiede zwischen Primärschlüsseln und Indizes und wie man sie korrekt verwendet.

Merkmale eines Primärschlüssels (PRIMARY KEY)

  1. Garantiert Eindeutigkeit
  • Ein Primärschlüssel identifiziert jede Zeile in einer Tabelle eindeutig.
  • Er erlaubt keine Duplikate oder NULL‑Werte.
  1. Sichert Datenintegrität
  • Das Setzen eines Primärschlüssels hilft, die Tabellenkonsistenz und Datenintegrität aufrechtzuerhalten.
  1. Ein Index wird automatisch erstellt
  • Wenn Sie einen Primärschlüssel setzen, wird ein Index automatisch erstellt, was die Leistung für Suchen und Datenoperationen verbessert.

Beispiel für einen Primärschlüssel

Unten ist ein Beispiel, in dem die Spalte id als Primärschlüssel gesetzt wird.

CREATE TABLE users (
    id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(50),
    PRIMARY KEY (id)
);

Eigenschaften eines Indexes (INDEX)

  1. Verbessert die Suchgeschwindigkeit
  • Indizes beschleunigen Datensuchen und Abfrageausführungen.
  1. Garantieren keine Eindeutigkeit
  • Ein normaler Index garantiert keine Eindeutigkeit (ein UNIQUE-Index jedoch schon).
  1. Kann auf jeder Spalte gesetzt werden
  • Sie können Indizes auf Spalten außer dem Primärschlüssel erstellen, um spezifische Abfragen zu optimieren.

Beispiel für einen Index

Unten ist ein Beispiel für das Hinzufügen eines Indexes zur Spalte username.

CREATE INDEX idx_username ON users (username);

Primärschlüssel vs. Index

FeaturePrimary Key (PRIMARY KEY)Index (INDEX)
Guarantees uniqueness?YesUsually no (except UNIQUE indexes)
Allows NULL values?NoYes
Automatically created?An index is automatically created when a primary key is setMust be created manually
How many can be set?One per tableMultiple per table

Beziehung zwischen Primärschlüsseln und Indizes

  • Ein Primärschlüssel hat automatisch einen Index Wenn Sie einen Primärschlüssel setzen, wird ein eindeutiger Index automatisch erstellt. Das bedeutet, dass die Primärschlüsselspalte schnell durchsucht werden kann.
  • Sie können auch Nicht-Primärschlüsselspalten indizieren Das Hinzufügen von Indizes zu Spalten außer dem Primärschlüssel kann die Leistung für spezifische Abfragen verbessern.

Beispiel: Verwendung eines Primärschlüssels und eines Indexes

Im folgenden Beispiel werden ein Primärschlüssel und ein Index auf verschiedenen Spalten gesetzt.

CREATE TABLE products (
    product_id INT NOT NULL AUTO_INCREMENT,
    product_name VARCHAR(100),
    category_id INT,
    PRIMARY KEY (product_id),
    INDEX idx_category (category_id)
);

Erklärung:

  • product_id ist der Primärschlüssel, der Eindeutigkeit garantiert und NULL-Werte verbietet.
  • Ein Index wird auf category_id gesetzt, um kategoriebasierten Produktsuchen zu beschleunigen.

Wie man zwischen Primärschlüsseln und Indizes entscheidet

  1. Auswahl eines Primärschlüssels
  • Setzen Sie den Primärschlüssel auf eine Spalte, die die Daten eindeutig identifiziert.
  • Jede Tabelle sollte genau einen Primärschlüssel haben.
  1. Verwendung von Indizes
  • Fügen Sie Indizes zu häufig durchsuchten Spalten außer dem Primärschlüssel hinzu.
  • Beispiel: Spalten, die oft in Abfragen verwendet werden, wie username oder email .
  1. Hinweise
  • Zu viele Indizes können die Leistung für Einfügungen und Updates reduzieren. Es wird empfohlen, nur die notwendigen Indizes zu setzen.

6. Wichtige Hinweise zu Primärschlüsseln

Primärschlüssel (PRIMARY KEY) spielen eine entscheidende Rolle im Datenbankdesign, aber wenn sie nicht korrekt gestaltet und verwaltet werden, können Leistungs- und Integritätsprobleme auftreten. Dieser Abschnitt erklärt wichtige Überlegungen und Best Practices für Primärschlüssel.

Hinweise zum Löschen oder Ändern eines Primärschlüssels

Wie man einen Primärschlüssel löscht

Um einen Primärschlüssel zu löschen, verwenden Sie die ALTER TABLE-Anweisung.

ALTER TABLE users DROP PRIMARY KEY;

Hinweise:

  1. Das Löschen eines Primärschlüssels löscht auch den darauf basierenden Index.
  2. Wenn Fremdschlüsselbeschränkungen vom Primärschlüssel abhängen, schlägt die Löschoperation fehl. Sie müssen die Fremdschlüsselbeschränkungen im Voraus entfernen.

Wie man einen Primärschlüssel ändert

Um einen bestehenden Primärschlüssel zu ändern, folgen Sie diesen Schritten:

  1. Löschen Sie den aktuellen Primärschlüssel.
  2. Fügen Sie den neuen Primärschlüssel hinzu.

Beispiel:

ALTER TABLE users DROP PRIMARY KEY;
ALTER TABLE users ADD PRIMARY KEY (username);

Überlegungen bei der Auswahl eines Primärschlüssels

  1. Wählen Sie die richtige Spalte
  • Wählen Sie eine Spalte aus, die Eindeutigkeit für den Primärschlüssel garantieren kann.
  • Gängige Optionen umfassen: wp:list /wp:list

    • Ein numerischer Typ mit Auto-Increment (AUTO_INCREMENT) (Beispiel: id )
    • Ein natürlicher Schlüssel (Beispiel: Mitarbeiternummer oder Produktcode)
  1. Vermeiden Sie Spalten, die sich häufig ändern
  • Häufige Updates des Primärschlüsselwerts können die Leistung negativ beeinflussen.
  1. Vermeiden Sie lange Strings
  • Die Verwendung langer Zeichenketten (Beispiel: ein 200‑Zeichen‑String‑Typ) als Primärschlüssel verringert die Effizienz bei Suchen und Vorgängen.
  1. Vermeiden Sie Spalten, die NULL enthalten können
  • Da Primärschlüssel keine NULL‑Werte zulassen, müssen Sie eine Spalte wählen, die immer einen Wert hat.

Häufige Fehler beim Festlegen eines Primärschlüssels und wie man sie behebt

  1. Fehler: ERROR 1068 (42000): Multiple primary key defined
  • Ursache : wp:list /wp:list
    • Tritt auf, wenn Sie versuchen, mehrere Primärschlüssel zu definieren.
  • Lösung : wp:list /wp:list
    • Entfernen Sie die doppelte Primärschlüsseldefinition. sql ALTER TABLE users DROP PRIMARY KEY; ALTER TABLE users ADD PRIMARY KEY (id);
  1. Fehler: ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
  • Ursache : wp:list /wp:list
    • Tritt auf, wenn eine Fremdschlüssel‑Constraint nicht mit dem Primärschlüssel übereinstimmt.
  • Lösung : wp:list /wp:list
    • Stellen Sie sicher, dass Datentypen und Constraints zwischen Primärschlüssel und Fremdschlüssel konsistent sind.
  1. Fehler: ERROR 1265 (01000): Data truncated for column
  • Ursache : wp:list /wp:list
    • Tritt auf, wenn die Daten für den Primärschlüssel den erwarteten Typ oder die erwartete Länge überschreiten.
  • Lösung : wp:list /wp:list
    • Ändern Sie den Datentyp der Primärschlüsselspalte entsprechend oder korrigieren Sie die eingefügten Daten.

Best Practices beim Festlegen eines Primärschlüssels

  1. Bevorzugen Sie eine einzelne Spalte
  • Die Verwendung eines einspaltigen Primärschlüssels (Beispiel: ein numerischer Typ mit AUTO_INCREMENT) ermöglicht ein einfaches und effizientes Design.
  1. Verwenden Sie zusammengesetzte Primärschlüssel angemessen
  • Wenn mehrere Spalten kombiniert werden, halten Sie die Anzahl der Spalten auf das notwendige Minimum.
  1. Optimieren Sie den Datentyp der Primärschlüsselspalte
  • Wählen Sie numerische Typen (Beispiel: INT) oder kurze Zeichenketten (Beispiel: VARCHAR(50)) zur Leistungsverbesserung.
  1. Stellen Sie Datenkonsistenz sicher
  • Um Einzigartigkeit und Integrität zu wahren, implementieren Sie geeignete Eingabevalidierungen für Primärschlüsselwerte.

7. Best Practices für das Design von Primärschlüsseln

Im Datenbankdesign wirkt sich die korrekte Gestaltung eines Primärschlüssels (PRIMARY KEY) direkt auf Datenkonsistenz und Leistung aus. Dieser Abschnitt erklärt bewährte Methoden für ein effektives Design von Primärschlüsseln.

Natürlicher Schlüssel vs. Surrogatschlüssel: Was sollten Sie wählen?

Was ist ein natürlicher Schlüssel?

Ein natürlicher Schlüssel verwendet vorhandene Geschäftsdaten als Primärschlüssel.
Beispiele: Mitarbeiternummer, Produktcode, E‑Mail‑Adresse.

Vorteile:

  • Die Bedeutung der Daten ist intuitiv.
  • Es passt gut zu bestehenden Systemen und Geschäftsregeln.

Nachteile:

  • Wenn es lange Zeichenketten oder häufig wechselnde Werte enthält, kann dies die Leistung beeinträchtigen.
  • Es besteht das Risiko von doppelten Daten.

Was ist ein Surrogatschlüssel?

Ein Surrogatschlüssel ist ein eindeutiger Bezeichner, der innerhalb der Datenbank erzeugt wird.
Beispiel: eine numerische ID mit AUTO_INCREMENT.

Vorteile:

  • Die Eindeutigkeit ist stets gewährleistet.
  • Suchen und Aktualisieren sind effizient.
  • Es besteht kein Risiko, dass sich der Wert ändert.

Nachteile:

  • Da der Wert keine menschliche Bedeutung hat, hilft er nicht bei der Interpretation der Daten.

Was sollten Sie wählen?

  • Surrogatschlüssel werden empfohlen : In den meisten Fällen ist die Verwendung eines Surrogatschlüssels (Beispiel: eine numerische ID mit AUTO_INCREMENT) am besten.
  • Wann ein natürlicher Schlüssel gewählt werden sollte : Nur wenn Geschäftsregeln dies erfordern und die Datenintegrität gewährleistet ist.

Leistungsoptimierung für Primärschlüssel

  1. Verwenden Sie numerische Typen
  • Die Verwendung numerischer Typen wie INT oder BIGINT für Primärschlüssel beschleunigt Suchen und Vergleiche.
  • Beispiel: sql CREATE TABLE customers ( customer_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100), PRIMARY KEY (customer_id) );
  1. Halten Sie es so klein wie möglich
  • Ein kleiner Primärschlüssel reduziert den Speicherverbrauch und verbessert die Indexleistung.
  • Die Verwendung von INT (4 Bytes) ist üblich, und BIGINT (8 Bytes) wird in der Regel nur für sehr große Datensätze benötigt.
  1. Vermeiden Sie das Aktualisieren von Primärschlüsseln
  • Das Aktualisieren eines Primärschlüssels kann auch zu Aktualisierungen verwandter Indizes und Fremdschlüssel‑Constraints führen, was zu erheblichen Leistungseinbußen führen kann.

Entwerfen von Primärschlüsseln und Fremdschlüsseln

  • Primärschlüssel werden häufig als Referenzziel für Fremdschlüssel (FOREIGN KEY) verwendet. Daher sind die Eindeutigkeit und Integrität von Primärschlüsseln entscheidend beim Entwerfen von Fremdschlüssel‑Constraints.

Beispiel: Entwerfen von Primärschlüsseln und Fremdschlüsseln

CREATE TABLE customers (
    customer_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100),
    PRIMARY KEY (customer_id)
);

CREATE TABLE orders (
    order_id INT NOT NULL AUTO_INCREMENT,
    customer_id INT NOT NULL,
    order_date DATE,
    PRIMARY KEY (order_id),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

Erklärung:

  • Die Spalte customer_id in der Tabelle orders verweist auf die Spalte customer_id in der Tabelle customers.
  • Wenn die Integrität des Primärschlüssels nicht gewährleistet ist, kann der Fremdschlüssel‑Constraint Fehler auslösen.

Checkliste für das Design von Primärschlüsseln

  1. Garantiert der Primärschlüssel Eindeutigkeit?
  2. Vermeiden Sie lange Zeichenketten oder häufig ändernde Spalten als Primärschlüssel?
  3. Haben Sie in Betracht gezogen, ob ein Surrogatschlüssel geeigneter ist als ein natürlicher Schlüssel?
  4. Ist der Datentyp der Primärschlüsselspalte passend (z. B. INT oder BIGINT )?
  5. Wenn Sie einen zusammengesetzten Primärschlüssel verwenden, halten Sie die Anzahl der Spalten auf ein Minimum?

Ein korrektes Design von Primärschlüsseln verbessert die Datenbankleistung und bewahrt die Datenintegrität. Im nächsten Abschnitt beantworten wir häufige Leserfragen in „8. FAQ (Häufig gestellte Fragen).”

8. FAQ (Häufig gestellte Fragen)

Hier beantworten wir häufige Fragen zu MySQL‑Primärschlüsseln (PRIMARY KEY). Wir erklären Punkte, die Anfänger bis Fortgeschrittene oft beschäftigen, auf leicht verständliche Weise.

Was ist der Unterschied zwischen einem Primärschlüssel und einem Unique‑Key?

Primärschlüssel (PRIMARY KEY):

  • Identifiziert jede Zeile eindeutig.
  • Pro Tabelle kann nur einer festgelegt werden.
  • Erlaubt keine NULL‑Werte.

Unique‑Key (UNIQUE KEY):

  • Hält Werte pro Zeile eindeutig, jedoch können mehrere Unique‑Keys pro Tabelle definiert werden.
  • Erlaubt NULL‑Werte (wobei NULL als eindeutiger Wert behandelt wird).

Beispiel:

CREATE TABLE example (
    id INT NOT NULL AUTO_INCREMENT,
    email VARCHAR(100) UNIQUE,
    username VARCHAR(50),
    PRIMARY KEY (id)
);
  • Die Spalte id ist der Primärschlüssel.
  • Die Spalte email ist ein Unique‑Key.

Was passiert, wenn Sie keinen Primärschlüssel festlegen?

Wenn Sie keinen Primärschlüssel festlegen:

  1. Sie können die Eindeutigkeit der Daten nicht garantieren.
  2. Sie können keine Fremdschlüssel‑Constraints setzen.
  3. Suchen und Arbeiten mit Tabellendaten kann ineffizient werden.

Empfehlung:

  • Es wird empfohlen, in jeder Tabelle einen Primärschlüssel zu setzen.

Wann sollten Sie einen zusammengesetzten Primärschlüssel verwenden?

Verwenden Sie einen zusammengesetzten Primärschlüssel, wenn Sie die Eindeutigkeit durch die Kombination mehrerer Spalten sicherstellen müssen.

Beispiel:

  • Beim Verwalten von Bestelldaten stellen Sie die Eindeutigkeit durch die Kombination von order_id und product_id sicher.
    CREATE TABLE orders (
        order_id INT,
        product_id INT,
        quantity INT,
        PRIMARY KEY (order_id, product_id)
    );
    

Hinweis:

  • Da zusammengesetzte Primärschlüssel das Design komplexer machen können, sollten Sie sie sorgfältig abwägen.

Ist AUTO_INCREMENT erforderlich?

Es ist nicht zwingend erforderlich, aber in folgenden Situationen nützlich:

  • Wenn Sie Werte für die Primärschlüsselspalte automatisch generieren möchten.
  • Wenn Sie einen numerischen Primärschlüssel benötigen, der Eindeutigkeit garantiert.

Beispiel:

CREATE TABLE users (
    user_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100),
    PRIMARY KEY (user_id)
);

Wie können Sie einen Primärschlüsselwert ändern?

Sie können einen Primärschlüsselwert direkt ändern, beachten Sie jedoch Folgendes:

  1. Wenn Fremdschlüssel‑Constraints existieren, können verwandte Daten betroffen sein.
  2. Aktualisierungskosten können hoch sein und die Leistung beeinträchtigen.

Beispiel:

UPDATE users SET user_id = 10 WHERE user_id = 1;

Wie wirkt sich ein Primärschlüssel auf die Leistung aus?

Vorteil:

  • Ein Primärschlüssel hat automatisch einen Index, der die Suche und Sortierung beschleunigt.

Hinweis:

  • Wenn der Datentyp oder die Länge des Primärschlüssels nicht geeignet ist, kann die Leistung sinken.

Welcher Datentyp ist am besten für einen Primärschlüssel?

  • Numerische Typen (INT oder BIGINT) werden am meisten empfohlen.
  • Sie sind kompakt und schnell für die Suche.
  • Sie können mit Auto-Inkrement (AUTO_INCREMENT) verwendet werden.
  • Bei Verwendung von Zeichenketten wird VARCHAR empfohlen, wobei es wichtig ist, sie kurz zu halten.

Können Sie mehrere Primärschlüssel festlegen?

Eine Tabelle kann nur einen Primärschlüssel haben. Sie können jedoch einen zusammengesetzten Primärschlüssel erstellen, indem Sie mehrere Spalten kombinieren.

Was sollten Sie tun, wenn beim Löschen oder Ändern eines Primärschlüssels Fehler auftreten?

Häufiger Fehler:

  • Sie können einen Primärschlüssel nicht löschen oder ändern, weil Fremdschlüsselbeschränkungen bestehen.

Lösung:

  1. Entfernen Sie die Fremdschlüsselbeschränkung.
  2. Ändern Sie den Primärschlüssel und fügen Sie die Fremdschlüsselbeschränkung anschließend wieder hinzu.

Beispiel:

ALTER TABLE orders DROP FOREIGN KEY fk_customer_id;
ALTER TABLE orders DROP PRIMARY KEY;
ALTER TABLE orders ADD PRIMARY KEY (new_id);

9. Fazit

In diesem Artikel haben wir MySQL-Primärschlüssel (PRIMARY KEY) ausführlich erklärt – von den Grundlagen und Einrichtungsmethoden bis hin zu wichtigen Überlegungen, bewährten Praktiken und häufig gestellten Fragen. Ein Primärschlüssel ist essenziell im Datenbankdesign, und seine korrekte Festlegung wirkt sich stark auf Daten-Eindeutigkeit und Leistung aus.

Überprüfung der Bedeutung von Primärschlüsseln

  1. Garantiert Daten-Eindeutigkeit Ein Primärschlüssel identifiziert jede Zeile in einer Tabelle eindeutig und verhindert doppelte Daten.
  2. Verbessert die Effizienz bei Suche und Operationen Da ein Primärschlüssel automatisch einen Index hat, werden Suchen und Datenoperationen schneller.
  3. Grundlage für Fremdschlüsselbeschränkungen Das Festlegen eines Primärschlüssels ermöglicht das Integritätsmanagement mittels Fremdschlüsselbeschränkungen.

Wichtige Designpunkte

  • Wählen Sie eine geeignete Spalte für den Primärschlüssel Es ist wichtig, einen Primärschlüssel auf einer Spalte zu setzen, die Eindeutigkeit garantiert und sich nicht häufig ändert.
  • Verwenden Sie zusammengesetzte Primärschlüssel mit Bedacht Verwenden Sie zusammengesetzte Primärschlüssel nur bei Bedarf und vermeiden Sie ein zu komplexes Design.
  • Wählen Sie einen geeigneten Datentyp Die Verwendung numerischer Typen wie INT oder BIGINT trägt zu einer effizienten Leistung bei.

Nächste Themen zum Lernen

Wenn Sie Ihr Verständnis von Primärschlüsseln vertiefen, ermöglicht das Erlernen der folgenden Themen ein noch effektiveres Datenbankdesign:

  1. Festlegen von Fremdschlüsseln (FOREIGN KEY) Lernen Sie, wie Sie Beziehungen zwischen Daten aufbauen und die Integrität wahren.
  2. Indexoptimierung Erfahren Sie Techniken zur Verbesserung der Abfrageleistung durch Hinzufügen von Indizes zu Nicht-Primärschlüssel-Spalten.
  3. Normalisierung und Denormalisierung Lernen Sie die Grundlagen des Datenbankdesigns wie die Normalisierung und berücksichtigen Sie die Denormalisierung für die Leistung.

Abschließende Anmerkung

Das korrekte Design von MySQL-Primärschlüsseln ist ein erster Schritt zur Verbesserung der Effizienz und Zuverlässigkeit Ihrer gesamten Datenbank. Nutzen Sie diesen Artikel als Referenz, um Ihre Fähigkeiten beim Festlegen und Verwalten geeigneter Primärschlüssel auszubauen. Mit einem soliden Primärschlüssel-Design werden Datenbankentwicklung und -betrieb reibungsloser, was die Gesamtproduktivität steigern kann.

Damit ist der Artikel zu Ende. Nutzen Sie ihn als Leitfaden und versuchen Sie, effektive Primärschlüssel in realen Projekten zu entwerfen.