Datendefinition in SQL

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Datendefinition in SQL
Warum steht da: CONSTRAINT MitarbeiterPK?

Ist ein Beispiel aus den Vorlesungsfolien.

CREATE TABLE Mitarbeiter

( PNr INT,
Vorname VARCHAR(20),
Nachname VARCHAR(30),
ANr INT NOT NULL DEFAULT 1,
Telefon INT UNIQUE,
VorgesNr INT,

CONSTRAINT MitarbeiterPK
PRIMARY KEY (PNr),
CONSTRAINT VorgesetzterFK
FOREIGN KEY (VorgesNr) REFERENCES Mitarbeiter(PNr)
ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT AbteilungFK
FOREIGN KEY (ANr) REFERENCES Abteilung(AbtNr)
ON DELETE SET DEFAULT ON UPDATE CASCADE,
…)


Das ist äquivalent zu

CREATE TABLE Mitarbeiter (
PNr INT PRIMARY KEY, […]

Das kannst du machen wie du willst. Constraints sind trotzdem wichtig für composite keys.


ich hab grad in der Musterlösung noch ne dritte Möglichkeit entdeckt:

CREATE TABLE Besitzt (
BesitzerID INT REFERENCES Besitzer(BesitzerID),
RegNr INT REFERENCES Flugzeug(RegNr),
Seit DATE,
Kaufpreis FLOAT,
PRIMARY KEY (BesitzerID, RegNr)
);

Weiß jemand ob das mit fkeys auch ohne “CONSTRAINT” und ohne nen Namen zu geben funktioniert?


So kannst dus natürlich machen:

BesitzerID INT REFERENCES Besitzer(BesitzerID),

Ist ja ein Fremdschlüssel.

Bei zusammengesetzten FKs oder PKs brauchst du aber ein Constraint.


Ich meinte eigentlich ob man zusammengestzte FOREIGN KEYs auch so definieren darf wie hier den rot markierten PRIMARY KEY, der ja auch zusammengesetzt ist und ohne das Schlüsselwort CONSTRAINT definiert wurde.


Achso, dann hab ich das misverstanden. Aber das von dir gemeinte geht meines Wissens nach auch, der einzige Unterschied zwischen PK und FK ist da eben das REFERENCES dahinter.