V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gcfredboy
V2EX  ›  数据库

数据库设计方案咨询

  •  1
     
  •   gcfredboy · 2020-06-09 21:58:27 +08:00 via Android · 1455 次点击
    这是一个创建于 1628 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求助:一个公司考核的数据库项目,里面包含多个多对多的关系,如一个工厂包含多个 KPI,一个 KPI 也对应多个工厂;一个过程分工包含多个二级流程,每个二级流程也对应多个过程分工;每个二级流程对应多个三级流程,每个三级流程也对应多个二级流程等等。这种考核系统的数据库设计,是否将每个多对多的关系都增加一个中间表即可呢?还有什么更好的解决多对多关系的设计方法吗?

    谢谢!

    9 条回复    2020-06-10 11:58:02 +08:00
    gcfredboy
        1
    gcfredboy  
    OP
       2020-06-10 05:57:37 +08:00 via Android
    各位 V 友,给点意见吧,刚开始搞这些,借鉴一下 V 友经验。
    takemeaway
        2
    takemeaway  
       2020-06-10 09:25:12 +08:00
    多对多不是挺常见的吗? 普通电商系统不也是多对多吗?
    一个店铺可发布多个商品,一个商品也可以被多个店铺发布。而且商品还有多个属性。。。
    好好想想吧,不难的。
    abcbuzhiming
        3
    abcbuzhiming  
       2020-06-10 09:32:02 +08:00
    多对多必须有中间表,1 对多倒是可以不需要
    gcfredboy
        4
    gcfredboy  
    OP
       2020-06-10 09:34:55 +08:00 via Android
    @takemeaway 那就是通过添加中间表来设计吗?
    shawshi
        5
    shawshi  
       2020-06-10 09:49:24 +08:00
    中间表 + 部分字段冗余
    ayavvv
        6
    ayavvv  
       2020-06-10 10:06:50 +08:00
    多对多关系明显用图数据模型,不过图数据模型也可以用关系型数据库来实现。可以看一下属性图模型和三元存储模型。
    Leeci
        7
    Leeci  
       2020-06-10 10:24:47 +08:00
    我现在也是遇到同样的问题,想尝试着把整个项目的数据模型设计一遍,但是不知道用什么方法。或者说设计理论是什么。我们的数据模型也是多层级的,一层一层汇总起来的
    nandaye
        8
    nandaye  
       2020-06-10 11:20:37 +08:00
    按符合数据库第三范式的规范来设计,多对多就是按你说的方案。 一个工厂表、一个 KPI 表、一个工厂-KPI 映射表。
    annielong
        9
    annielong  
       2020-06-10 11:58:02 +08:00
    多对多要么中间表,要么视图,而且实践中看情况,少量的不按照范式走更方便
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2726 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:05 · PVG 23:05 · LAX 07:05 · JFK 10:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.