Einzelnen Beitrag anzeigen
  #50  
Alt 19.09.2003, 15:18:11
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
Hi Steffen,

if (MSO == "Microsoft Office") {
echo "Schau mal, ob Du Access nachinstallieren kannst";
} else {
echo "Vermutlich nicht dabei";
}

;-)

SBE kenne ich nicht. MS Query ist wohl der Query Analyzer des MS-SQL Servers? Falls ja erlaubt dieser m.W. keine grafische Erstellung von SQL- Abfragen.
Open oder Star Office haben als einzigen Nachteil den, daß bei denen leider kein Datenbankprogramm wie Access dabei ist.

Kurz und gut, Du musst die Querys dann wohl von Hand schreiben. Der Vorteil ist aber auch klar: Du lernst einiges dabei und weißt genau, warum was und wie (nicht) geht ;-) Nachteil: sehr Zeitaufwändig.

Anmerkungen zur DB:

- Die Relation zwischen Shiplist und Steamer ist doch 1:n, sprich: Zu einer Shiplist gehört immer nur ein Schiff und niemals mehrere. Falls dem so ist muß die Tabelle st_steamer_0 weg.

- Tabelle best_prod_0: Das Feld (Bestell)"datum" würde ich doch raus machen (sorry, mein Fehler im vorigen Posting).
Stattdessen fügst Du eher in der Tabelle "bestellungen_0" ein Feld "komplett_geliefert_am" ein und füllst das, wenn die Bestellung komplett ist.
Wo speicherst Du die bestellte Menge des Artikels?? Diese Information gehört in diese Zwischentabelle. Mit "pos" ist doch nur die Position des Artikels auf dem Lieferschein gemeint.

- Tabelle best_pos_menge: Das Feld "best_menge" gehört in die Tabelle "best_prod_0" (s.o.).

- Tabelle "container_0": Das Feld "quantity" gehört dort nicht rein. Wenn dieses die Information enthalten soll, wieviele Produkte in dem Container sind gehört diese in die Zwischentabelle zwischen Artikel und Container (s.u.). Allerdings bekommst Du diese Information so oder so über die Tabelle "bestellungen_0" geliefert.

- Verbindung zwischen "container_0" und "products_0": Wenn Du damit speichern willst, welches Produkt sich in welchem Container befindet geht das. Allerdings bekommst Du so nicht raus, zu welcher Bestellung dieses gehört.
Vorschlag deshalb (nicht schlagen ;-) ): lösche die Tabellen "best_cont_0" und "prod_cont_0" und füge statt dessen die Container-id als FK in die Tabelle "best_prod_0" ein. Somit hast Du zu jeder Bestellung sowohl die Zuordnung zu den Artikeln und gleichzeitig auch noch die Zuordnung zu den Containern. ACHTUNG: Rede hierüber unbedingt noch mal mit Deinem Kollegen, der sich mit ER- Modellen auskennt oder frage zusätzlich jemand anderes, der sich mit Datenbankdesign auch auskennt!!

- Verbindung zwischen Besteller_0 und best_prod_0: Diese Verbindung ist falsch. Die Besteller stehen in einer Beziehung zur Bestellung und nicht zu der zwischentabelle zwischen Bestellungen und Produkten. Ob eine Bestellung auch von mehreren Bestellern kommen kann kann ich nicht beurteilen. Vom Gefühl nach ist dies aber eine 1:n Beziehung und nicht n:m. Daher: Tabelle pos_besteller_0 weg.

Neues Design: Tabelle "bestellungen" mit Feld "besteller_id" und Tabelle "besteller" mit "besteller_id" als PK sowie den Daten zum Besteller.

Allgemein:
- Stelle die Primärschlüssel der Tabellen an den Anfang. Dies ist um einiges übersichtlicher. Nenne zusätzlich die Primärschlüssel der Zwischentabellen so, wie die Tabelle heißt (+ id natürlich) und kürze dies kaum.
- Nenne Deine Felder sprechend und spare nicht mit Buchstaben. In ein paar Wochen/Monaten/Jahren weißt Du eventuell nicht mehr, was was ist.

Was mir auch auffällt: Du verwendest überall Zwischentabellen. Diese benötigst Du aber nur bei n:m Beziehungen und nicht bei 1:n Beziehungen.
Der Unterschied zwischen diesen beiden Arten ist: Eine Bestellung kann aus 1 oder n Artikeln bestehen. Gleichzeitig kann ein Artikel in mehreren Bestellungen vorkommen. Ergo: n:m und Zwischentabelle
Ein Besteller (Kunde) kann mehrere Bestellungen aufgeben aber gleichzeitig kann eine Bestellung nur von einem einzigen Kunden kommen. Ergo: 1:n Beziehung mit der Speicherung der Kunden-id (PK) bei den Bestellungen (als FK).
Auch bei Zwischentabellen kann noch einmal eine 1:n oder, seltener, n:m Beziehung zu einer anderen Tabelle bestehen.

So, ich denke mal, daß demnächst die DB fertig ist und hoffe halt, daß Du nicht denkst, daß ich es damit übertreibe. Aber jeder Tag, den Du vorher in Dein DB Design steckst erspart Dir später, wenn es um Erweiterungen/ Änderungen geht, eine Woche Arbeit und einiges an (Angst)Schweiß, wenn es um das richtige Übertragen der Daten geht. Und Erweiterungswünsche seitens der Anwender kommen sicher irgendwann.

Dir auch ein Schönes Wochenende,

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