【问题标题】:What is the best way to maintain shared fields between tables in database?维护数据库中表之间共享字段的最佳方法是什么?
【发布时间】:2018-05-09 10:32:19
【问题描述】:
我想为学校管理系统创建一个数据库。该数据库有两个表,其中包含 Students 和 Teachers 等共享字段。
例如,Student 表有字段(id、name、phone、class),Teacher 表有字段(id、name、phone、department)。
是否更好:一个名为 Person 的表有字段(id,name,phone),Student 表有字段(id,person_id,class),Teacher 表有字段(id , person_id, 部门)。
这两种方式哪个更好?
【问题讨论】:
标签:
database
database-design
data-modeling
【解决方案1】:
直接回答这个问题可能是基于意见。设计数据库通常没有最佳策略。
理论示例:如果有大量数据,您可能需要考虑性能:搜索和连接的内容和方式。
如果您主要搜索Students 和Teachers,您可能不会创建Person 表,您可以轻松搜索它们。然后,如果您想从 db 中搜索所有 Persons,您需要进行两个查询,并在这些查询之间创建一个 UNION,并使用 Person 的两种 类型 共有的字段。
如果您也更频繁地搜索Persons,那么您可能会创建Person 表并实现Teacher 和Student 以获得Person 的外键。然后在搜索最后提到的两个时,您需要将JOIN 设置为Person。
在现实生活中,我不知道在这个用例中是否真的有很大的不同。更重要的是您选择一些策略并在未来的决策中遵循它,以保持设计清晰。
但是可能会出现仍然需要更改所选策略的情况。理论上是这样。
相关问题here