我遇到了一个架构问题,即如何在关系数据库中存储与特定角色相关的数据。
我有三个角色,Subscriber Contact
,Teacher
和Student
。它们都存储在Users
表中,但具有与每个表相关的特定属性。学生有SchoolId
,Grade
,订阅者联系人有DistrictId
,教师有ProgramId
,SchoolId
,Grade
。
我是否应该为订阅者联系人,教师和学生提供三个单独的表格,还是应该进行某种键/值查找?如果键/值查找如何执行此操作以及如何为外键执行此操作,例如DistrictId
和SchoolId
?
答案 0 :(得分:1)
您可以模拟继承等内容。一个超类表,包含角色subscriber
,teacher
和student
的所有常用属性。然后,每个角色的三个子类表由每个角色唯一的arrtibutes组成。超类实体与每个子类实体之间将存在一对一的关系。