Проектирам своята база данни/домейн за приложение за електронна търговия и ми е трудно да разбера как да съхранявам продукти.
Уебсайтът ще продава широка гама от продукти, химикалки, прашки, татуировки, чадъри, всичко. Всеки от тези продукти ще споделя няколко общи атрибута, височина, ширина, дължина, тегло и т.н., но някои продукти имат специални данни. Например химикалките имат различни цветове на мастилото и накрайниците/капаците, а брошурите могат да имат различни видове гънки. Досега съм измислил около 20+ допълнителни атрибута, но тези атрибути може да се прилагат само за 1% от продуктите на уебсайта.
Така че се чудя дали е подходящо да внедря EAV модел за обработка на допълнителните данни. Имайки предвид, че когато клиентите разглеждат сайта в предния край, ще има филтрираща странична лента като на eBay и carsales.com.au. (Така че имайте предвид, че ще има доста запитвания)
Не мисля, че е практично да се прилага наследяване на Class Table, тъй като системата трябва да остане гъвкава. Това е така, защото в бъдеще може да имаме повече атрибути с нови видове продукти.
Другото нещо, което обмислих, е използването на NoSQL база данни (вероятно MongoDB), но имам малък опит с тези типове бази данни, ще реши ли проблема ми?
Преглед на опциите:
- Обект с единични продукти с много колони
- Обект с отделни атрибути (EAV)
- Преминете към постоянство без схема
В процес съм на изграждане на прототип с обект на атрибути, за да видя колко е гъвкав, и тествам производителността и как заявките излизат извън контрол.
РЕДАКТИРАНЕ: Аз, разбира се, съм отворен за всякакви други решения.