@TaxaCorbett

Какой вариант лучше при проектировании базы данных отличающихся магазинов?

Всем доброго времени суток!
Возникла, с одной стороны, тривиальная, а с другой не очень задача. Не могу определиться с выбором, так как никакой в полной мере не устраивает.
Имеется сущность "Магазин", в которой хранится основная информация о магазине (тип, название, ...). Суть в том, что магазины бывают разные и товары для каждого типа магазина хранятся в отдельных таблицах. Например, для магазина с типом "Автосервис", товарами являются - услуги. А для магазина с продовольствием, товарами являются - игрушки.
То есть имеем сущность "Магазин" и другие таблицы, в которых хранятся "товары" для этого магазина.
У каждого магазина на каждый товар могу быть ценники. Вот вопрос как раз в таблицах, для хранения таких ценников. Нужно организовать доступ к ценникам, конкретного магазина.
Мои варианты такие:
Вариант 1:
Каждой сущности из "товаров" добавляется поле: price, shopType.
Для каждого магазина создаются таблицы типа: shopId, productId, price. По дефолту они пустые и для доступа идет JOIN на product. Если в price пусто, то берем цену из таблицы с "Продуктом". Если же цена меняется, то эти таблицы заполняются.
Этот подход кажется более логичным, но создает довольно много таблиц, для каждого типа магазина.

Вариант 2:
Создается абстрактная таблица Product, в которой храним множество FK'шек: shopId, price, serviceProductId?, groceryProductId?. .... Создаем CONSTRAINT на то, что в одной записи может быть только один FK на таблицу с конкретным продуктом.
Тогда получается, что все наши ценники хранятся в одной таблице, для разных магазинов. Для PK в этой таблице сделать какой-нибудь serial.
Этот подход не очень нравится из-за того, что придется строить довольно большие запросы с JOIN'ами.

Может у кого-то есть идеи получше? А то что-то я совсем в тупике) Заранее благодарен
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Создаётся отдельная база данных и отдельные проекты под каждый магазин. И обязательно создаётся стикер на мониторе «не усложнять себе жизнь»
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы