# Constraint was ist das?



## Mark110 (17. Jul 2008)

Ich ahbe ein Beispiel zum Fremdschlüssel erstellen:


CREATE TABLE interessen (
int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
interesse VARCHAR(50) NOT NULL,
kontakt_id INT NOT NULL,
CONSTRAINT meine_kontakte_kontakt_id_fk
FOREIGN KEY (kontakt_id)
REFERENCES meine_kontakte (kontakt_id)
);

Wieso muss da Constarint stehen? Kann man nicht auch einfach FOREIGN KEY ist xy und referenziert xy schrieben?

was bewirkt dieser erste part? nur ein name wie der schlüssel eißt?


----------



## HoaX (17. Jul 2008)

> Wieso muss da Constarint stehen?


weils so ist, was soll sonst da stehn? wieso sollte das nicht da stehn? es ist halt so definiert damit man weiß was man da vorsich hat. klar könnte man auch HUNDEKUCHEN statt "CONSTRAINTS" schreiben und statt "FOREIGN KEY" einfach "X$234A", aber dann würde sich keiner mehr auskennen am ende 



> Kann man nicht auch einfach FOREIGN KEY ist xy und referenziert xy schrieben?


vielleicht.



> was bewirkt dieser erste part? nur ein name wie der schlüssel heißt?


ja.

schau in die doku der datenbank, dann siehst du wie sie es haben will/kann


----------



## Guest (17. Jul 2008)

@TomBola
Wenn du die Übersetzung liest (Constraint) wird es vielleicht klarer.


----------



## Sergeant_Pepper (20. Jul 2008)

TomBola hat gesagt.:
			
		

> Ich ahbe ein Beispiel zum Fremdschlüssel erstellen:
> 
> 
> CREATE TABLE interessen (
> ...



Hallo Tombola,

mit welcher Datenbank arbeitest du? Ein wenig erinnert mich das an Oracle, aber da gibts - glaube ich - keine AUTO_INCREMENT-Klausel.

Bei Oracle wäre die Zeile
"CONSTRAINT meine_kontakte_kontakt_id_fk"
optional. Sie würde dort trotzdem Sinn machen, weil Oracle ohne die Constraint-Klausel selbst einen eher kryptischen Namen generiert (z.B. SYS_0087711). Dieser lässt aber keinen Rückschluss auf den Zweck des Constraints zu.
Die Bezeichnung in deinem Beispiel ist sehr aussagekräftig.
Ein anderer Nachteil der automatischen Namensvergabe ist, dass sich die Auto-Namen beim Exportieren einer Datenbank und anschließendem Importieren (z.B. auf einem anderen Rechner) verändern. Und wenn du dann vorher den Auto-Namen in einem Programm-Code verwendet hast, hast du ein Problem...

Grüße aus Hannover


----------

