Zum Inhalt
Alle Apps

Schlüssel zur Wohnung: Primär- und Fremdschlüssel

Über diese App

Jede Zeile von tools ist eine Wohnung, id ihr Schlüssel: eindeutig und nie leer, sonst UNIQUE bzw. NOT NULL constraint failed. products.tool zeigt als Fremdschlüssel in die fremde Tabelle, Schlüssel 2 öffnet für round die Tür zu beta. Löscht die Werkstatt Werkzeug 2, zeigen zwei Verweise ins Leere wie ein toter Link; mit deklariertem Fremdschlüssel lehnt die Datenbank ab: FOREIGN KEY constraint failed.

Mit Erklärmodus: Ein KI-Tutor führt dich durch die App, zeigt in der Szene, worauf es ankommt, und beantwortet deine Fragen.

Primärschlüssel: eindeutig und nie leer

Ein Primärschlüssel ist die Spalte, über die jede Zeile einer Tabelle genau einmal erreichbar ist, etwa id in tools. Er muss zwei Bedingungen erfüllen: Er ist eindeutig, zwei Zeilen mit id 1 gehen nicht, und er ist nie leer, eine Zeile ohne id ist nicht erlaubt. SQLite meldet die Verstöße als UNIQUE constraint failed: tools.id und NOT NULL constraint failed: tools.id. Ein Fremdschlüssel speichert in einer anderen Tabelle den Primärschlüssel einer Zeile, products.tool zeigt so auf tools.id.

Was die App zeigt

Jede Zeile von tools ist eine Wohnung mit Tür und Nummer, der Wert in id ihr Schlüssel. Schlüssel 1, 2 und 3 öffnen ihre Türen; eine zweite Zeile mit id 1 und eine Zeile mit NULL werden mit der echten Meldung von SQLite abgewiesen. Danach zeigen die Verweise round → 2, square → 1 und triangle → 2 von products nach tools, und Schlüssel 2 öffnet Tür 2: round | beta. Zum Schluss wird Werkzeug 2 gelöscht, zwei Verweise zeigen ins Leere, mit deklariertem Fremdschlüssel lehnt die Datenbank ab.

Selbst ausprobieren

Wähle eine der drei Szenen Wohnung, Fremdschlüssel und Löschen und geh die Schritte durch. Probiere die doppelte id und die leere id aus, folge dem Schlüssel von round zu seinem Werkzeug und lösche Werkzeug 2 einmal ohne und einmal mit Fremdschlüssel. Die Zahlen im Panel zeigen Zeilen, offene Tür, Verweise und Verweise ins Leere.

Häufige Fragen

Was ist der Unterschied zwischen Primärschlüssel und Fremdschlüssel?
Der Primärschlüssel identifiziert jede Zeile der eigenen Tabelle eindeutig und ist nie NULL. Ein Fremdschlüssel ist eine Spalte in einer anderen Tabelle, die Werte dieses Primärschlüssels speichert und so auf eine Zeile verweist. Mehrere Zeilen dürfen denselben Fremdschlüsselwert haben.
Was bedeutet FOREIGN KEY constraint failed?
Die Datenbank hat eine Änderung abgelehnt, weil danach ein Verweis ins Leere zeigen würde, zum Beispiel beim Löschen einer Zeile, auf die noch ein Fremdschlüssel zeigt. Das prüft sie nur, wenn der Fremdschlüssel deklariert ist; in SQLite muss außerdem PRAGMA foreign_keys = ON gesetzt sein.
Darf ein Primärschlüssel NULL sein?
Nach SQL-Standard nein, ein Primärschlüssel ist immer NOT NULL. SQLite erlaubt aus historischen Gründen NULL in manchen Primärschlüsseln, wenn not null fehlt; bei integer primary key vergibt SQLite für NULL selbst die nächste Nummer.
Was kann ich in der App ausprobieren?
Drei Szenen mit Schritten: Schlüssel öffnen Türen in tools, eine doppelte und eine leere id werden abgewiesen, ein Schlüssel wandert von products nach tools, und Werkzeug 2 wird mit und ohne Fremdschlüssel gelöscht. Ein Erklärmodus führt durch alles.

Fach: Informatik

Mehr aus Informatik

Eine VisuApp von heyprof: interaktiv, kostenlos im Browser, ohne Anmeldung. Was ist eine VisuApp? · Alle Apps