维护数据库中表之间共享字段的最佳方法是什么?
What is the best way to maintain shared fields between tables in database?
我想为学校管理系统创建一个数据库。该数据库有两个 table 包含共享字段,例如 Students 和 Teachers。
例如,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,部门)。
这两种方式哪种更好?
直接回答这个问题可能是基于意见。没有普遍最佳的数据库设计策略。
理论示例:如果有大量数据,您可能需要考虑性能:搜索和连接的内容和方式。
如果您主要搜索 Students
和 Teachers
,您可能不会创建 Person
table,但您可以轻松搜索它们。然后,如果您想从数据库中搜索所有 Person
s,则需要进行两个查询,并在这些查询之间进行 UNION
,并使用 types[=39= 共有的字段] Person
.
如果您还更频繁地搜索 Person
,那么您可能会创建 Person
table 并实施 Teacher
和 Student
以具有指向 Person
。然后在搜索最后提到的两个时,您需要将 JOIN
设为 Person
.
在现实生活中,我不知道在这个用例中是否真的有很大的不同。更重要的是你 select 一些策略并在你未来的决定中遵循它以保持设计清晰。
然而,可能会出现需要更改 selected 策略的情况。所以理论上。
相关问题here
我想为学校管理系统创建一个数据库。该数据库有两个 table 包含共享字段,例如 Students 和 Teachers。 例如,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,部门)。
这两种方式哪种更好?
直接回答这个问题可能是基于意见。没有普遍最佳的数据库设计策略。
理论示例:如果有大量数据,您可能需要考虑性能:搜索和连接的内容和方式。
如果您主要搜索 Students
和 Teachers
,您可能不会创建 Person
table,但您可以轻松搜索它们。然后,如果您想从数据库中搜索所有 Person
s,则需要进行两个查询,并在这些查询之间进行 UNION
,并使用 types[=39= 共有的字段] Person
.
如果您还更频繁地搜索 Person
,那么您可能会创建 Person
table 并实施 Teacher
和 Student
以具有指向 Person
。然后在搜索最后提到的两个时,您需要将 JOIN
设为 Person
.
在现实生活中,我不知道在这个用例中是否真的有很大的不同。更重要的是你 select 一些策略并在你未来的决定中遵循它以保持设计清晰。
然而,可能会出现需要更改 selected 策略的情况。所以理论上。
相关问题here