首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从查找表格的ID显示名称-设计Q

从查找表格的ID显示名称-设计Q
EN

Stack Overflow用户
提问于 2011-02-15 04:15:53
回答 1查看 148关注 0票数 0

我确信这是一个基本的问题,但我是SQL的新手,所以不管怎样,对于我的用户配置文件,我想显示这一点:如果用户住在好莱坞,位置=“好莱坞,CA - USA”。因此,我假设在user表中将有1列,如current_city,其ID为1232,这是城市表的FK,其中PK的city_name =好莱坞。然后连接状态表和国家/地区表以查找名称CA和USA,因为城市查找表将只存储ID(如CA = 21和USA = 345)

这是设计表的最佳方式吗?或者我在想,是否应该在user_table中添加两个列,如city_id和city_name。并将country_id、country_name、state_id、state_name添加到城市表中。这样,我就省去了去其他父表获取ID名称的麻烦。

这只是一个示例用例,但我有很多查找ID表,所以一旦我知道如何做得最好,我将对所有表应用相同的原则。我的需求是可伸缩性和性能,所以最适合这些的就是我想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-15 06:00:07

你描述的第一种方式几乎总是更好。

在users表中同时包含city_id和city_name (或任何此类对)并不是最佳做法,因为这可能会导致数据差异-错误的更新可能会导致city_id与city_name不匹配,从而导致系统行为变得意外。

如上所述,你的第一个建议是最常见的,通常也是最好的方法。如果正确地设计了表键,以便所有的select语句都可以有效地使用它们,这也将提供最佳的性能。

例如,在users表中只有city_name会使查找和显示一个用户的城市更快一些,但是当尝试运行其他查询时-比如查找城市X中的所有用户-这就没有什么意义了。

您可以在这里找到一系列适合初学者阅读的关于DB规范化的文章:http://databases.about.com/od/specificproducts/a/2nf.htm。本文提供了一个与您正在尝试实现的非常相似的示例,相关文章可能会帮助您在数据库中设计许多其他表。

祝好运!

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

https://stackoverflow.com/questions/4996808

复制
相关文章

相似问题

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