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