**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。
这个问题似乎不是关于在help center定义的范围内编程。
8年前关闭。
Improve this question
假设我有10家商店,每家商店在不同的日子--星期天、星期一等等--在有限的时间段内,有些商店在下午4点到5点打折,有些商店在晚上8点到10点,有些商店在下午4点到10点打折。
我有几个类别的商店会给予像啤酒,葡萄酒,食品等交易。
例如:假设类别为1到5。
商店A在周日下午4点到6点在1和2上提供优惠
A店周一晚上7点到8点在2号和3号店打折
A店星期三晚上7点到8点在1号和5号店打折
B店在周日下午4点到6点在1号和2号提供优惠
B店周一晚上7点到8点在2号和5号店打折
B店在周六晚上7点到8点的1号和4号有优惠
C店在星期日下午5点到6点在1号和3号提供优惠
C店在星期三下午5点到8点在3号和5号提供优惠
C店在2号和4号星期五下午4点到8点提供优惠
有一种可能性,任何商店都可以提供相同类型的交易,每天或可能3或4或5天的一周,并在其他日子不同。
D店在星期日、星期一、星期二等下午5点到6点在1号和3号提供优惠
Shop e在星期日、星期一、星期二、星期五下午5点到6点提供1和5的优惠
e商店在星期三和星期四下午4点到6点在2号和4号提供优惠。
在这种情况下,我也希望停止相同类型的数据的冗余/重复。
我应该如何设计数据库?
1条答案
按热度按时间nhjlsmyf1#
我首先想到的是
由一个“记录”表连接的三个静态表:
店铺:
时间范围(天/时间范围组合):
分类:
然后是您的记录表:
在这个表中,存储arrays (possible in PostreSLQ)。这可以避免出现太多几乎重复的行。
例如:“商店A和B都在周一和周日从下午2点到下午3点提供类别2和3的交易”可以存储为:
然而,关系数据库的关键是后端的数据可能很复杂,计算机非常擅长快速查找数据。
所以,如果我是你,我只会用单个值创建Records表,你可以索引你最有可能搜索的列,这对数组值来说很难做到。Records表会很大很乱,但查询起来容易得多。
示例
1.)A店周一至周五下午4点至5点提供第1类和第3类的优惠
2.)B店在周四和周六下午1点到6点提供第1类和第3类的交易
给定:商店和类别已在各自的表中。
让我们调整我们对“日”的定义,以适应以下情况:
M =星期一
T =星期二
W =星期三
H =星期四
A =星期六
U =星期日
(This字符串可以从表单上的一系列复选框生成以保持格式)
时间范围
记录
希望能帮上忙。