Einzelnen Beitrag anzeigen
  #25  
Alt 09.09.2003, 13:04:24
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
Hi Trialrider,

ich hab jetzt mal kurz über Deine DB geschaut und folgende Anmerkungen:

- nenne Deine Id- Felder "eindeutig", z.B. best_id
Dies erleichtert Dir hinterher bei den Zwischentabellen die Zuordnung der einzelnen IDs zu den Tabellen.
- Erweitere Deine Id- Felder auf INT(11). Mit INT(3) kannst Du maximal 128 (??), auf jeden Fall aber viel zu wenig Datensätze reinbekommen. Überprüf das einfach mal.

Und jetzt bitte nicht schlagen ;-)

Ich würde die Datenbank komplett überarbeiten:

Tabelle Container
- c_id als PK
- container_nummer
- container_groesse

Tabelle Bestellungen
- best_id als PK
- artikel *
- datum
- Menge_des_Artikels ***
- Preis ***
- sonstige Infos, die NUR(!) zu EINER(!) Bestellung gehören

Tabelle Schiffe
- ship_id als PK
- name
- maximale_container
- heimathafen **
- sonstige Infos, die NUR(!) zu EINEM(!) Schiff passen

Tabelle S_to_C (Schiff zu Container)
- stoc_id als PK
- ship_id (FK zu Schiffe, daher auch mein obiger Tipp)
- cont_id (FK zu Container)
- sonstige Infos, die NUR(!) diese EINE(!) Fracht angehen, z.B. eta, Abfahrt des Schiffes,...

Tabelle Best_to_Cont
- besttoc_id als PK
- best_id
- cont_id


*) Artikel würde ich sogar noch in eine weitere Tabelle packen und hier nur den FK speichern
**) Heimathafen / Land kann ebenfalls in eine weitere Tabelle
***) Wenn Artikel ausgelagert werden gehören diese Daten in eine Zwischentabelle, da n zu m Beziehung!!

Und jetzt ein paar Grundregeln des DB- Designs:

- Wann immer Du redundante (= doppelte) Daten haben könntest, z.B. Heimathafen, Artikel etc. sollten (eher müssen!) diese in eine separate Tabelle ausgelagert werden
- Besteht die Möglichkeit, daß eine Bestellung z.B. auf mehrere Container verteilt wird UND ein Container mehrere Bestellungen aufnehmen kann (ich denke, beides ist wahrscheinlich) werden die Tabellen über eine Zwischentabelle verknüpft (Stichwort n zu m Beziehung)
- Ist die Zuordnung Container zu Bestellung IMMER(!) eindeutig, sprich: Eine Bestellung kann immer nur in genau einen Container kommen und ein Container kann immer nur genau eine Bestellung transportieren ist es eine 1 zu n Beziehung und in einer der beiden Tabellen wird der PK der anderen Tabelle als Fremdschlüssel gespeichert.

Am "Einfachsten" ist es, sich immer zu fragen, ob es sein kan, daß eine n zu m Beziehung möglich ist. Falls ja: Zwischentabelle.

Ich weiß, daß meine Tipps eventuell eine komplette Umarbeitung Deines bisherigen Programms bedeuten können, aber glaube mir, solange keine Daten in der Datenbank sind ist es um einiges einfacher als wenn die Datenbank mal voll ist und Du dann die Daten mühevoll "umsortieren" musst.

Gruß und viel """Spaß""",

Andy
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten