gpt4 book ai didi

mysql - 两个业务几乎相同的实体是否应该合并?

转载 作者:行者123 更新时间:2023-11-29 11:00:11 25 4
gpt4 key购买 nike

我对数据库了解不多,但我正在尝试设计一个。通常我可以设计一个简单的数据库,但这种情况对我来说很困惑。

假设我有 3 个主要实体,即组织组织培训师独立培训师

在我的系统中,组织可以添加类(class)并将组织的培训师分配给其添加的类(class)。该组织的培训师无法添加类(class),但只能在其中添加类(class)。

虽然与任何组织没有任何关系的独立培训师可以两者兼得,添加类(class)并在其中添加类(class)。

所以我的问题是,组织的培训师和独立培训师是否应该有一个像这样的组合表:-

| Organization |
----------------
| id |
| name |



| Trainer |
-----------
| id |
| org_id |
| name |



| Course | | Lesson |
---------------- ----------------
| id | | id |
| org_id | | ind_train_id |
| ind_train_id | | org_train_id |
| name | | name |

或者他们应该分开:-

| Organization |      | Organization's trainer |
---------------- --------------------------
| id | | id |
| name | | org_id |
| name |



| Independent Trainer |
-----------------------
| id |
| name |



| Course | | Lesson |
---------------- ----------------
| id | | id |
| org_id | | ind_train_id |
| ind_train_id | | org_train_id |
| name | | name |

如果应该将它们组合起来,Trainer 表中的外键(Trainer 是独立的)会发生什么?当其他(组织的培训师)拥有组织表中的父键时,它可以为空吗?如果这个方法执行以后会有问题吗?

如果它们不应该被组合,那么两个表中的所有列不是都是多余的(因为尽管有组织外键属性,它们仍将具有相同的属性)?

最佳答案

我更喜欢第一种方法,因为它基于“外键可以为空”的规则。

这就是为什么外键的空概念旨在记住这种情况。

使用第一种方法的优点是不需要处理一个额外的表,并且可以节省大量开发和维护时间,不会出现任何问题。

是的,当然要确保外键没有约束。

关于mysql - 两个业务几乎相同的实体是否应该合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com