以下是该方案: 我正在尝试创建一个允许商店输入产品和价格的网站。我希望他们能够根据一周中的不同日期和一天中的时间设置不同的价格。然后,用户可以访问该网站,选择商店和商品,然后返回当前价格。
原创思想: 在表格上我会有表格允许正常价格和销售价格,每天他们可以选择销售开始时间和结束时间,如果他们想要的话。这在数据库方面是最小的,但是非常严格,并且不允许太多的灵活性(多个时间点一天不超过一个销售价格)。
如果我添加更多时间点,价格将大大减慢查询速度?最好将所有这些点放在一个表中,还是将它们分成单独的表更有效?任何建议都表示赞赏!
答案 0 :(得分:3)
最好将所有这些点放在一个表中,还是将它们分成单独的表更有效?
normalize your data总是更有效率。
如果我添加更多时间点,价格会大大减慢查询速度?
这取决于您使用的数据库类型。关系数据库是为标准化数据设计的。
对于价格较高的商品,以下是您对数据进行建模的方式。
Item
----
Item ID
Item Name
Price
...
ItemPrice
---------
ItemPrice ID
Item ID
Price
From Time Stamp
To Time Stamp
表格第一列中的ID字段是主要聚类键,自动递增int或long。
在Item
表中,价格是通常的价格。
在ItemPrice
表中,您还有一个唯一索引(项目ID,从时间戳降序)。时间戳和时间戳将定义更改价格的日期和时间。
因此,每当您在网站应用程序代码中查找价格时,首先检查ItemPrice
表。如果您没有获得更改的价格行,则使用Item
表格中的价格。
您还必须在您的网站应用程序代码中确保在给定的日期/时间范围内只有一个更改的价格。
从时间戳到时间戳的工作,当你想要经常改变价格时,比如每月。如果您希望定期更改周日价格,则还需要calendar table,因此您的网站应用程序可以从日历生成时间戳。