You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

这份ERD实体关系图设计是否正确?外键引用是否符合规范?

ERD

你的判断完全正确:单个数据库字段无法同时建立指向两张不同表的外键约束,这个ERD里Course表的Qual_Code字段仅关联Qualification表,不存在同时关联两张表的设计。

你看到的“双表关联”是ER图绘制时的连线视觉误导,三张表的实际关联逻辑如下:

  • Qualification是资质主表,Qual_Code是该表的主键,存储所有合法的资质编码
  • Course表的Qual_Code是外键,指向Qualification.Qual_Code,对应业务含义为「修完当前课程可获得的对应资质」
  • Prerequisite是课程与前置要求的多对多中间表,表内同时包含两个外键:Course_ID关联Course表主键、Qual_Code关联Qualification表的Qual_Code,对应业务含义为「选修当前课程需要提前具备的资质」。你看到的Course到Prerequisite的连线,实际是Prerequisite.Course_ID指向Course的关联,只是绘图时连线位置和Qual_Code字段重叠,造成了字段关联错误的错觉。

后续写SQL时可以参考以下外键约束逻辑,避免建表错误:

-- 优先创建无外键依赖的资质主表
CREATE TABLE Qualification (
    Qual_Code VARCHAR(20) PRIMARY KEY,
    Qual_Name VARCHAR(100) NOT NULL
    -- 其余字段按ERD标注补充即可
);

-- 创建课程表,仅给Qual_Code加指向Qualification的外键
CREATE TABLE Course (
    Course_ID INT PRIMARY KEY,
    Course_Name VARCHAR(100) NOT NULL,
    Qual_Code VARCHAR(20),
    -- 其余字段按ERD标注补充即可
    FOREIGN KEY (Qual_Code) REFERENCES Qualification(Qual_Code)
);

-- 最后创建前置要求中间表,两个外键分别关联两张主表
CREATE TABLE Prerequisite (
    Course_ID INT NOT NULL,
    Qual_Code VARCHAR(20) NOT NULL,
    PRIMARY KEY (Course_ID, Qual_Code),
    FOREIGN KEY (Course_ID) REFERENCES Course(Course_ID),
    FOREIGN KEY (Qual_Code) REFERENCES Qualification(Qual_Code)
);

内容的提问来源于stack exchange,提问作者Averal Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:39:16