Я разрабатываю свою базу данных/домен для приложения электронной коммерции, и мне сложно определить, как хранить продукты.
На сайте будет продаваться широкий ассортимент товаров, ручек, стрингов, татуировок, зонтиков, всего. Каждый из этих продуктов будет иметь несколько общих атрибутов, высоты, ширины, длины, веса и т.д., Но некоторые продукты имеют специальные данные. Например, ручки имеют разные цвета чернил, а кончики/крышки и брошюры могут иметь разные типы складок. До сих пор я придумал еще 20 дополнительных атрибутов, но эти атрибуты могут применяться только к 1% продуктов на веб-сайте.
Так что мне интересно, правильно ли использовать EAV-модель для обработки дополнительных данных. Помня о том, что, когда клиенты просматривают сайт в интерфейсе, появится боковая панель фильтрации, например, на eBay и carsales.com.au. (Таким образом, имея в виду, будет справедливый запрос)
Я не считаю целесообразным реализовать наследование класса Table, поскольку система должна оставаться гибкой. Это связано с тем, что в будущем по треку мы можем иметь больше атрибутов в будущем с новыми типами продуктов.
Другое, что я рассмотрел, это использование базы данных NoSQL (возможно, MongoDB), но у меня мало опыта работы с этими типами баз данных, она даже решит мою проблему?
Обзор параметров:
- Единый продукт с большим количеством столбцов
- Отдельный атрибут entity (EAV)
- Переключение на сохранение без схемы
Я собираюсь создать прототип с сущностью атрибутов, чтобы увидеть, насколько он гибкий, и проверить производительность и как неконтролируемый запрос.
EDIT: Я, конечно, открываю любые другие решения.