Database design '的数据库设计;用户';关系数据库中的表

Database design '的数据库设计;用户';关系数据库中的表,database-design,data-modeling,rdbms,Database Design,Data Modeling,Rdbms,我必须为Edtech应用程序设计一个用户表,该应用程序的用户具有配置文件类型 配置文件类型包括: 1. Student 2. Tutor 3. Teacher 4. Admin 5. School Admin 现在,我想问,哪种解决方案更适合对这种类型的用户表进行建模。每个概要文件都有一些公共属性和一些唯一属性 问题是,对于每种类型的用户,我是否应该有单独的表,这些表的键映射到具有公共字段的主用户表 或 我是否应该分离不常见的字段,并将它们放在一个表中,该表的键映射到主用户表 这两种解决方案都

我必须为Edtech应用程序设计一个用户表,该应用程序的用户具有配置文件类型

配置文件类型包括:

1. Student
2. Tutor
3. Teacher
4. Admin
5. School Admin
现在,我想问,哪种解决方案更适合对这种类型的用户表进行建模。每个概要文件都有一些公共属性和一些唯一属性

问题是,对于每种类型的用户,我是否应该有单独的表,这些表的键映射到具有公共字段的主用户表

我是否应该分离不常见的字段,并将它们放在一个表中,该表的键映射到主用户表


这两种解决方案都将删除主用户表中的空值。那么,选择哪一个呢?

已经讨论了一百万次了。特别是,昨天这里:这与您建议的链接不同。请再读一遍,到底有什么不同?您正在询问如何将唯一属性从主表移开。选项1是正确的-使用单个扩展表,这些扩展表将通过
JOIN
查询“粘合”到主表。您可以这样看:主表是一个抽象类,扩展表是实现类。简单明了:)为什么选项2不正确?我想知道。在方案二,同样的事情也会发生。为什么选项1是更好的解决方案?在选项2中有第二个表有什么意义?你仍然会有空值。据我所知,它解决不了任何问题。