Startseite
Stellenmarkt
Downloads
Kontakt
  Community Center:   Forum  |  Gruppen  |  Chat  |

Zurück   Forum Fachinformatiker.de > Fachliches > Datenbanken



Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24.02.2010, 21:14   #46
Reg.-Benutzer
 
Reg.-Datum: 24.02.2010
Standard

Ja! Und zwar in der Link-Tabelle (z.B. Link.D_ID oder Link.Dokument als int). D.h. also, du 'nimmst' dir den Primärschlüssel der betreffenden Tabelle (hier Dokument.D_ID) und 'verwendest' ihn in der anderen Tabelle (Link) als Fremdschlüssel, indem du ihn dort als Spalte anlegst (beide Datentypen müssen übereinstimmen!). Und dann kannst du noch eine CONSTRAINT für Link definieren, die sicherstellt, dass wenn du einen Wert in Link.D_ID reinschreibst, dieser auch in Dokument.D_ID existiert. Aber du kannst kein AUTO_INCREMENT für den Fremdschlüssel verwenden! Und wenn du jut bist, sachste mir noch kurz warum ...
karl-heinz ist offline   Mit Zitat antworten
Alt 24.02.2010, 21:17   #47
Reg.-Benutzer
 
Reg.-Datum: 24.02.2010
Standard

Zitat:
Code:
CREATE DATABASE Beispiel; 
USE Beispiel;

CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
Nickname VARCHAR(25) NOT NULL);

CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname VARCHAR(25) NOT NULL,
D_ID VARCHAR(25) NOT NULL);

INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar");
INSERT INTO Link (Nickname, D_ID) VALUES ("Foolink", "1");
so is es nicht gemeint oder?
Doch fast, aber du hast nicht denselben Datentypen für den Fremdschlüssel verwendet, und dat ist weshalb problematisch?
karl-heinz ist offline   Mit Zitat antworten
Alt 24.02.2010, 21:24   #48
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Sry schreib später... Hab im Moment keine Zeit mehr :/
Will_Malecken ist offline   Mit Zitat antworten
Alt 24.02.2010, 22:27   #49
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Es muss ja gleich sein, weil er das sonst nicht zuordnen könnte oder?
Das mit dem Auto_Increment weiß ich nicht. Ich kenn eigentlich die ganze Bezeichnung gar nicht wenn ich ehrlich bin, ich weiß nur dass das dahin muss^^.

Ähm okay dafür brauch ich aber noch bisschen Zeit Ich schreib gleich nochmal
Will_Malecken ist offline   Mit Zitat antworten
Alt 24.02.2010, 22:34   #50
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

DROP DATABASE Beispiel;
CREATE DATABASE Beispiel;
USE Beispiel;

CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname VARCHAR(25) NOT NULL);

CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname VARCHAR(25) NOT NULL,
D_ID VARCHAR(25) NOT NULL);

INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar");
INSERT INTO Link (Nickname, Link.D_ID) VALUES ("Foolink", "1");

Also ganz leicht einfach so? Fehler sind schonmal nicht drin ;D
Will_Malecken ist offline   Mit Zitat antworten
Alt 24.02.2010, 23:17   #51
Reg.-Benutzer
 
Reg.-Datum: 24.02.2010
Standard

Code:
DROP DATABASE Beispiel;
CREATE DATABASE Beispiel; 
USE Beispiel;

CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
Nickname VARCHAR(25) NOT NULL);

CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Nickname VARCHAR(25) NOT NULL,
D_ID INT NOT NULL);

INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar");
INSERT INTO Link (Nickname, Link.D_ID) VALUES ("Foolink", 1);
Naja der Datentyp von Primär- und zugehörigen Fremdschlüsseln muss gleich sein, weil du sonst bei jedem Suchvorgang, Vergleich etc. einen der Werte umwandeln müsstest. Daher erzwingt auch eine FOREIGN KEY CONSTRAINT, dass die Datentypen identisch sind. Also, wat macht ein AUTO_INCREMENT? Es erzeugt quasi automatisch einen Schlüsselwert der eindeutig ist. Sollte dir aber sofort auffallen, wenn du ein SELECT * FROM Dokument machst! Schließlich enthält dein INSERT auf Dokument keine Angabe zu D_ID! Aber diesen Wert brauchst du ja, wenn du dann einen INSERT auf Link machst der auf ein Dokument zeigen soll!

Fehler mit dem Datentyp war also doch noch drin . Naja mach doch noch mal eine FOREIGN KEY CONSTRAINT dazu und entferne erstmal diese AUTO_INCREMENT-Geschichte, und dann kannste den Krams auf deine eigentliche Aufgabe münzen...

Geändert von karl-heinz (24.02.2010 um 23:31 Uhr)
karl-heinz ist offline   Mit Zitat antworten
Alt 24.02.2010, 23:31   #52
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Ah okay das stimmt.
Jetzt muss ich nur noch wissen wie so ein constrait geht. da google ich nochmal
Das Auto_Increment bei Link kann ich einfach wegmachen?
Will_Malecken ist offline   Mit Zitat antworten
Alt 24.02.2010, 23:34   #53
Reg.-Benutzer
 
Reg.-Datum: 24.02.2010
Standard

Alle AUTO_INCREMENT entfernen! Die Fremdschlüssel-Beschränkung hattest du schon gepostet...
karl-heinz ist offline   Mit Zitat antworten
Alt 24.02.2010, 23:51   #54
Reg.-Benutzer
 
Reg.-Datum: 22.02.2010
Standard

Achso die okay. Ist das okay wenn ich das morgen nachmittag poste? Schaff ich jetzt nicht mehr so schnell. Muss noch schlafen gehn und kann dann erst später nach der Schule morgen
Will_Malecken ist offline   Mit Zitat antworten
Antwort

Lesezeichen
Zurück   Forum Fachinformatiker.de > Fachliches > Datenbanken

Themen-Optionen
Ansicht


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL wird nicht richtig installiert Ramiel Datenbanken 22 10.02.2009 20:26
MySQL Lizenzfrage ReneMe Datenbanken 2 06.11.2008 08:11
Wie kann ich MySQL Befehle auf der Konsole absetzen? tobias-digital Datenbanken 3 08.05.2002 18:06
MySQL Befehle Scratch Datenbanken 1 19.12.2001 03:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:14 Uhr.