Verbinden von zwei Tabellen, foreign key

Consuelo

Mitglied
Hallo, ich bin Anfaenger bei SQL und Java und habe ein Problem: ich möchte in java-code einen Befehl beschreiben und ihn an die MySQL Workbench uebergeben. Mit dem Befehl moechte ich eine Tabelle anlegen, die auch einen Fremdschlüssel enthält. Ich habe gedacht das folgende Code sollte beim Anlegen von foreign key S_id in die Tabelle4(='irgendein Name') funktionieren (S_id ist primary key in der Tabelle Standort):

[JAVA=10]
db.execute("CREATE TABLE `"+Tabelle4+"` ("+
"`I_id` INT NOT NULL AUTO_INCREMENT ,"+
"`B_bet` INT NOT NULL ,"+
"`B_Z` VARCHAR(1) NULL ,"+
"`L_lid` INT NOT NULL ,"+
"`S_id` INT NOT NULL ,"+
"PRIMARY KEY (`MatrNr`) ),"+
"FOREIGN KEY (`S_id`) references `Standort`(`S_id`);");
db.CloseDb();
[/code]
aber es tut natuerlich nicht, und sogar mehr: die Tabelle wird gar nicht angelegt. Und ich weiss nicht warum. Koennte mir bitte irgendjemand sagen was das Problem ist?
Das zweite Problem ist: Wie ist es mit den Verbindungen 1:N, N:1, N:N? Wie werden sie irgendwie in Java-Code abgebildet?
 
Leider sehe ich keine Fehlermeldungen sowohl in Eclipse als auch in MySQL Workbench.. die neue Tabelle aber auch nicht.. Ich kenne mich mit MySQL Workbench nicht so gut, es passiert halt nichts. Es werden die Tabellen, die keine foreign keys enthalten, angelegt und die mit dem foreign key nicht.
 
Ich bin kein SQL Guru, daher ist folgendes Statement mit vorsicht zu genießen, aber ich vermute, es liegt einfach daran, dass du deinen PrimaryKey falsch zugewiesen hast für die Tabelle4. Du definierst eine I_id, welche offensichtlich dein primary key sein soll, legst jedoch MatrNr (ein Feld das nicht definiert wurde?) als solchen fest. Darüber hinaus hast du eine schließende Klammer hinter deinem PrimaryKey. Die müsste ans Ende deines Statements, wenn ich mich nicht täusche.

Grüße,
ymene
 
Ja, stimmt schon, I_id soll statt MatrNr stehen.. ich habe mich nur auf primary key konzentriert. und das ist eifach ein beispiel das ich mir schnell gebastelt hab, damit die frage kuerzer ist.
 

Zurück
Oben