Разработка базы данных Compund Field - PullRequest
0 голосов
/ 20 марта 2012

Мне нужна помощь по наилучшему способу создания базы данных / таблиц для следующих данных.

У меня есть поставщик : поставляет различные продукты для проекта.

Для каждого продукта, который они поставляют.Курс меняется в зависимости от дня недели, времени дня и выходных дней.

Любые идеи ???

Пример:

                    Week Day Rates        | Saturday/Sunday & Public Holiday Rates                  
Start Time  0:00    3:00    6:00    17:00 | 0:00    3:00    6:00    17:00   20:00   
End Time    3:00    6:00    17:00   20:00 | 3:00    6:00    17:00   20:00   23:59

Product 1   1.00    2.00    3.00    4.00  | 6.00    7.00    8.00    9.00    10.00   
Product 2   5.00    8.00    8.00    9.00  | 2.00    6.00    7.00    8.00    9.00    
Product 3   3.00    2.00    3.00    5.00  | 3.00    4.00    5.00    8.00    10.00   

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Лучший способ справиться с этим, минимизируя объем данных для сохранения и сохранения гибкости, - это использовать диапазоны даты и времени. Для праздничного тарифа вы можете оставить два столбца тарифа (обычный / праздничный) или вести отдельные записи с флагом, указывающим, является ли цена обычным днем ​​или праздничным днем.

У вас есть выбор, как представлять эту информацию. Вы можете представить его с помощью столбцов даты и времени, настроенных на произвольную начальную дату. Это было бы просто с точки зрения столбцов, но это могло бы быть запутанным в использовании. Другой способ заключается в использовании двух столбцов: Day_of_Week (tiny int) и Time (datetime без даты или только времени, если ваша СУБД поддерживает это).

Я бы порекомендовал второй вариант. Таким образом, ваш стол может выглядеть так:

PRICE (
  id            int identity
, product_id    int
, day_of_week   int
, start_time    time
, end_time      time
, regular_price money
, holiday_price money
)

Конечно, вы захотите добавить ограничения первичного и внешнего ключа ...

0 голосов
/ 20 марта 2012

Вот наивное написание того, как я это сделаю:

ProductId (int) StartTime (время) EndTime (время) Цена (десятичное число / деньги) IsHolidayPrice (логическое значение)

IЯ не добавил идентификатор для ценовой строки, потому что, думаю, вы никогда не будете его использовать.Вы всегда получаете доступ к ценам по запросу, в котором вы указываете фильтры: ProductId, Hour для покупки и, если день выходной или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...