Database 计算机现场数据库设计
我需要关于为以下数据设计数据库/表的最佳方法的帮助 我有一个供应商:为一个项目提供各种产品 对于他们提供的每种产品。费率的变化取决于一周中的哪一天、一天中的时间以及是公共假日还是周末 有什么想法吗 例如:Database 计算机现场数据库设计,database,database-design,Database,Database Design,我需要关于为以下数据设计数据库/表的最佳方法的帮助 我有一个供应商:为一个项目提供各种产品 对于他们提供的每种产品。费率的变化取决于一周中的哪一天、一天中的时间以及是公共假日还是周末 有什么想法吗 例如: Week Day Rates | Saturday/Sunday & Public Holiday Rates Start Time 0:00 3:00 6:00 17:00
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
在最大限度地减少数据量以维护和保持灵活性的同时,最好的管理方法是使用日期/时间范围。对于假日费率,您可以保留两个费率列(常规/假日),也可以保留单独的记录,其中带有一个标志,指示价格是针对常规日期还是假日 您可以选择如何表示此信息。您可以使用调整为任意起始日期的日期时间列来表示它。这在列方面很简单,但使用起来可能会混淆。另一种方法是使用两列:Day_of_Week(极小的int)和Time(datetime,不带日期或时间,如果DBMS支持的话) 我推荐第二种选择。因此,您的桌子可以如下所示:
PRICE (
id int identity
, product_id int
, day_of_week int
, start_time time
, end_time time
, regular_price money
, holiday_price money
)
当然,您需要添加主键和外键约束…以下是一篇关于我如何操作的天真文章: ProductId(int)开始时间(time)结束时间(time)价格(十进制/货币)IsHolidayPrice(布尔值) 我没有为价格行添加id,因为我猜您永远不会使用它。
您总是通过查询访问价格,在查询中指定过滤器:ProductId、购买时间以及当天是否为假日。这是家庭作业吗?到目前为止,您创建了什么样的模式,哪些是有效的,哪些是无效的?到目前为止,你做了些什么?不,这不是家庭作业,它是我正在从事的一个更大项目的一部分,我确信这一点可以通过多种方式完成,我只是不确定哪种方式可以在存储/报告方面给我最大的灵活性,我的想法与@Joel brown下面提到的类似,唯一的区别是,我有额外的字段作为一天的类型,我有单一字段的价格,但我认为乔尔·布朗比我的好让我们看看还有什么其他想法。