首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计:连接

数据库设计:连接
EN

Stack Overflow用户
提问于 2011-12-18 10:45:41
回答 1查看 980关注 0票数 1

假设我有一个表示用户的表:id, name这个表很大,大约一亿行。用户也有一些属性,比如说“出生之城”。这是一个可选字段,所以只有一小部分用户(,比方说只有5%的)提供了它。所以我也有一个与城市的桌子:id, name。关系是1比多--用户只能有一个城市,而一个城市可以是许多用户的双轨制。

问题是:如何将它们连接起来?

( a)向users表中添加列city_id。(对于没有财产的用户来说,这是九千五百万的空白处)

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

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

代码语言:javascript
复制
select user.name ... where city_id=xxx

所以在任何情况下都需要对city_id列进行索引。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-18 11:07:21

因为任何非外星用户只有一个出生城市(除非他是在出租车上出生的),用用户ID索引出生城市的表似乎既愚蠢又浪费。我会把出生城市放在用户表中,尽管大多数城市字段都是空的。

但是,忘了我的观点,这是经典的时间和空间问题,空间考虑是数以百万计的无关的、无用的零值;而额外的时间是数以百万计的无关的、无用的选择进入城市桌子。

你对这个问题的解决方案告诉了你什么?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8551203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档