mysql Web应用程序的数据库设计,每个商店在每个不同的日子都提供交易[已关闭]

kmbjn2e3  于 12个月前  发布在  Mysql
关注(0)|答案(1)|浏览(77)

**已关闭。**此问题不符合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号提供优惠。
在这种情况下,我也希望停止相同类型的数据的冗余/重复。
我应该如何设计数据库?

nhjlsmyf

nhjlsmyf1#

我首先想到的是
由一个“记录”表连接的三个静态表:

店铺:

| id | Name |
~~~~~~~~~~~~~
| 1  | A    |
-------------
| 2  | B    |
-------------
| 3  | C    |
-------------
...and so on...

时间范围(天/时间范围组合):

| id | Day | StartTime | EndTime|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | Mon | 2:00pm    | 3:00pm |
---------------------------------
| 2  | Mon | 7:00pm    | 8:00pm |
---------------------------------
| 3  | Sun | 2:00pm    | 3:00pm |
---------------------------------
... and so on...

分类:

| id | Name     |
~~~~~~~~~~~~~~~~~
| 1  | Alcohol  |
-----------------
| 2  | Clothing |
-----------------
| 3  | Groceries|
-----------------
... and so on...

然后是您的记录表:

| id | Shops_ids | Timeframe_ids | Category_ids |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

在这个表中,存储arrays (possible in PostreSLQ)。这可以避免出现太多几乎重复的行。
例如:“商店A和B都在周一和周日从下午2点到下午3点提供类别2和3的交易”可以存储为:

| id | Shops_ids | Timeframe_ids | Category_ids |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | [1,2]     | [2,3]         | [1,3]        |
-------------------------------------------------

然而,关系数据库的关键是后端的数据可能很复杂,计算机非常擅长快速查找数据。

所以,如果我是你,我只会用单个值创建Records表,你可以索引你最有可能搜索的列,这对数组值来说很难做到。Records表会很大很乱,但查询起来容易得多。

示例

1.)A店周一至周五下午4点至5点提供第1类和第3类的优惠
2.)B店在周四和周六下午1点到6点提供第1类和第3类的交易
给定:商店和类别已在各自的表中。
让我们调整我们对“日”的定义,以适应以下情况:
M =星期一
T =星期二
W =星期三
H =星期四
A =星期六
U =星期日
(This字符串可以从表单上的一系列复选框生成以保持格式)

时间范围

| id | Day  | StartTime | EndTime|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | M    | 2:00pm    | 3:00pm |
----------------------------------
| 2  | M    | 7:00pm    | 8:00pm |
----------------------------------
| 3  | FAU  | 2:00pm    | 3:00pm | *(Friday, Sat, Sunday)
----------------------------------
| 4  | MTWHF| 4:00pm    | 5:00pm | *Shop A's sale.
----------------------------------
| 5  | HA   | 1:00pm    | 6:00pm | *Shop B's sale.
----------------------------------

记录

| id | Shops_ids | Timeframe_ids | Category_ids |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1  | [1,2]     | [2,3]         | [1,3]        |
-------------------------------------------------
| 2  | 1         | 4             | [1,3]        | *Shop A's sale
-------------------------------------------------
| 3  | 2         | 5             | [1,3]        | *Shop B's sale
-------------------------------------------------

希望能帮上忙。

相关问题