0

我有一个用户表,教师和学生之间存在自我参照关系。目前,学生通过instructor_id foreign_key 与他们的导师相关联。一个学生永远有一个导师,一个导师永远不会是一个学生。

综上所述,就授权而言,如果用户的instructor_id 字段具有值,则可以简单地确定用户是否是学生,反之亦然?还是我应该明确定义用户角色?

4

1 回答 1

2

首先,我会尝试找到一些方法让它不自引用。也许通过只制作一个persons表并有一个单独的表作为链接(users.instructor_id链接到instructors哪个具有字段instructor_iduser_idinstructors.instructor_id正在使用的users.instructor_id,然后您可以查询SELECT * FROM users WHERE EXISTS (SELECT * FROM instructors WHERE instructors.user_id = users.user_id)以获取当前教师的列表),或者最好的情况是有一个学生表和教师表。

如果您确定没有讲师将拥有讲师 ID,那么我相信您应该能够通过该字段为空(或默认值为 -1)来检查用户是否是学生。

我建议将您的表结构重建为非自引用的,从长远来看,当一名教师被分配给另一名教师或学生出于某种原因教学时,它将对您有所帮助。

于 2012-10-01T20:24:37.753 回答