有偿求教数据库结构设计

2020-03-26 01:14:02 +08:00
 v2hh

http://oss.dbbaxbb.cn/WechatIMG116.jpeg 如图,每个单元格的价格是可以编辑的,时间和场地都不是固定的,用户选择对应的单元格下单之后改变颜色。 最终合理的建议会发 66 红包,资金有限。

4343 次点击
所在节点    MySQL
20 条回复
littlewing
2020-03-26 01:22:15 +08:00
别设计表了,直接上 mongo
v2hh
2020-03-26 01:23:48 +08:00
@littlewing mongo 并不能解决问题
kinotrip
2020-03-26 01:30:07 +08:00
不需要什么特别的数据结构吧?每天的每个时间点存到一个表,每天的每个可用场地存到另一个表,然后这两个多对多一乘是第三个表,定时自动生成以后几天这三张表的数据就行了。然后数据查询的时候按天返回三张表的内容,让前端自己按数据索引拼界面就行了。
Aoang
2020-03-26 01:32:55 +08:00
表一:id 、时间、场地、价格(外键 表二)、状态
表二:id 、价格(金额)

就一个图,什么需求都没有,怎么设计。

场地可以分出去建表,状态也可以分出去建表。
如果业务量不大,可以不管这些。

考虑到查询问题,时间可以分成两个字段,一个记录日期,一个记录时分秒。

查询的时候,直接查日期。
v2hh
2020-03-26 01:39:48 +08:00
补充一下:时间对应的是一个营业时间,每个商家的营业时间可能不同,场地也是商家自己添加的
v2hh
2020-03-26 01:40:45 +08:00
@kinotrip 时间可能会变,还有场地。
SuperAllen
2020-03-26 01:40:55 +08:00
既然①时间段和②场地都不是固定的,把这两块分别单独拆出来建两个表,③价格设定这块和场地,日期,时间段放一起,另外订单作两个表④订单和⑤订单详情,如果订单数据量大,再在这个基础上作拆分。关联部分做好索引设置。
一点拙见,也欢迎有更好的方案一起探讨
tiluo
2020-03-26 04:04:45 +08:00
这个帖子关于时间段的思路还不错
https://segmentfault.com/q/1010000016159952

以下内容为复制粘贴:
一个店铺的营业时间段一般不会超过三个,所以可以有三个字段来存时间段

店铺 table
id, name, duration_id1, duration_id2 (可空), duration_id3 (可空)
然后时间段的表设计:

时间段 table
id, start_time, end_time
店铺表的 duration_id 是时间段表的外键。
时间段表相当于是 reference data,而店铺表的数据是会更改的。
Immortal
2020-03-26 04:16:33 +08:00
这个普通逻辑就好了吧:
场地表:id 商家 id 场地名称,营业时间...额外你需要的字段。
- 关于营业时间,你这边应该是按小时为单位切分成 15 个对吧,提供一个思路,这个字段用标记位。一周 7 天每天 15 个时段,其实就是 105 位+5 位分隔符,比如周一 7-8 点不营业其他全营业,分隔符为“|”,表里就是:011111111111111|111...
在页面展现的时候优先判断是否营业,再展现具体数据(价格等),这样营业时间就不会和下面的场地拓展表有关联了,是个商家属性。

场地拓展表:id 场地 id 价格 当前时段的场地具体类型 时段序号。
- 这里的时段我看图片上就是 15 个时段,可以不用时间表示,直接用序号也可以 1-15
Immortal
2020-03-26 04:19:57 +08:00
@Immortal
着急了。应该把营业时间提到另一个商家表,不应该在场地表。
当然,如果每个场地有自己的营业时间,商家还有商家的营业时间,也可以根据这个思路拓展,进行位运算(&)来判断当前时段当前场地是否营业。
thinkmore
2020-03-26 09:33:13 +08:00
```json
{
_id: 1,
# 某一天,比如 3.27
date: 157xxxxxxxxx,

info: [
{
time: 7:00,
detail: [
{
price: 183,
address: A2 半场,
type: 可预订
},
{
price: 183,
address: B1 半场,
type: 转让场地
}
]
},

{
time: 8:00,
detail: [
{
price: 183,
address: A2 半场,
type: 可预订
}
]
}

]

}


```

这个是 mongodb 的数据结构,可以参考下。

商家可以自定义场地,时间等
v2hh
2020-03-26 10:00:54 +08:00
感谢各位回复,现在有个问题就是初始数据的问题,不可能商家每个单元格都分别设置,我想的是查询的时候直接返回时间段,场地,价格这些,前端自己匹配单元格价格,只有商家单独设定某个单元格的价格才会被记录入库,不然预先生成数据之后商家如果改价格会很难处理
fancy111
2020-03-26 10:01:50 +08:00
这有什么特别的吗? 随便设计一个都能用。 一个表就搞定了
thinkmore
2020-03-26 10:12:27 +08:00
@v2hh 预生成数据即可,把能填充的全部填充。比如我上面给出的数据结构
summerwar
2020-03-26 10:17:15 +08:00
参考日历
v2hh
2020-03-26 10:26:41 +08:00
@thinkmore 如果与生成的话,之后商家改变价格,所有生成的数据都要改,还有需要生成一周的数据会有点多吧
xuanbg
2020-03-26 11:39:53 +08:00
这个不是价格日历嘛……每天每个时间段一条数据,场地、价格以 k/v 形式存成 Json 就行。

红包就免了,能帮到你就好
thinkmore
2020-03-26 13:31:17 +08:00
@v2hh 一天的数据对应数据库是一条记录。 一周也才七条记录,多?

每个商家都有对应的记录,如果要修改只用修改对应商家的即可。

初始化的时候可以用模板为商家填充就行了。当需要修改的时候从将模板数据复制一份保存成商家的即可
v2hh
2020-03-26 21:10:58 +08:00
@thinkmore 只存一条记录涉及到 单元格数据变更会和麻烦的吧
thinkmore
2020-04-01 09:30:52 +08:00
@v2hh 不麻烦,在 mongodb 中更新数组很简单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX