gpt4 book ai didi

mysql - 当共享列很小时使用连接或复制?

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

我正在为具有少量共享数据的垂直层次结构中的多个表寻找最佳实践。假设三个表:

Country {
id
}

State {
id,
country_id,
FK_to_country_id,
}

City {
id,
state_id,
FK_to_state_id,
}

上面的州属于国家,而城市属于州,结果也属于国家。模式看起来很干净,但是当您想查找一个城市属于哪个国家/地区时,您必须使用包含三个表的 JOIN。如果还有一个属于城市的称为县的层级,情况会变得更糟。

City {
id,
country_id,
state_id,
FK_to_country_id,
FK_to_state_id,
}

在 City 中添加另一列 'country_id' 使我们从繁琐的 JOIN 中解脱出来,但数据库架构有点重复。

现实世界中的实践是什么?

最佳答案

这就是 JOIN 的用途;不要剥夺他们的职责。

在现实世界的实践中,像这样连接多个表是绝对正常的。

在您的示例中,是的,在城市表中包含国家/地区 ID 是多余的。

但情况并非总是如此。考虑一个示例,其中一个城市可以存在而无需处于某个州(许多第三世界国家/地区没有“州”名称),那么您必须拥有该外键国家/地区 ID,因为 State 表是可选的。

关于mysql - 当共享列很小时使用连接或复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711964/

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