1

这是场景:我正在尝试创建一个允许商店输入产品和价格的网站。我希望他们能够根据一周中的不同日子和一天中的时间设置不同的价格。然后,用户可以访问网站,选择商店和商品,它会返回当前价格。

最初的想法:在表格上我会让表格允许正常价格和销售价格,并且每天他们可以根据需要选择销售开始时间和结束时间。这在数据库方面将是最小的,但非常严格并且不允许很大的灵活性(多个时间点一天不超过一个销售价格)。

如果我添加更多的时间点和价格,会显着减慢查询速度吗?最好将所有这些点放在一张表中,还是将它们分成单独的表更有效?任何建议表示赞赏!

4

1 回答 1

3

最好将所有这些点放在一张表中,还是将它们分成单独的表更有效?

标准化数据总是更有效。

如果我添加更多的时间点和价格,会显着减慢查询速度吗?

这取决于您使用的数据库类型。关系数据库是为标准化数据设计的。

对于具有多种价格的商品,您可以按照以下方式对数据进行建模。

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表中的价格。

您还必须确保在您的网站应用程序代码中,在给定的日期/时间范围内只有一个更改的价格。

当您想每隔一段时间(例如每月)更改价格时,从时间戳和到时间戳工作。如果您想定期更改周日价格,您还需要一个日历表,以便您的网站应用程序可以从日历中生成时间戳。

于 2013-06-06T06:43:46.110 回答