gpt4 book ai didi

mysql - 组合外键

转载 作者:行者123 更新时间:2023-11-30 23:07:08 28 4
gpt4 key购买 nike

在MySQL中,如何将一个表中的2个外键组合成一个主键?

我有两张表,一张Staff,一张Roles,每一张都包含自己的主键,StaffIDRoleID。我创建了第三个名为 StaffRole 的表,它将包含 StaffIDRoleID,请记住这是一对多关系,作为工作人员可能有 1 个或多个角色。

如何结合 StaffIDRoleID 的外键为表 StaffRole 创建一个新的唯一主键。

最佳答案

从技术上讲,您所描述的不是一对多关系,而是多对多关系,因为一个 Staff 记录涉及多个Role 记录,但一个Role 记录还涉及多个不同的Staff。您对连接表 StaffRole 的使用是处理关系的典型方式。

这是语义,但实际上并不是组合两个外键的问题,而是创建第三个键,它是两个外键的组合,也是主键。因此,您的表将有两个 FOREIGN KEY 定义,一个用于两列,一个复合 PRIMARY KEY 定义跨越 两个 列。

CREATE TABLE StaffRole (
StaffID INT NOT NULL,
RoleID INT NOT NULL,
/* Composite primary key on both columns */
PRIMARY KEY (StaffID, RoleID),
/* Two separate foreign keys */
FOREIGN KEY (StaffID) REFERENCES Staff (StaffID),
FOREIGN KEY (RoleID) REFERENCES Roles (RoleID)
) ENGINE=InnoDB;

请注意,我已将 InnoDB 指定为表类型,因为 MySQL 不会在 MyISAM 表上强制执行 FOREIGN KEY

关于mysql - 组合外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389473/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com