Frage zum Aufbau einer Tabelle in einer Datenbank (MySQL)
Unmeier
- datenbank
1 Frank (no reg)
Hallo Selfler!
Ich muss mit einer MySQL-Tabelle eine Anzahl an Bestellungen verwalten. Dabei existieren momentan Spalten für unterschiedliche Tage und Produkte.
Das ganze sieht also so aus:
------------Bestellungen--------
Montag_A
Montag_B
Montag_C
Dienstag_A
Dienstag_B
Dienstag_C
Mittwoch_A
Mittwoch_B
...
--------------------------------
Je nachdem ob am entsprechenden Tag z.B. die Nummer "A" oder "B" bestellt wurde, wird der Wert 0 oder 1 gesetzt. Nun soll zusätzlich auch noch gespeichert werden, ob die entsprechend bestellten Nummer auch abgeholt wurden.
Ich könnte nun z.B. in der Tabelle "Bestellungen" jeweils noch folgendes hinzufügen:
------------Bestellungen (neu)--------
Montag_A
Montag_B
Montag_C
Dienstag_A
Dienstag_B
Dienstag_C
Mittwoch_A
Mittwoch_B
...
Montag_A_abgeholt
Montag_B_abgeholt
...
--------------------------------
Und dann wieder jeweils mit 1 und 0 speichern, ob die Nummer abgeholt wurde oder nicht. Oder aber ich Ich lasse die bisherigen Spalten, erweitere sie aber um den Wert 2. Dann wäre 0=nicht bestellt, 1=bestellt, nicht abgeholt und 2=bestellt, abgeholt.
Was ist eurer Meinung nach besser (und warum) oder habt ihr noch andere (bessere) Vorschläge für mich?
Danke im voraus,
euer Unmeier.
Hi,
ehrlich, dein Modell ist ein Scherz, oder?
Hast du dann bei 15 Produkten * 7 Wochentagen = 105 Spalten in der Tabelle? Oder hast du jeden einzelnen Jahrestag (365/366) drin?
Speichere es bitte vertikal, mit einem Mindestmass an Normalisierung für Produkt und Tag oder Datum.
Tabelle Bestellungen (Beispiel, welches dich bis fast auf die Zielgerade bringt - mit Absicht)
-----------------------------------------------------------------------------
Produkt | Tag | Status
-----------------------------------------------------------------------------
ABC | Montag | 1 für bestellt, 2 für abgeholt
Gruss, Frank
Hi,
ehrlich, dein Modell ist ein Scherz, oder?
Eigentlich nicht.
Hast du dann bei 15 Produkten * 7 Wochentagen = 105 Spalten in der Tabelle? Oder hast du jeden einzelnen Jahrestag (365/366) drin?
Nein, nein. Es gibt jeden Tag immer maximal 3 Produkte (A,B,C), die dann in einer anderen Tabelle (zzgl. anderer Daten) gespeichert sind. Ist das so verständlich oder sind noch Unklarheiten/muss ich das genauer ausführen?
Hello,
Nein, nein. Es gibt jeden Tag immer maximal 3 Produkte (A,B,C), die dann in einer anderen Tabelle (zzgl. anderer Daten) gespeichert sind.
im Moment mag das so sein. Es gilt der Grundsatz: Daten sind dauerhafter als Funktionen. Eine zukunftssichere Funktion muss auf einer sicheren Datenstruktur stehen. Glaub mir, die Vorteile aus deinem einfacheren Tabellendesign sind nur augenscheinlich. Die Nachteile des etwas komplizierten MOdells, das Frank vorgeschlagen hat, vernachlässigbar.
MfG
Rouven
Hello,
Nein, nein. Es gibt jeden Tag immer maximal 3 Produkte (A,B,C), die dann in einer anderen Tabelle (zzgl. anderer Daten) gespeichert sind.
im Moment mag das so sein. Es gilt der Grundsatz: Daten sind dauerhafter als Funktionen. Eine zukunftssichere Funktion muss auf einer sicheren Datenstruktur stehen. Glaub mir, die Vorteile aus deinem einfacheren Tabellendesign sind nur augenscheinlich. Die Nachteile des etwas komplizierten MOdells, das Frank vorgeschlagen hat, vernachlässigbar.
Aber ich muss doch individuell für jeden einzelnen speichern, ob er bestellt und oder abgeholt hat. Wie soll ich das machen, wenn ich für jedes Produkt nur einen Datensatz habe?
Hi,
Aber ich muss doch individuell für jeden einzelnen speichern, ob er bestellt und oder abgeholt hat. Wie soll ich das machen, wenn ich für jedes Produkt nur einen Datensatz habe?
"für jeden einzelnen"? da kommt also noch der Käufer ins Spiel. Das war nicht von vornherein dank Informationsunterschlagung ersichtlich?
Na, da fügst du an meinem Vorschlag noch eine Spalte "Käufer" an (welche auf eine Tabelle "Käufer" verweist ... so richtig toll normalisiert eben).
Du hast nicht für jedes Produkt nur einen Datensatz, sondern du hast n Datensätze für Käufer x Produkte x Tage
Ciao, Frank