维护数据库中表之间共享字段的最佳方法是什么?

What is the best way to maintain shared fields between tables in database?

我想为学校管理系统创建一个数据库。该数据库有两个 table 包含共享字段,例如 StudentsTeachers。 例如,Student table 有字段(id, name, phone, class),Teacher table 有字段(id, name, phone, department ).

是否更好地制作:一个名为 Person 的 table 具有字段(id、name、phone)、Student table有字段(id,person_id,class),老师table有字段(id,person_id,部门)。

这两种方式哪种更好?

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

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

如果您主要搜索 StudentsTeachers,您可能不会创建 Person table,但您可以轻松搜索它们。然后,如果您想从数据库中搜索所有 Persons,则需要进行两个查询,并在这些查询之间进行 UNION,并使用 types[=39= 共有的字段] Person.

如果您还更频繁地搜索 Person,那么您可能会创建 Person table 并实施 TeacherStudent 以具有指向 Person。然后在搜索最后提到的两个时,您需要将 JOIN 设为 Person.

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

然而,可能会出现需要更改 selected 策略的情况。所以理论上。

相关问题here