Tutorial: Optionen und Attribute in Datenbank

Aus Wiki | xtcModified eCommerce Shopsoftware

(by Hendrik Koch, 08.2009)

Optionen und Attribute in der Datenbank xtcModified

Im folgenden wird die Datenbankstruktur von Attributen und Optionen schrittweise an Beispielen erklärt.

Ein Shop verkauft Fernseher, diese gibt es in 2 Gehäusefarben, Silber und Anthrazit. Weiterhin besteht das Angebot eines Vorort-Reparaturservices für eine Wählbare Laufzeit 12 bis 36 Monate.

[Bearbeiten] Optionen und Attribute. Definition

Für die Fernseherbaureihe gibt es die 2 Optionen (options).

1.	24h-Service
2.	Gehäusefarbe

Diese Optionen sind gespeichert in der Tabelle products_options.

Tutorial options image001.gif

Wir tragen die Optionen in eine leere xtcModified-Installation ein. In Tabelle products_options liegen nun 2 Einträge.

Tutorial options image002.gif

Nun gibt es zu den Optionen Werte (options_values). Wir haben 6 Optionswerte. 4x Service und 2x Farbe

1.	kein Service
2.	12 Monate Service
3.	24 Monate Service
4.	36 Monate Service
5.	Anthrazit
6.	Silber

Diese Optionswerte sind unabhängig in eine weitere Tabelle eingetragen. Tabelle products_options_values.

Tutorial options image003.gif Tutorial options image004.gif

Die language_id lautet stets 2 für Deutsch. Dazu später mehr.

Wie erfolgt nun die Zuordnung Optionen – Optionswerte?

Dies geschieht über eine weitere Zuordnungstabelle products_options_values_to_products_options


Tutorial options image005.gif

Die Feldnamen sagen aus wie die Zuordnung erfolgt.

Tutorial options image006.gif

Entsprechend die Einträge in der Zuordnungstabelle.

Tutorial options image007.gif

Nun fragt man sich unwillkürlich. Warum die Zwischentabelle? Warum keine direkte Zuordnung? Die Zuordnungstabelle verkompliziert die Sache zwar, hat aber auch den Vorteil Redundanzen zu verhindern.

Es lassen sich die Optionswerte auch für weitere Optionen nutzen. Z.B. ein Angebot verschiedenfarbiger Fernbedienungen. Es kann eine neue Option angelegt werden, „Fernbedienung Farbe“ z.B., mit den möglichen bestehenden Optionswerten „Silber“ und „Anthrazit“. Bei einer direkten Zuordnung müßte für jede Optionsart stets die gesamte Palette der Optionswerte, in diesem Beispiel Farben, erneut neu angelegt werden.

Wie werden die Optionen und Optionswerte nun den Artikeln zugeordnet? Auch hier erneut eine Zuordnungstabelle. Tabelle products_attributes. Die Zuordnung Optionen-Artikel trägt die Bezeichnung „Attribute“ (attributes). Sie verbindet

-	Artikel
-	Optionen
-	Optionswerte

Für jede Optionsauswahl die der Kunde treffen darf befindet sich darin ein Eintrag.

Tutorial options image008.gif

Tutorial options image009.gif

Wir haben einen Artikel, einen Fernseher, mit Artikel-ID (products_id) 200. Bei diesem stehen alle Optionen zur Auswahl. Alle 4 Services (kein bis 36 Monate) und zwei Farben. Tabelle products_attributes enthält nun folgende Einträge:

Tutorial options image010.gif

Einen zweiten Fernseher, products_id=201, gibt es nur mit mindestens 24 Monaten Service. Entsprechend reduziert seine Einträge in Tabelle products_attributes

Tutorial options image011.gif

[Bearbeiten] Sprachen

In den Tabellen products_options und products_options_values stehen die Options- bzw. Wertenamen im Klartext. Erinnerung:

Tutorial options image012.gif

Tutorial options image013.gif

Wird das System mehrsprachig konfiguriert, woher entnimmt es die Namensinformation in der jeweiligen Sprache? Antwort: Die Einträge sind stets mehrmals vorhanden. Für jede Sprache ein eigener Eintrag. Bei einem zweisprachigen System, Deutsch und Englisch, sähen die Einträge in den Tabellen so aus.

Tutorial options image014.gif

Tutorial options image015.gif

Daher ist bei verknüpften Datenbankabfragen stets die Bedingung language_id mit anzugeben, da es andernfalls, wenn mehrsprachige Systeme vorliegen, zu mehrdeutigen Abfrageergebnissen käme.