彼此之间的数据库关系(用户和组)

Database relations between each other (users and groups)

我在学校做一个辅导项目,同时让数据库在设计数据库中获取组、用户和组导师之间关系的最佳方式时遇到问题。

我有学生,老师,导师,保存在我的"users"table 一组有很多学生,但只有一个导师。

我想到的方法是在我的用户 table 中添加一个外键,所以我的学生用户属于一个组,每个 "group" 都有一个导师,所以我需要将外键添加到 "users in the "groups" table,但我不确定这是否是最佳方法。

所以我问一些建议,感谢阅读

是的。在GroupTable中添加TutorID即可。

创建一个 table 'GroupTable',包含列 'GroupID'(PrimaryKey)、'GroupName'、'TutorID'(ForeignKey with Users table)。

创建一个 table 'StudentGroupMapping',其列为 'StudentID'(带用户的外键),'GroupID'(带组表的外键)。这个table的主键可以是(StudentID, GroupID)的组合主键。有了这个,我们可以让一个学生属于多个组。

我们需要注意的完整性是标记为 Tutor 的用户不会进入 Student。

所以,总共应该有以下三个 table。第三个table会起到桥梁作用table.

  • 用户
  • 群组
  • 组用户关系

用户:

  • user_id(PK)
  • 用户名
  • 角色(即学生、教师、导师)

群组:

  • group_id(PK)
  • user_id(FK)(即 tutor_id)
  • group_name
  • group_timings

组用户关系:

  • group_id(FK)
  • user_id(FK)(即 student_id)

group_id 和 user_id 将组合成一个组合键。

这样你以后可以根据需要定义学生和导师之间的多对多关系。比如一个导师可以教很多组,一个学生也可以报很多组。