我有一个用户表,教师和学生之间有自我参照关系。目前,学生通过instructor_id foreign_key与他们的教师相关。学生将始终有一名教师,而教师永远不会是学生。
尽管如此,就授权而言,只要确定用户是否为学生,如果他们的instructor_id字段值是一个值,反之亦然?或者我应该明确定义用户角色?
答案 0 :(得分:2)
首先,我试图找到一些方法使它不自我指涉。也许通过只创建一个人员表并且有一个单独的表是链接(users.instructor_id
链接到instructors
,其中包含字段instructor_id
和user_id
,instructors.instructor_id
在users.instructor_id
中使用,然后您可以查询SELECT * FROM users WHERE EXISTS (SELECT * FROM instructors WHERE instructors.user_id = users.user_id)
以获取当前教师的列表),甚至最好的案例都有学生表和教师表。
如果你确定没有教师会有一个instructor_id,那么我相信你应该能够检查一个用户是否是该字段为null的学生(或默认值为-1)。
我建议重建你的表格结构是非自我指涉的,从长远来看,当教师被分配给另一位教师,或者学生因某种原因进行教学时,它会帮助你。