首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个业务几乎相同的实体是否应该合并在一起?

两个业务几乎相同的实体是否应该合并在一起?
EN

Stack Overflow用户
提问于 2017-02-23 05:17:43
回答 1查看 24关注 0票数 0

我对数据库知之甚少,但这里我正在尝试设计一个数据库。通常我可以设计一个简单的数据库,但是这个场景让我很困惑。

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

在我的系统中,组织可以添加课程并为其添加的课程分配组织的培训师。该组织的培训人员不能添加课程,但他们只能在课程中添加课程。

而一个与任何组织没有任何关系的独立培训师,既可以做这两件事,也可以增加课程,并在其中增加课程。

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

代码语言:javascript
复制
| 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         |

或他们是否应该分开:-

代码语言:javascript
复制
| 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         |

如果它们应该结合在一起,那么教练员表中的外键(教练是独立的)会发生什么呢?当其他(组织的培训师)从Organization表中获得父密钥时,它是否为null?如果执行此方法,将来会有什么问题吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 05:29:32

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

这就是为什么外键的空概念被设计用来记住这样的情况。

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

当然,也要确保外键不受限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42407619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档