gpt4 book ai didi

mysql - 数据库设计 : conjunction

转载 作者:行者123 更新时间:2023-11-29 07:03:52 25 4
gpt4 key购买 nike

假设我有一个表示用户的表:id, name该表很大,大约有 1 亿行。用户也有一些属性(property),比方说出生城市。这是可选字段,因此只有一小部分用户(假设只有 5%)提供了它。所以我还有一个包含城市的表:id, name。关系是一对多 - 用户只能拥有一个城市,而一个城市可以是许多用户的住所。

问题是:如何连接它们?

a) 添加一列 city_id 到用户表。 (对于没有该属性的用户来说注定了 9500 万个 null)

b) 创建第三个联合表 user_city: user_id,city_id(目的是为了省略大量的 NULL,如果 a)。

另外,请记住,应用程序需要

select user.name ... where city_id=xxx

所以city_id列在任何情况下都需要被索引

最佳答案

因为任何非外籍用户都只有一个出生城市(除非他出生在出租车上),所以用用户 ID 索引出生城市表似乎很愚蠢和浪费。我会把出生城市放在它所属的用户表中(正如我所说),尽管大多数城市字段都是 NULL。

但是,忘记我的个人意见,这是经典的时间与空间问题,空间考虑是数百万无关的、无用的 NULL;额外的时间是数以百万计的无关的、无用的 SELECT 到城市表中。

您对该问题的解决方案告诉您什么?

关于mysql - 数据库设计 : conjunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551203/

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