gpt4 book ai didi

mysql - 直接从外键到外键连接表

转载 作者:行者123 更新时间:2023-11-30 00:09:24 25 4
gpt4 key购买 nike

我有一个简单的问题,如果我有三个表 A、B 和 C,如下所示:

CREATE TABLE `A` (
`id` VARCHAR(35) NOT NULL,
`name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`));

CREATE TABLE `B` (
`emp_id` VARCHAR(35) NOT NULL,
`phone` VARCHAR(7) NOT NULL,
FOREIGN KEY (`emp_id`) REFERENCES `A`(`id`));

CREATE TABLE `C` (
`emp_id` VARCHAR(35) NOT NULL,
`desk_no` INT(11) NOT NULL,
FOREIGN KEY (`emp_id`) REFERENCES `A`(`id`)

直接在 C.emp_id = B.emp_id 上进行联接是一种好的做法,还是应该将 (A.id = B.emp_id) 作为 R 联接,然后联接 R.id = C.emp_id?我问这个问题是因为您可以直接连接 B 和 C,但这是否危险,因为这将外键连接到另一个外键而不是外键连接到主键?

谢谢!

最佳答案

您可以自由加入,如果这样做是正确的,甚至会受到鼓励。

但是,要小心。这样的连接可以为每个员工生成一个笛卡尔积。因此,拥有 3 部电话和 4 个办公 table 的员工将产生 12 条记录 - 该员工的电话和办公 table 的每种组合。此外,一侧或另一侧缺少记录的员工将在内部联接中丢失记录。

请注意,连接回原始表不能解决此问题,这是因为您沿着数据的不同维度进行连接而出现的。您只需要意识到这可能会发生。

关于mysql - 直接从外键到外键连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24212292/

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