V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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
kukala
V2EX  ›  MySQL

[求助] mysql 不同的类型商品,如何设计表,是分别建表还是有个统一表

  •  
  •   kukala · 2020-04-17 09:35:19 +08:00 · 3617 次点击
    这是一个创建于 1710 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不同的类型商品,如何设计表,是分别建表还是有个统一表

    例如:旅游线路,酒店,机票

    1. 描述:

    • 首页会一起对“旅游线路,酒店,机票”的产品进行推荐显示(如:淘宝 APP 首页的猜你喜欢)

    • 搜索框,搜索“北京”时,先显示的是搜索分类页面(如:北京的酒店、北京的门票、北京的旅游线路)

    • 订单表,“旅游线路,酒店,机票”的产品的订单都是放在同一个订单中心页面显示(如:淘宝 APP 的我的订单)

    2. 初步设想:

    • 针对描述 1:自己初步是想针对“旅游线路,酒店,机票”的产品分别建表,然后有个统一商品表,关联起来
    如:
    
    goods->统一表,关联“旅游线路,酒店,机票”的产品表
    
    tours->旅游线路表
    
    hotel->酒店表
    
    fight->机票表
    
    • 针对描述 2:因为是根据产品分别建表了,搜索时就查找各自的表数据就行了
    • 针对描述 3:因为在一个订单中心,所以设想和描述 1 操作一样,有个统一的订单表,对各个产品进行关联

    最后:不知道这样的设计是否可行,是否方便以后数据量大了后的分表分区???

    欢迎提出更好建议,谢谢了

    14 条回复    2020-04-20 17:00:19 +08:00
    hugedata
        1
    hugedata  
       2020-04-17 09:54:19 +08:00   ❤️ 1
    数据量、并发访问量不大,没有任何问题。怎么搞都没有问题。
    针对以上的三个需求描述,访问量上来时,增加缓存,再大一点,可以增加定时提前计算放缓存,再大,上 es 做搜索。
    抛开数据量和并发数的话,不太好定义怎么设计更好。
    hugedata
        2
    hugedata  
       2020-04-17 09:57:28 +08:00
    我还是比较赞成分开存储,至于你要不要弄个统一商品表来关联,还是看你的取舍,统一关联了起来,你要把需要搜索的字段也关联进来。不然你的 sql 语句还是要把几个表的查询结果都 union all 。
    kukala
        3
    kukala  
    OP
       2020-04-17 10:09:22 +08:00
    @hugedata 感谢回复,搜索初步先按照类别来搜索好了,类型 tabs 标签;
    lower
        4
    lower  
       2020-04-17 13:47:11 +08:00
    分开存储,,就算有 统一搜索等后续需求,也可以用视图或者 搜索引擎 来搞;
    hugedata
        5
    hugedata  
       2020-04-17 14:33:12 +08:00
    tabs? tags 吧。比较好奇,弄标签的话,标签是怎么存,怎么搜的? like 左右匹配还是 match against ?
    keleifeng
        6
    keleifeng  
       2020-04-17 14:36:38 +08:00
    分开存储,,就算有 统一搜索等后续需求,也可以用视图或者 搜索引擎 来搞;
    kanepan19
        7
    kanepan19  
       2020-04-17 14:40:49 +08:00
    个人建议,存同一个表, 用扩展表扩展业务专用信息。
    因为商品,订单,支付,统一逻辑,多个业务可以公用。
    kukala
        8
    kukala  
    OP
       2020-04-17 14:45:50 +08:00
    @hugedata
    分开存储的话,搜索页初步可以这样来
    搜索“北京”
    下拉建议框分别是
    “北京”的旅游线路
    “北京”的酒店
    “北京”的机票
    点击后,再按照商品类型来搜索

    看飞猪 APP 上是这样来的
    kukala
        9
    kukala  
    OP
       2020-04-17 14:49:37 +08:00
    @lower 商品表和订单表都分开存储吗?
    1ffree
        10
    1ffree  
       2020-04-17 15:52:56 +08:00
    先想想 order 表里的 商品 id 怎么取?
    lower
        11
    lower  
       2020-04-17 16:21:56 +08:00
    @kukala 订单不确定,还是看具体的业务场景吧,如果还存在着把客户订单再拆分到 商家子订单等到复杂的后端业务,那最好考虑是否分开。
    统一的商品表从你描述的场景感觉用处不大,不仅要多维护表和关系,搜索时扩展表还是要关联查才行。
    hugedata
        12
    hugedata  
       2020-04-20 13:56:03 +08:00
    @kukala 感谢,学到了。
    kukala
        13
    kukala  
    OP
       2020-04-20 16:59:47 +08:00
    @hugedata 感谢你才对,我尝试分开存储先
    kukala
        14
    kukala  
    OP
       2020-04-20 17:00:19 +08:00
    @lower 感谢回复,先尝试分开存储
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:32 · PVG 02:32 · LAX 10:32 · JFK 13:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.