求助:一个公司考核的数据库项目,里面包含多个多对多的关系,如一个工厂包含多个 KPI,一个 KPI 也对应多个工厂;一个过程分工包含多个二级流程,每个二级流程也对应多个过程分工;每个二级流程对应多个三级流程,每个三级流程也对应多个二级流程等等。这种考核系统的数据库设计,是否将每个多对多的关系都增加一个中间表即可呢?还有什么更好的解决多对多关系的设计方法吗?
谢谢!
1
gcfredboy OP 各位 V 友,给点意见吧,刚开始搞这些,借鉴一下 V 友经验。
|
2
takemeaway 2020-06-10 09:25:12 +08:00
多对多不是挺常见的吗? 普通电商系统不也是多对多吗?
一个店铺可发布多个商品,一个商品也可以被多个店铺发布。而且商品还有多个属性。。。 好好想想吧,不难的。 |
3
abcbuzhiming 2020-06-10 09:32:02 +08:00
多对多必须有中间表,1 对多倒是可以不需要
|
4
gcfredboy OP @takemeaway 那就是通过添加中间表来设计吗?
|
5
shawshi 2020-06-10 09:49:24 +08:00
中间表 + 部分字段冗余
|
6
ayavvv 2020-06-10 10:06:50 +08:00
多对多关系明显用图数据模型,不过图数据模型也可以用关系型数据库来实现。可以看一下属性图模型和三元存储模型。
|
7
Leeci 2020-06-10 10:24:47 +08:00
我现在也是遇到同样的问题,想尝试着把整个项目的数据模型设计一遍,但是不知道用什么方法。或者说设计理论是什么。我们的数据模型也是多层级的,一层一层汇总起来的
|
8
nandaye 2020-06-10 11:20:37 +08:00
按符合数据库第三范式的规范来设计,多对多就是按你说的方案。 一个工厂表、一个 KPI 表、一个工厂-KPI 映射表。
|
9
annielong 2020-06-10 11:58:02 +08:00
多对多要么中间表,要么视图,而且实践中看情况,少量的不按照范式走更方便
|