Ich entwerfe meine Datenbank/Domain für eine eCommerce-Anwendung und es fällt mir schwer herauszufinden, wie man Produkte speichert.Sollte ich EAV-Modell verwenden?
Die Website wird eine breite Palette von Produkten, Stifte, Riemen, Tattoos, Regenschirme, alles verkaufen. Jedes dieser Produkte teilt einige gemeinsame Attribute, Höhe, Breite, Länge, Gewicht usw., aber einige Produkte haben spezielle Daten. Zum Beispiel haben Stifte verschiedene Tintenfarben und Spitzen/Deckel und Broschüren können verschiedene Arten von Falten haben. Bisher habe ich mir über 20 zusätzliche Attribute ausgedacht, aber diese Attribute können nur für 1% der Produkte auf der Website gelten.
Also frage ich mich, ob es angemessen ist, ein EAV-Modell zu implementieren, um die zusätzlichen Daten zu behandeln. Wenn Kunden die Website im Frontend betrachten, wird eine Filterleiste wie bei eBay und autosales.com.au angezeigt. (Also denke daran, es wird ein gutes Stück der Abfrage)
Ich denke nicht, dass es praktisch ist, Class Table Vererbung zu implementieren, da das System flexibel bleiben muss. Das liegt daran, dass wir in der Zukunft mit neuen Produkttypen mehr Attribute haben können.
Die andere Sache, die ich in Betracht gezogen habe, ist die Verwendung einer NoSQL-Datenbank (wahrscheinlich MongoDB), aber ich habe wenig Erfahrung mit diesen Arten von Datenbanken, wird es sogar mein Problem lösen?
Bewertung von Optionen:
- Einzelprodukte Einheit mit vielen Spalten
- Separate Attribute Einheit (EAV)
- Switch to Schema-weniger Persistenz
ich in das bin Prozess des Erstellens eines Prototyps mit einer Attributsentität, um zu sehen, wie flexibel es ist, und Testen der Leistung und wie außer Kontrolle geraten wird.
EDIT: Ich bin natürlich offen für andere Lösungen.
Gibt es einen besonderen Grund, warum Sie eine E-Commerce-App von Hand erstellen? Es könnte schwierig, gefährlich und vielleicht ein wenig unnötig sein ... –
Nur gefunden [diese Frage] (http://stackoverflow.com/questions/870808/entity-attribute-value-database-vs-strict-relational-model- E-Commerce-Frage), die so ähnlich zu sein scheint wie das, was Sie fragen. – BenV
@BenV, während die Frage ähnlich ist, werden die Antworten wahrscheinlich ganz anders sein, besonders in Bezug auf Magento. Magento hatte anfangs wirklich Probleme mit der EAV-Leistung, aber sie haben dies durch vorsichtiges Caching (Abfrage, Modell, HTML-Block und ganze Seite) und optionale Denormalisierung gelöst. Dies sind neue Entwicklungen, seit diese Frage gestellt wurde, und es wäre würdig, die Frage in diesem Zusammenhang, IMHO, erneut zu stellen. –