【问题标题】:Database relations between each other (users and groups)彼此之间的数据库关系(用户和组)
【发布时间】:2019-06-21 03:44:55
【问题描述】:

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

我有学生、老师、导师,保存在我的“用户”表中 一个小组有很多学生,但只有一个导师。

我想这样做的方式是在我的用户表中添加一个外键,所以我的学生用户属于一个组,每个“组”都有一个导师,所以我需要添加一个外键到“ “组”表中的用户,但我不确定这是否是最好的方法。

所以我想请教一些建议,谢谢阅读

【问题讨论】:

  • 如果您要显示“多对多”表的实际 CREATE TABLE 语句,请按照我提供的提示 here

标签: mysql database database-design data-modeling


【解决方案1】:

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

使用列“GroupID”(PrimaryKey)、“GroupName”、“TutorID”(带有用户表的外键)创建一个表“GroupTable”。

使用列“StudentID”(带有用户的外键)、“GroupID”(带有 GroupTable 的外键)创建一个表“StudentGroupMapping”。该表的主键可以是(StudentID,GroupID)的复合主键。有了这个,我们可以让一个学生属于多个组。

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

【讨论】:

    【解决方案2】:

    因此,总的来说,您应该拥有以下三个表格。第三张表将起到桥表的作用。

    • 用户
    • GroupUserRelation

    用户:

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

    组:

    • group_id (PK)
    • user_id (FK)(即tutor_id)
    • 组名
    • group_timings

    组用户关系:

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

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

    这样,如果将来需要,您可以定义学生和导师之间的多对多关系。例如,一位导师可以教授多个小组,一个学生也可以注册多个小组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 2010-10-01
      • 2013-10-22
      • 2020-05-17
      • 2016-05-18
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多