gabebu

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 229260

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

Ausgedruckt am: 24.04.2025 um 16: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.