Datenbank Foreign Key?

  • Hallo,

    ich habe eine Datenbank namens, db_registry mit 2 Tabellen namen und user.

    in der Tabelle user habe ich die 5 felder user_ID, username, passwort, user_geloescht und letzter_login
    primary key ist hier user_ID

    und inder Tabelle namen habe ich die 4 Felder namen_ID, vorname, nachname und user_ID
    primary key ist hier namen_ID.

    Ich möchte, dass in der Tabelle namen im Feld user_ID das selbe steht wie in der Tabelle user im Feld user_ID bei den zugehörigen Datensätzen. Also dachte ich ich kann wie in Acces einen foreign key festlegen für das Feld user_ID in der Tabelle namen, das auf das Feld user_ID aus der Tabelle user verweist, aber ich weiss leider nicht wie ich das einstellen kann, falls das möglich ist. Dazu sei gesagt, dass ich als admin auf die Datenbank über localhost/phpmyadmin/index.php zugreifen kann, da ich das mit xampp gemacht habe/machen muss.

    Vll ein Beispiel zur Verdeutlichung was ich meine:

    Ich hab ein Registrierungsformular erstellt in dem in 4 Eingabefeldern eben vorname, nachname, username und passwort Daten eingegeben werden. Die Registrierung funktioniert an sich so, dass die eingegeben Daten in dem Formular bei vorname und nachname in der Tabelle namen und die Eingabe bei username und passwort in der Tabelle user gespeichert werden. Das passiert an sich auch, nur dass in der Tabelle user die user_ID richtig vergeben wird nach autowert, aber in der Tabelle namen bei dem zugeörigen Datensatz zwar name und vorname stehen, aber eben nicht die selbe user_ID wie in der Tabelle user, sondern 0.


    Zur Info mein Insert Into befehl:

    PHP
    $sql = ("INSERT INTO user (user_ID, username, passwort, user_geloescht, letzter_login) VALUES (NULL, '$username', '$pw', '', '')");
    
    
       $result = mysql_query($sql) OR die(mysql_error());
    
    
       $sqla = ("INSERT INTO namen (namen_ID, vorname, nachname) VALUES (NULL, '$vorname', '$nachname')");
    
    
       $resulta = mysql_query($sqla) OR die(mysql_error());

    Muss ich jetzt also vll etwas an dem unteren INSERT INTO Befehl ändern, damit die user_ID auch dort richtig ist, oder kann ich irgendwie in der Datenbank einen Foreign Key zuweisen, oder liegt das Problem sogar noch ganz woanders?

  • Zitat

    oder liegt das Problem sogar noch ganz woanders?

    Joa, wieso willst du das überhaupt in 2 verschiedene Tabellen schreiben? Welchen Sinn macht die Trennung in 2 Tabellen?

    Gruß crAzywuLf :D

  • Foreign Keys anlegen kannst du mit ADD FOREIGN KEY oder so ähnlich, das ändert aber nichts, wenn du MyISAM benutzt, d.h. es finden keine Konsistenzüberprüfungen statt, dafür bräuchtest du InnoDB, ist aber in der Regel nicht so wichtig. Die user_id solltest du als auto_increment haben, und dann sparst du dir die Angabe im INSERT-statement vollständig. Die ID, die dabei ausgewählt wurde, erhälst du mit mysql_insert_id. Den Sinn von zwei Tabellen sehe ich aber auch nicht, mach das lieber in eine und spar dir den Stress.