2 allgemeine Fragen zu Tutorium 6 und Übung 6

Florian J.
Erstie
Erstie
Beiträge: 15
Registriert: 10. Apr 2010 10:48

2 allgemeine Fragen zu Tutorium 6 und Übung 6

Beitrag von Florian J. »

Hallo ich habe zwei Fragen zu Übung und Tutorium 6.

1) in Tutorium 6 Aufgabe 6.2) a) steht bei CREATE TABLE Bestellposten "CONSTRAINT fk_ProduktName" ist ein optionaler Parameter.
Wenn ich es also bei der Tabellen-Definition weglasse müsste ich doch folgendes schreiben können:

FOREIGN KEY(Name) REFERENCES Produkt (Name)

Kann ich dann bei Aufgabe 6.2) b) auch korrekterweise das so schreiben:

ALTER TABLE Bestellposten ADD FOREIGN KEY(Name) REFERENCES Produkt(Name)

?


2) Die Verwendung der "NOT NULL" Operators verwirrt mich ein wenig. Im Tutorium 6 wurde sie bei jeder Tabellendefinition immer angewendet.
In der Übung 6 dagegen gar nicht mehr. Wie wäre es denn nun wünschenswert? - Ich hätte jetzt gedacht, dass zumindest bei den Primary Key Werten NOT NULL dabei stehen sollte, aber im Skript stand ja auch
das es bei diesen Parametern von SQL zwingend vorausgesetzt wird (d.h. sobald sie im PRIMARY KEY enthalten sind). Muss ich das dann also dann auch nicht unbedingt hinschreiben ?

Vielen Dank für die Hilfe.
Grüße Florian

TobiasF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 203
Registriert: 18. Apr 2011 11:57

Re: 2 allgemeine Fragen zu Tutorium 6 und Übung 6

Beitrag von TobiasF »

zu 1)
Das sollte so gehen, ich habe es jetzt aber nicht direkt ausprobiert. Kannst du aber selber ausprobieren: PostgreSQL (oder anderes DBMS) runterladen, installieren und Befehle eingeben.

zu 2)
SQL ist deklarativ, d.h. man beschreibt nur, was man möchte.
Wie du schon richtig gesagt hast, impliziert PRIMARY KEY ein NOT NULL. D.h. bei PRIMARY KEY macht es einfach keinen Unterschied, ob ich NOT NULL nochmal dazu schreibe (ändert sich ja nix).

okna
Neuling
Neuling
Beiträge: 8
Registriert: 29. Aug 2014 13:22

Re: 2 allgemeine Fragen zu Tutorium 6 und Übung 6

Beitrag von okna »

Hallo Flo,

die Verwendung von CONSTRAINT fk_beliebiger_name hat den Vorteil, dass du diesen CONSTRAINT auch wieder löschen kannst. Wenn du einen Foreign Key anlegst wird das intern immer als Constraint gemacht und es wird auch immer ein zufälliger Name für diesen Constraint angelegt. Willst du den Fremdschlüssel jetzt wieder löschen (könnte ja in der nächsten Aufgabe gefordert sein), gibt es zwei Möglichkeiten:
a) Du hast ihn selbst als CONSTRAINT mit einem Constraint-Namen angelegt -> Du löschst einfach den Namen (siehe Übung)
b) Du hast nur einen FOREIGN KEY hinzugefügt. Dann hat das DBMS einen willkürlichen Variablennamen für den Constraint festgelegt. Du müsstest jetzt erst über die Tabellenstruktur rausfinden, wie der Namen lautet um ihn löschen zu können.

Hoffe das ist nicht zu verwirrend. Einfache Regel: Leg Fremdschlüssel als Constraint an und gib ihnen einen Namen. Macht alle späteren Operationen viel einfacher ;)

Florian J.
Erstie
Erstie
Beiträge: 15
Registriert: 10. Apr 2010 10:48

Re: 2 allgemeine Fragen zu Tutorium 6 und Übung 6

Beitrag von Florian J. »

Vielen Dank für die deutliche Klarstellung.
Dann werde ich also bei Foreign Keys Constraints verwenden.

Antworten

Zurück zu „Archiv“