Предыстория:
Я создаю веб-приложение для электронной коммерции (интернет-магазин). Теперь я подошел к выбору системы баз данных и подходящего дизайна. Я застрял с разработкой дизайна атрибутов продукта
Я думал о выборе систем баз данных No SQL (MongoDB) или SQL
Мне нужны ваши советы и помощь
Проблема:
Когда вы выбираете тип продукта (например, таблицу), он должен показывать вам соответствующие фильтры для такого типа (например, высота, материал и т. Д. c). ). Когда вы выбираете другой тип, скажем, «автомобиль», он предоставляет вам атрибуты фильтра автомобиля c (например, топливо, объем двигателя)
Например, здесь, в одном из популярных интернет-магазинов, если вы выбираете данные Тип хранения вы получаете фильтр для атрибутов этого типа, таких как размер жесткого диска или тип подключения
Вопрос
Какой подход является лучшим для такой проблемы? Я описал некоторые из них ниже, но, возможно, у вас есть свои собственные мысли относительно этого
MongoDB
Возможное решение:
Вы можете довольно легко реализовать такую структуру атрибутов продукта.
Вы можете создать одну коллекцию с полями атрибутов для каждого продукта и поместить туда все, что захотите, как они предлагают здесь (поле "детали") ):
https://docs.mongodb.com/ecosystem/use-cases/product-catalog/#non -реляционная модель данных
Структура будет
Проблема:
При таком решении у вас вообще нет типов продуктов, поэтому вы не можете отфильтровать продукты по их типам. Каждый продукт содержит свою собственную произвольную структуру в поле attrs и не следует какой-либо схеме
И, может быть, я могу каким-то образом go с этим подходом?
SQL
Существуют такие решения, как одна таблица, в которой все продукты хранятся в одной таблице, и в результате вы получаете столько полей, сколько и номер атрибута всех продуктов, взятых вместе.
Или для каждого типа продукта Вы создаете новую таблицу
Но я не буду рассматривать эти. Один очень громоздкий, а другой не очень гибкий и требует динамической c схемы
Возможное решение
Существует одно довольно гибкое решение, называемое EAV https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
Наша схема будет:
EAV
Такой дизайн может быть сделано в системе MongoDB, но я не уверен, что она была сделана для такой нормализованной структуры
Задача
Схема станет действительно огромной и действительно трудно запросить и gr asp