数据库设计方案咨询

2020-06-09 21:58:27 +08:00
 gcfredboy

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

谢谢!

1314 次点击
所在节点    数据库
9 条回复
gcfredboy
2020-06-10 05:57:37 +08:00
各位 V 友,给点意见吧,刚开始搞这些,借鉴一下 V 友经验。
takemeaway
2020-06-10 09:25:12 +08:00
多对多不是挺常见的吗? 普通电商系统不也是多对多吗?
一个店铺可发布多个商品,一个商品也可以被多个店铺发布。而且商品还有多个属性。。。
好好想想吧,不难的。
abcbuzhiming
2020-06-10 09:32:02 +08:00
多对多必须有中间表,1 对多倒是可以不需要
gcfredboy
2020-06-10 09:34:55 +08:00
@takemeaway 那就是通过添加中间表来设计吗?
shawshi
2020-06-10 09:49:24 +08:00
中间表 + 部分字段冗余
ayavvv
2020-06-10 10:06:50 +08:00
多对多关系明显用图数据模型,不过图数据模型也可以用关系型数据库来实现。可以看一下属性图模型和三元存储模型。
Leeci
2020-06-10 10:24:47 +08:00
我现在也是遇到同样的问题,想尝试着把整个项目的数据模型设计一遍,但是不知道用什么方法。或者说设计理论是什么。我们的数据模型也是多层级的,一层一层汇总起来的
nandaye
2020-06-10 11:20:37 +08:00
按符合数据库第三范式的规范来设计,多对多就是按你说的方案。 一个工厂表、一个 KPI 表、一个工厂-KPI 映射表。
annielong
2020-06-10 11:58:02 +08:00
多对多要么中间表,要么视图,而且实践中看情况,少量的不按照范式走更方便

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

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

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

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

© 2021 V2EX