Hallo, Sabine!
Nur mal so vorneweg: Beim programmieren gibt es kein richtig und kein flasch. Da gibt es nur Aufgabe kann so gelöst werden oder so geht's nicht.
Kategorietabelle - sieht gut aus.
Unterkategorietabelle - sieht auch gut aus.
Produkttabelle - da fängt das Raten an ;-)
Willst Du die ucat_id ein-eindeutig vergeben oder nur je Kategorie eindeutig?
Soll die ucat_id ein-eindeutig sein, kann man eventuell auf die cat_id verzichten. Wenn nicht, dann muß die cat_id auf jeden Fall mit rein.
Läßt Du sie weg, kann das später verschachtelte Abfragen sub-selects erfordern. Ich würde diese eine Spalte mit dazunehmen.
Und nu wird es janz schwierig: die Produktarten. Da komm ich jetzt nur noch halb mit. Sollen die Produktarten ähnlich aufgebaut sein, wie die Kategorien? Oder gibt es nur exakt die 4 Arten? Oder sieht die Standard-Art bei jedem Produkt anders aus?
Die zeichnerische Darstellung sollte übrigens vom Produkt ausgehen, etwa so:
+---------------+
| Produkte |
+---------------+ +-----------+
| | +-------------------------> | Kategorie |
| produkt_id | | +-> +-----------+
| | | | | category |
| cat_id | --+ | | cat_id ...|
| | | +-----------+
| ucat_id | --+ |
| | | +---------------+ |
| ... | +--> | Unterkategorie| |
+---------------+ +---------------+ |
| ucat_id | |
| cat_id |--+
+---------------+
mit den Arten das Gleiche. Ich spare mir jetzt mal die Mühe :o)
An einem Beispiel kann man vielleicht überprüfen, ob das Tabellenschema gut ist.
Ich sag mal Schnürschuh.
Der Schnürschuh ist in der Unterkategorie Schuhe und die Unterkategorie Schuhe ist jetzt in der Kategorie Herrenbekleidung. Passend dazu haben wir natürlich einen anderen Schnürschuh der Unterkategorie Schuhe der Kategorie Damenbekleidung.
Jetzt die Produktarten:
Standard: außen Leder - innen Pappe
individuell: Sympatex
compose: Außen und innen Leder
ucompose: "compose" inklusive der Schnürsenkel *smile*
Wenn jetzt in Produktart die prodart_id eineindeutig ist und die typ_id gleichzusetzen ist mit der individuell.ind_id usw. dann sieht auch das gut aus. Man könnte aber die Tabelle Produktart vielleicht weglassen und statt produkte.prodart_id sich dort gleich typ_id und subtyp_id merken.
Für die Angaben übernehme ich keine Gewähr ;-)
Aber für alle Fälle gibt es ja immer noch zu
CREATE TABLE meineTab
den Befehl
ALTER TABLE meineTab ADD/DROP/MODIFY ...
oder
DROP TABLE meineTab;
Und sollte man am Ende alles anders machen wollen, dann gibts ja auch ein "DROP DATABASE" =:)
Gruß und gut's Nächtle
Andreas