【问题标题】:What is the best way to maintain shared fields between tables in database?维护数据库中表之间共享字段的最佳方法是什么?
【发布时间】:2018-05-09 10:32:19
【问题描述】:

我想为学校管理系统创建一个数据库。该数据库有两个表,其中包含 StudentsTeachers 等共享字段。 例如,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】:

    直接回答这个问题可能是基于意见。设计数据库通常没有最佳策略。

    理论示例:如果有大量数据,您可能需要考虑性能:搜索和连接的内容和方式。

    如果您主要搜索StudentsTeachers,您可能不会创建Person 表,您可以轻松搜索它们。然后,如果您想从 db 中搜索所有 Persons,您需要进行两个查询,并在这些查询之间创建一个 UNION,并使用 Person 的两种 类型 共有的字段。

    如果您也更频繁地搜索Persons,那么您可能会创建Person 表并实现TeacherStudent 以获得Person 的外键。然后在搜索最后提到的两个时,您需要将JOIN 设置为Person

    在现实生活中,我不知道在这个用例中是否真的有很大的不同。更重要的是您选择一些策略并在未来的决策中遵循它,以保持设计清晰。

    但是可能会出现仍然需要更改所选策略的情况。理论上是这样。

    相关问题here

    【讨论】:

      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 2013-09-17
      • 2010-09-24
      • 1970-01-01
      相关资源
      最近更新 更多