› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
v2hh
V2EX  ›  MySQL

有偿求教数据库结构设计

  •  
  •   v2hh · Mar 26, 2020 · 5671 views
    This topic created in 2376 days ago, the information mentioned may be changed or developed.

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

    20 replies  •  2020-04-01 09:30:52 +08:00
    littlewing
        1
    littlewing  
       Mar 26, 2020 via iPhone
    别设计表了,直接上 mongo
    v2hh
        2
    v2hh  
    OP
       Mar 26, 2020
    @littlewing mongo 并不能解决问题
    kinotrip
        3
    kinotrip  
       Mar 26, 2020
    不需要什么特别的数据结构吧?每天的每个时间点存到一个表,每天的每个可用场地存到另一个表,然后这两个多对多一乘是第三个表,定时自动生成以后几天这三张表的数据就行了。然后数据查询的时候按天返回三张表的内容,让前端自己按数据索引拼界面就行了。
    Aoang
        4
    Aoang  
       Mar 26, 2020 via Android
    表一:id 、时间、场地、价格(外键 表二)、状态
    表二:id 、价格(金额)

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

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

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

    查询的时候,直接查日期。
    v2hh
        5
    v2hh  
    OP
       Mar 26, 2020
    补充一下:时间对应的是一个营业时间,每个商家的营业时间可能不同,场地也是商家自己添加的
    v2hh
        6
    v2hh  
    OP
       Mar 26, 2020
    @kinotrip 时间可能会变,还有场地。
    SuperAllen
        7
    SuperAllen  
       Mar 26, 2020 via Android
    既然①时间段和②场地都不是固定的,把这两块分别单独拆出来建两个表,③价格设定这块和场地,日期,时间段放一起,另外订单作两个表④订单和⑤订单详情,如果订单数据量大,再在这个基础上作拆分。关联部分做好索引设置。
    一点拙见,也欢迎有更好的方案一起探讨
    tiluo
        8
    tiluo  
       Mar 26, 2020
    这个帖子关于时间段的思路还不错
    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
        9
    Immortal  
       Mar 26, 2020
    这个普通逻辑就好了吧:
    场地表:id 商家 id 场地名称,营业时间...额外你需要的字段。
    - 关于营业时间,你这边应该是按小时为单位切分成 15 个对吧,提供一个思路,这个字段用标记位。一周 7 天每天 15 个时段,其实就是 105 位+5 位分隔符,比如周一 7-8 点不营业其他全营业,分隔符为“|”,表里就是:011111111111111|111...
    在页面展现的时候优先判断是否营业,再展现具体数据(价格等),这样营业时间就不会和下面的场地拓展表有关联了,是个商家属性。

    场地拓展表:id 场地 id 价格 当前时段的场地具体类型 时段序号。
    - 这里的时段我看图片上就是 15 个时段,可以不用时间表示,直接用序号也可以 1-15
    Immortal
        10
    Immortal  
       Mar 26, 2020
    @Immortal
    着急了。应该把营业时间提到另一个商家表,不应该在场地表。
    当然,如果每个场地有自己的营业时间,商家还有商家的营业时间,也可以根据这个思路拓展,进行位运算(&)来判断当前时段当前场地是否营业。
    thinkmore
        11
    thinkmore  
       Mar 26, 2020
    ```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
        12
    v2hh  
    OP
       Mar 26, 2020
    感谢各位回复,现在有个问题就是初始数据的问题,不可能商家每个单元格都分别设置,我想的是查询的时候直接返回时间段,场地,价格这些,前端自己匹配单元格价格,只有商家单独设定某个单元格的价格才会被记录入库,不然预先生成数据之后商家如果改价格会很难处理
    fancy111
        13
    fancy111  
       Mar 26, 2020
    这有什么特别的吗? 随便设计一个都能用。 一个表就搞定了
    thinkmore
        14
    thinkmore  
       Mar 26, 2020
    @v2hh 预生成数据即可,把能填充的全部填充。比如我上面给出的数据结构
    summerwar
        15
    summerwar  
       Mar 26, 2020
    参考日历
    v2hh
        16
    v2hh  
    OP
       Mar 26, 2020
    @thinkmore 如果与生成的话,之后商家改变价格,所有生成的数据都要改,还有需要生成一周的数据会有点多吧
    xuanbg
        17
    xuanbg  
       Mar 26, 2020
    这个不是价格日历嘛……每天每个时间段一条数据,场地、价格以 k/v 形式存成 Json 就行。

    红包就免了,能帮到你就好
    thinkmore
        18
    thinkmore  
       Mar 26, 2020
    @v2hh 一天的数据对应数据库是一条记录。 一周也才七条记录,多?

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

    初始化的时候可以用模板为商家填充就行了。当需要修改的时候从将模板数据复制一份保存成商家的即可
    v2hh
        19
    v2hh  
    OP
       Mar 26, 2020
    @thinkmore 只存一条记录涉及到 单元格数据变更会和麻烦的吧
    thinkmore
        20
    thinkmore  
       Apr 1, 2020
    @v2hh 不麻烦,在 mongodb 中更新数组很简单
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2467 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 01:02 · PVG 09:02 · LAX 18:02 · JFK 21:02
    ♥ Do have faith in what you're doing.