Wenn Sie die meisten Attribute Ihrer Produkte im Voraus kennen, können Sie sie in den Tabellen für verschiedene Produkttypen fest codieren, z.
Bücher
-----
Ich würde
Preis
Titel
Autor
isbn
usw....
Mobilgerät
-------------
Ich würde
Preis
Größe
Farbe
Modell-
usw...
Sie können auch so etwas ausprobieren:
base_product
------------
Ich würde
Grundpreis
Produktart
book_product_attributes
-----------------------
base_product_id (FK zu base_product)
Titel
Autor
mobile_dev_product_attributes
-----------------------------
base_product_id (FK zu base_product)
Modell-
Farbe
Auf diese Weise können Sie Ihre allgemeinen Attribute in einer Basisprodukttabelle gruppieren und bei Bedarf spezifischere Attribute in anderen Tabellen speichern.
Dies funktioniert, wenn Ihre Produkttypen größtenteils statisch sind. Wenn Sie jedoch keine Ahnung haben, welche Produkttypen oder Attribute Sie in Zukunft benötigen, funktioniert das auf Entitätsattributwerten basierende System möglicherweise besser. Die Idee hinter diesem Modell ist, dass Sie eine Tabelle für die verschiedenen Attribute haben, eine Tabelle für die verschiedenen Entitäten in Ihrem System und eine Tabelle für die Attributwerte, die eine Entität hat. Beispiel:
Entitäten
--------
Ich würde
Attribute
----------
Ich würde
Name
Werte
------ ------.
Ich würde
entity_id
attribute_id
Wert
Die Daten könnten folgendermaßen aussehen:
Entitäten
ICH WÜRDE
----
1
Attribute
ID | Name
----------
1 | Titel
2 | Autor
Werte
ID | attribute_id | entity_id | Wert
-------------------------------------------------- -------
1 | 1 | 1 | "Große Erwartungen"
2 | 2 | 1 | "Charles Dickens"
Diese Daten beschreiben sehr kurz ein Produkt, das zwei Attribute aufweist: Titel und Autor mit dem Wert "Great Expectations" bzw. "Charles Dickens".
Beachten Sie, dass die Verwendung einer EAV-Datenbank Abfragen sehr umständlich machen kann. Mit genügend Daten und dem falschen Modelldesign können auch Leistungsprobleme auftreten. Das Beispiel, das ich gegeben habe, war sehr einfach, aber realistischere Designs sind in der Regel komplizierter. Es kann einige Zeit dauern, bis diese Art von Datenbank korrekt ist, und es ist nicht immer die beste Lösung.