是的,MySQL 中的主键可以作为外键使用。这是关系型数据库中非常常见且重要的设计模式。
-- 创建部门表(主表)
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL
);
-- 创建员工表(从表),其中dept_id作为外键引用departments表的主键
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
emp_name VARCHAR(50) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
可以在外键约束中添加级联操作:
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
ON DELETE CASCADE
ON UPDATE CASCADE
常用级联选项:
- CASCADE
: 主表变更时自动更新/删除从表相关记录
- SET NULL
: 主表变更时将从表外键设为NULL
- RESTRICT
/NO ACTION
: 阻止主表变更(默认行为)
这种主键作为外键的设计是数据库规范化的重要组成部分,确保了数据的完整性和一致性。