Я работаю над проектом RoR для работы, и у меня возникли проблемы с принятием решения о дизайне таблиц моей реляционной базы данных.
Обратите внимание на следующее:
У меня есть модель продукта, каждый продукт имеет уникальное имя.
У меня также есть модель под названием Магазин, в каждом магазине много товаров.
Наконец, у меня есть модель Order. Очевидно, что Order связан с магазином, из которого был сделан заказ, и со списком заказанных товаров.
Я хотел бы сохранить значения по умолчанию (например, цену по умолчанию) для каждого продукта, и я хотел бы, чтобы каждый магазин мог перезаписывать эти значения по умолчанию, если это необходимо, но не могу определиться со стратегией этого.
Я имею в виду следующее:
Создайте таблицу продуктов, которая будет включать название продукта, а также столбцы для сохранения значений продукта по умолчанию (например, цена).
Создайте таблицу Shop, которая будет включать в себя все, что связано с магазином.
Создайте таблицу Product_To_Shop, в которой будет храниться количество товаров для этого конкретного магазина, а также будут содержаться дополнительные столбцы, соответствующие столбцам значений продукта по умолчанию, которые позволят магазину перезаписывать значения, связанные с продуктом по умолчанию.
Теперь, когда я хочу получить цену для определенного заказа, я сначала проверю таблицу Product_To_Shop для соответствующего продукта и магазина и проверю поле «Цена» для соответствующей строки, и в случае, если она не установлена на value (ноль), перейдите к таблице Product и выберите значение цены по умолчанию для соответствующего продукта.
Все это выглядит немного сложным для задачи, которая кажется немного более тривиальной.
Мне было интересно, приходилось ли кому-нибудь когда-либо иметь дело с сохранением значений по умолчанию в базе данных, как это, и у него есть более элегантное решение, поскольку это кажется излишним...
1 ответ
Вы можете сделать следующее
- Создайте таблицу «Продукты», в которую будут включены данные о товарах (но не цены).
- Создайте таблицу Shops, в которую будут включены данные о магазинах.
- Создайте таблицу Prices, которая будет включать Product_id, Shop_id, Price.
Shop_id по умолчанию имеет значение null, которое будет указывать вашу цену по умолчанию.
Когда вам нужна цена, получите один соответствующий shop_id или isnull
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.