我需要有关为以下数据设计数据库/表的最佳方法的帮助。
我有供应商:为项目提供各种产品。
对于他们提供的每种产品。价格根据星期几,一天中的时间以及公共假日或周末而变化。
任何想法???
示例:
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
答案 0 :(得分:1)
管理此问题的最佳方法是尽量减少要维护的数据量并保持灵活性,这是使用日期/时间范围。对于假期费率,您可以保留两个费率列(常规/假期),也可以保留单独的记录,并带有一个标记,指示价格是针对常规日还是假日。
您可以选择如何表示此信息。您可以使用调整到某个任意开始日期的日期时间列来表示它。就列而言,这将是简单的,但使用起来可能会令人困惑。另一种方法是使用两列:Day_of_Week(tiny int)和Time(仅限日期或时间,如果您的DBMS支持它)。
我建议第二个选项。所以你的桌子看起来像这样:
PRICE (
id int identity
, product_id int
, day_of_week int
, start_time time
, end_time time
, regular_price money
, holiday_price money
)
当然,您需要添加主键和外键约束......
答案 1 :(得分:0)
这是一篇关于我如何做的天真写作:
ProductId(int)StartTime(时间)EndTime(时间)价格(decimal / money)IsHolidayPrice(boolean)
我没有为价格行添加ID,因为我猜你永远不会使用它。 您始终可以通过指定过滤器的查询来访问价格:ProductId,购买小时以及是否是假日。