【发布时间】:2018-01-26 07:46:56
【问题描述】:
我正在尝试改进我的网络系统的数据库设计。基本上,我对存储所有用户数据的表(例如 FirstName、LastName 等)有一些疑问。该表为我的所有不同用户存储相同的数据,在这种情况下,用于 Student、Profesors 和另外两个角色类型。现在我把它作为一个单独的表称之为 PERSON。在那里,我有我的外键的所有关系,甚至当学生有教授作为导师时,“人”之间的关系也是如此。但是我只在 Person 是 Student 时才使用一些列,例如字段 Enrolled 或 PaidUp,而当是其他类型的角色时,我将其保留为 null。
现在,我的问题是划分表 Person 并创建子类并仅在我需要的地方存储外键的优缺点是什么。我应该保留单个表并使用“where”来过滤我的查询,还是将表标准化为几个 当我需要一般数据时,表在 Person 上进行连接?
【问题讨论】:
-
这是一个常见问题,google sql/database subtypes/hierarchies/polymorhism。
标签: mysql database database-design relational-database