我正在设计一个具有多种用户类型的数据库,即管理员、编辑、教师和学生。现在,所有这些用户都有一些公共字段 (CF) 和一些与他们关联的唯一字段 (UF)。我想知道这是不是一个好的设计?
表用户:[user_id (PK), CF1, CF2,..., CFN, user_type (enum)]
表管理员:[id (PK), UF_A1, UF_A2, ... , U_AN, user_id(FK)]
表编辑器:[id (PK), UF_E1, UF_E2, ... , U_EN, user_id(FK)]
表教师:[id (PK), UF_T1, UF_T2, ... , U_TN, user_id(FK)]
学生表:[id (PK), UF_S1, UF_S2, ... , U_SN, user_id(FK)]
其中 UF_A、UF_E、UF_T 和 UF_S 是每个相应表的唯一字段。
现在我的问题是:
- 这是一个好的设计吗?如果没有,你将如何设计它?
- 例如,如何确保 user_type 教师的用户不存储在学生表中?
PS:如果它们可能有助于获得更好的洞察力,请多加点:
- 该数据库将与 codeigniter 一起使用。
- CF 的示例是:用户名、密码、电子邮件、个人资料图片
- 唯一字段的示例包括:学生(年龄、注册号)、教师(大学名称、大学徽标、学位)