Datenbankstruktur Ok??
Sabine
- datenbank
0 Sabine0 Andreas Schigold0 Sabine
0 Andreas0 Sabine
Hallo!
Ich hoffe, jemand von euch kann mir sagen, ob diese Datenbankstruktur Ok ist. Gehen tut es um folgendes - ein cms mit shop. Nun habe ich Kategorien, in diesen Unterkategorien und in diesen Produkte. Beim Produkt muss festgelegt werden, um welchen Typ es sich handelt - ein individuelles Produkt, eine Standardlösung oder compose. Und hier sind meine Zweifel - kann ich die Tabellen Produkt, Produktart und dann die Unterarten individuell, standard und compose so verknüpfen wie ich es gemacht habe?? Sie sieht so aus:
<img src="http://www.office0-24.com/cms.jpg" border=0 alt="">
Herzlichen Dank im Voraus für eure Hilfe!
Sabine
Sorry fürs 2x einfügen!! War meine erstes Bild in Selfhtml das ich eingefügt habe - nächstes Mal wirds besser - versprochen!!
lg
Sabine
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
Hallo Andreas!
Kategorietabelle - sieht gut aus.
Unterkategorietabelle - sieht auch gut aus.
Produkttabelle - da fängt das Raten an ;-)
Ja, so gehts mir auch!
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.
Ach ja stimmt ... das habe ich übersehen.
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?
Also bei den Produktarten - es gibt 3 Varianten - individuell, standard oder compose. Jedes Produkt gehört zu einer - aber nur einer der Varianten. Individuell könnte man evt. auslagern - aber besser von vorne.
Wenn ich ein Produkt habe - sagen wir eine Datenbank, kann diese entweder individuell gestaltet werden => der Besucher schickt eine Anfrage via Formular (das könnte ich eben auslagern). Wenn nicht indivdiduell handelt es sich um ein shop-produkt, das kann entweder standard sein Datenbank xy mit Felder a, b und c- klick und bestellen. Oder es ist ein compose-produkt, dann stoppelt sich der Besucher seine Features zusammen von der jede einen Preis hat, am Ende Gesamtpreis und bestellen.
In der Tabelle Bestellung muss ich nun ja auf die "Artikelnummer" zugreifen, oder? Also auf product_id - daher habe ich das auch so gemacht mit den Untervarianten => oder kann ich hier einfach eingeben stand_id, comp_id und für jeden Bestellpunkt und nur einer dieser beiden ist ausgefüllt?
Ich hoffe, ich habe mich halbwegs klar ausgedrückt. Ich lade noch das Bild hoch mit den Shop-Tabellen.
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 |--+
+---------------+
Warum?? Drehe ich damit nicht die 1:n Beziehung um?
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.
Da komme ich eben nicht ganz mit - ich habe mir auch gedacht, das einfachere wäre gleich, das ich die Produkt-Tabelle weglassen, da sie ja eigentlich nur "Platzhalter" ist und anstelle dessen sage - es ist ein individuelles Produkt, mit ind_id xy.
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" =:)
Diese Befehle kennt meine PC mittlerweile schon ganz gut :)
Gruß und gut's Nächtle
Andreas
Danke fürs erste - vielleicht hast noch einen Tipp nach meiner näheren Beschreibung, wie ich meine DB sinnvoller aufbauen könnte.
Machst Du das jetzt doch alleine?
Machst Du das jetzt doch alleine?
Nein, Andreas - das ist was anderes.