Hilfe bei Datenbankerstellung - Beziehungssystemen

SonMiko

Erfahrenes Mitglied
Hallo zusammen,

ich habe mich dran gemacht eine Mitfahrgelegenheit anhand von mySQL zu erstellen.
Mit PHP möchte ich später die Abfragen machen. Es soll so sein, dass sich fahrer in der DB eintragen können. Diese erhalten dann die möglichkeit sich einzuloggen und fahrten zu planen. Eine Fahrt besteht aus einem Startort, einer Startuhrzeit, einem Zielort und einer Zielortzeit sowie einem Fahrer und einer Anzahl an Plätzen.

Ich habe an folgende Tabellen gedacht:
fahrer, orte, ortedetaill, fahrt

Das Problem welches ich habe äußert sich in der Tabelle "ortedetaill".
Ich möchte beispielsweise sagen, dass ich in Aachen Haaren (ein Unterort) losfahre und dann in Berlin Steglitz auskomme! Versteht ihr mein Problem?
Ich möchte später keine Redundanzen daher muss die Ortdetailltabelle irgendwie anhand eines Fremdschlüssels auf die Ortetabelle verweisen!
Ich dachte das lässt sich anhand von Postleitzahlen lösen.

Die eigentliche Frage lautet nun, wie funktionieren Beziehungen in mySQL?

Tbl Ort:
ID_Ort
Ortsname
Fs_ID_PLZ (Fremdschküssel)

Tbl_Ortedetaill:
ID_PLZ
PLZ
Vorort

Beziehungen:
Ort <->>PLZ
FS_ID_PLZ <->>ID_PLZ

<->=1:1
<->>=1:n

Wie realisiere ich solche Beziehungen?
 
Moin,

kein kleines Thema. Bevor du eigentlich mit der Modellierung der Datenbank anfängst, solltest du dich im Vorwege mit den Entitäten der Relationen auseinandersetzen.

Hierzu solltest du dir vielleicht einmal das ER - bzw. EER Modell anschauen.

Das du auf Redundanzen achtest ist richtig. Die Datenbank sollte sich in der 3. Normalform befinden. Das du zum Beispiel die PLZ vom Ort trennen möchstest ist richtig.
Warum ? --> Man nehme z.B. die Stadt Hamburg, die ja bekanntlich mehrere PLZ's hat. Die Beziehung wäre dann 1 : n (Ort : PLZ).

Das mußt du nun auf deine Attribute übertragen. Immer dann, wenn du auf eine

1 : n oder m : n Beziehung stößt, mußt du handelt, indem eine Zwischentabelle mit
einem Foreign Key erstellt wird.

Ich hoffe, dass dir das weiter hilft.

Gruß
SOA
 
Hi,

erstmal danke ich für deine Antwort!
Ja, was du mir sagst ist durchaus wichtig, das weiss ich auch, denn das haben Wir vor kurzem im Unterricht besprochen ;-). Das "n-m" Beziehungen vermieden werden sollen ist auch klar, trotzdem vielen dank!

Mein Problem ist eher die Umsetzung!
Was zuvor mit dem larifari Tool "Access" noch grafisch sehr einfach ging,
entpuppt sich anhand der PHPmyAdmin Benutzeroberfläche doch als etwas schwerer.
Ich spreche von den Beziehungen! Wie lege ich welche fest?
Ich habe eine Option gefunden... Ich muss noch testen und hoffe das es dann klappt.
Aber trotzdem ist es mal interessant zu erfahren wie andere vorgehen, wenn beispielsweise Beziehungen erstellt werden sollen!

Ich bedanke mich für deine Hilfe :-)!

Besten Gruß,



Mike
 
Hallo,

schau dir doch mal den dbdesigner an. (Mal in google werfen)

MySQL hat verschiedene Tabellentypen. Da Du FK festlegen willst und so wies scheinst auch die Theorie aus dem Unterricht nachstellen willst, empfehle ich Dir den Tabellentyp INNODB.

Hier steht wies geht + Doku (Wenn Du mysql.de eingibst findest Du das auch auf Deutsch):

InnoDB Doku

Chris
 
soa hat gesagt.:
M
1 : n oder m : n Beziehung stößt, mußt du handelt, indem eine Zwischentabelle mit
einem Foreign Key erstellt wird.
Wieso soll denn bei einer 1:n Beziehung eine Zwoschentabelle angelegt werden?
Diese Bezeihungen sind doch bereits eindeutig aufgelöst ;)
 
Zurück