Problem mit NULL bei einem Foreign Key?

... komplette Frage anzeigen

2 Antworten

Du musst unterscheiden zwischen zwei Dingen:

Der Primary Key in der einen Tabelle ist natürlich NOT NULL (sonst wäre es nicht eindeutig)

Der Foreign Key in der anderen Tabelle kann NULL-able definiert sein (kann also leer bleiben). Sofern Du aber einen Wert im Foreign key einträgst, muss dieser Wert auch in der Primary Tabelle zu finden sein.

Wenn in der Foreign Key Tabelle das Foreign Key Feld als NOT NULL definiert ist, musst Du natürlich auch immer etwas eintragen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von wotan38
05.02.2016, 13:16

Es stehen beim Festlegen einer referentiellen Integrität drei Optionen zur Wahl:

delete restrict > Löschen nicht erlaubt, für jeden Fremdschlüssel muss der dazu passende Primärschlüssel vorhanden sein.

delete cascade > Löschen ist erlaubt, zur Einhaltung der Intergität werden alle sich darauf beziehende Sätze mitgelöscht (Beispiel: Wenn in der Kundentabelle eine Kunde gelöscht wird, werden auch seine Aufträge und Rechnungen mitgelöscht. Man muss diese nicht vorher erst löschen, damit man den Kunden entfernen kann).

delete not null > Löschen ist erlaubt, der dadurch störende Fremdschlüssel wird auf null gesetzt (Beispiel: Rechnungen bleiben auch ohne den Kunden erhalten, vielleicht für die Bilanz). 

Es gibt für alle drei Optionen eine sinnvolle Anwendung. Man muss beim Datenbankdesign entscheiden, welche zur Aufgabenstellung passt.

0

Verstehe ich das richtig? Du hast eine Relation in der TechnikerNr steht und eine andere Relation Techniker?

Soweit ich weiß ist durch das "REFERENCES" ein Nullwert möglich, denn du hast keine cascadierende Löschbedingung...

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?