RoR и реляционные базы данных: обработка значений модели по умолчанию в базе данных - PullRequest
0 голосов
/ 27 декабря 2011

Я работаю над проектом RoR для работы, и у меня возникают проблемы с выбором дизайна таблиц моей реляционной базы данных.

Обратите внимание на следующее:

У меня есть модель Product, каждый продукт имеет уникальное имя.

У меня также есть модель под названием Магазин, в каждом магазине есть много товаров.

Наконец, у меня есть модель заказа, заказ, очевидно, связан с магазином, из которого был сделан заказ, и со списком товаров, которые были заказаны.

Я хотел бы сохранить значения по умолчанию (например, цену по умолчанию) для каждого продукта, и я бы хотел, чтобы каждый Магазин мог перезаписывать эти значения по умолчанию, если это необходимо, но не могу определиться со стратегией этого.

Я имею в виду следующее:

  • Создайте таблицу Product, которая будет включать название продукта, а также столбцы для сохранения значений продукта по умолчанию (например, цена)

  • Создайте таблицу магазина, которая будет включать все, что связано с магазином.

  • Создайте таблицу Product_To_Shop, в которой будет храниться количество товара для этого конкретного магазина, и будут содержаться дополнительные столбцы, которые соответствуют столбцам значений по умолчанию для продукта, что позволит магазину перезаписывать значения, связанные с продуктом по умолчанию.

Теперь, когда я хочу получить цену для конкретного заказа, я сначала проверю таблицу Product_To_Shop для соответствующего товара и магазина и проверим поле Цена для соответствующей строки, а в случае, если это не так. установите значение (ноль), перейдите к таблице Product и получите значение цены по умолчанию для соответствующего продукта.

Все это выглядит немного сложнее для задачи, которая кажется немного более тривиальной.

Мне было интересно, приходилось ли кому-либо когда-либо иметь дело с сохранением значений по умолчанию в базе данных подобным образом, и у него есть более элегантное решение, так как это кажется излишним ...

1 Ответ

0 голосов
/ 27 декабря 2011

вы можете сделать следующее

  1. Создайте таблицу продуктов, в которую будут включены данные о товарах (но без цен).
  2. Создайте таблицу магазинов, в которую войдут данные магазинов.
  3. Создайте таблицу цен, которая будет включать Product_id, Shop_id, Price.

Shop_id по умолчанию равен нулю, что будет указывать вашу цену по умолчанию

Когда вам нужна цена, получите значение, соответствующее shop_id или isnull

...