繁体   English   中英

我可以使用 2 个主键(来自同一个表)作为其他表中的外键吗?

[英]Can I use 2 primary key (from same table) as foreign key in other table?

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

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

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

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)

);

DB Fiddle 上的演示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM