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

MySQL中子类表的主键能否被其他表作为外键引用?

问题解答

结论

你描述的操作完全可行,这是类表继承架构下非常常见的外键约束用法。

可行性说明

外键引用的唯一基础要求是:被引用的字段必须是目标表的主键,或者是带有唯一约束的字段。你场景里employees表的Person_ID本身就是主键,完全满足外键引用的前提条件。
且这种设计比直接引用persons表的Person_ID更贴合业务逻辑:多了一层身份校验,能强制保证works表关联的人员一定是员工,避免把仅存在于persons表、不属于员工范畴的人员(比如客户、访客等)错误关联到项目工作记录中。

注意事项

你提供的works表建表语句存在两处语法问题,需要修正后才能正常执行:

  • 未定义Person_ID字段就直接声明外键
  • project_ID字段未指定数据类型、非空约束等属性

修正后的建表语句如下:

CREATE TABLE works (
    project_ID int NOT NULL AUTO_INCREMENT,
    Person_ID int NOT NULL,
    date_started date,
    PRIMARY KEY(project_ID),
    FOREIGN KEY (Person_ID) REFERENCES employees(Person_ID)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:54:06