彼此之间的数据库关系(用户和组)
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 将组合成一个组合键。
这样你以后可以根据需要定义学生和导师之间的多对多关系。比如一个导师可以教很多组,一个学生也可以报很多组。
我在学校做一个辅导项目,同时让数据库在设计数据库中获取组、用户和组导师之间关系的最佳方式时遇到问题。
我有学生,老师,导师,保存在我的"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 将组合成一个组合键。
这样你以后可以根据需要定义学生和导师之间的多对多关系。比如一个导师可以教很多组,一个学生也可以报很多组。