【问题标题】:Can I use 2 primary key (from same table) as foreign key in other table?我可以在其他表中使用 2 个主键(来自同一个表)作为外键吗?
【发布时间】:2020-01-05 21:44:51
【问题描述】:

我正在尝试开发一个网站。是一种大学网站。我也为管理员、学生和讲师做了一个名为 ACCOUNTS 的表。因此,对于管理员,我手动创建了一个帐户,该管理员可以管理网站,他可以为讲师创建帐户并将详细信息发送给他们。对于学生,我创建了一个注册页面,他们可以在其中申请课程,管理员决定如何接受或不接受(我在名为活动的帐户中有一个列,默认情况下所有帐户都是使用非活动帐户创建的)。现在问题出在 GRADES 表上。我需要的信息是 Grade-ID,Module-ID,theGrade 和 account_id 让学生知道如何收到成绩,但我想添加讲师如何标记,问题是它具有相同的名称(account_ID ) 因为和学生在同一张桌子上。我该怎么办?

【问题讨论】:

标签: mysql sql database foreign-keys


【解决方案1】:

可以grades 表中有两列引用accounts 表的主键。

我认为你想要这样的东西:

create table grades(
    grade_id int primary key,
    grade int,
    module_id int,
    student_id int,
    lecturer_id int,
    constraint fk_grades_student 
        foreign key (student_id) 
        references accounts(account_id),
    constraint fk_grades_lecturer
        foreign key (lecturer_id) 
        references accounts(account_id)

);

Demo on DB Fiddle

但是请注意,这并不能确保引用的帐户确实是讲师或学生(它只是确保它存在于accounts)。使用不同的数据结构(例如,如果每个帐户角色有单独的子表)会更容易实施此引用约束。

【讨论】:

    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2012-07-09
    • 2014-07-16
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多