gabebu
Goto Top

MySQL auffrischung: klassiche Fremdschlüssel-Situation

Hallo Zusammen

Ich bin gerade nebenbei wieder mal daran, meine SQL-Kentnisse aufzufrischen. Ich habe dabei eine kleine klassiche Datenbank angelegt:
c879e96dc3a1426506f5d8fc20d586c1

Dazu habe ich versucht möglichst 1 zu 1 dies in einer SQL-Datenbank darzustellen. Unter anderem habe ich die Nutzer-Tabelle angelegt und habe da ein kleines Verständnisproblem.

Und zwar möchte ich natürlich, dass jeder Benutzer nur eine Anrede besitzt, komischerweise erhält aber jeder Eintrag in die Nutzer-Tabelle einen "Herr" und einen "Frau"-Eintrag und ich verstehe nicht ganz warum. Ich werde euch die Datenbank per Dropbox freigeben, dann könnt ihr euch die gleich auch mal ansehen:

https://www.dropbox.com/s/f7w6nh5p8123se9/ueb.sql

Was habe ich hier für ein Denkfehler gemacht? Ich komme wirklich nicht drauf, vermutlich ist es etwas kleines simples...aber ja.

Danke für eure Antworten.

Gruss

Gabriel

Content-ID: 229260

Url: https://administrator.de/forum/mysql-auffrischung-klassiche-fremdschluessel-situation-229260.html

Ausgedruckt am: 04.04.2025 um 00:04 Uhr

SlainteMhath
SlainteMhath 10.02.2014 um 14:13:37 Uhr
Goto Top
Moin,

in der Anderetabelle brauchst du ein ID-Feld und ein Textfeld,...

ID    Anrede
1     Herr
 2    Frau

und nicht ein separates Feld Herr und Frau.

lg,
Slainte
gabeBU
gabeBU 10.02.2014 aktualisiert um 14:34:44 Uhr
Goto Top
Also du meinst ungefähr so:

create table anrede values (id int not null, anrede tinytext(4));

und dann einfach bei jedem Eintrag in die Nutzertabelle "Herr" und "Frau" definieren oder wie kann ich das verstehen?

Edit: *facepalm* ach klar natürlich. Ja stimmt werde ich gleich korrigieren :3.
SlainteMhath
SlainteMhath 10.02.2014 um 14:35:48 Uhr
Goto Top
Die Anrede-Tabelle ist richtig.
Aber in der Nutzertabelle brauchst du dann natuerlich keine extra Felder für Herr und Frau sondern verknüpfst die beiden Tabellen über das Feld Anrede_AID - Feld

etwa
SELECT N.*, A.* FROM Nutzer N 
JOIN Anrede A ON A.AID = N.Anrede_AID 

(Kann sein das die Syntax nicht 100%ig ist, hatte schon lange kein MySQL mehr in den Fingern face-smile )
gabeBU
gabeBU 10.02.2014 um 14:38:53 Uhr
Goto Top
Das müsste ich eigentlich mit dem Foreign Key gemacht haben, ich gebe bei der Eingabe nur die AID an.