[英]SQL table with a single column and incremental id
简单的数据库设计问题,我老实说不能完全指责。
在很多情况下,我有一个类型表,它由一个ID和类型的名称组成。 Ala。语言代码表有2列
表: language
language_id (1,2,3)
language_code (et, en-us, de)
现在我总是把language_id作为其他表的外键,
但
哪个更好?
将language_id
作为外键分发,然后进行连接以获取language_code
。
要么
完全忽略了language_id
以便我们拥有
表: language
language_code (et, en-us, de)
然后,当我们想要知道用户的母语是什么时,我们将只将代码作为外键分发,并且不需要任何连接。
意见?
答案是,这取决于。
在大多数情况下,需要具有外键的引用表。 原因如下:
性能影响通常很小。 您将拥有语言ID的主键索引,并且速度非常快。
您的语言代码只有两个字符。 如果您使用典型的4字节密钥作为引用,则每个记录中将使用另外两个字节。 在某些情况下,直接包含语言代码可以节省空间和精力。 但是,为了实现这一点,您将讨论在非常大的数据库(例如数亿行)上进行优化。
我会投票给一个单独的参考表以及随之而来的所有好处。 在某些极端情况下,人们可能会出于特殊原因考虑替代结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.