简单的数据库设计问题,老实说,我不能完全解决。
在很多情况下,我有一个类型表,其中包含一个 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 字节键作为引用,您将在每条记录中使用额外的两个字节。在某些情况下,直接包含语言代码可以节省空间和精力。但是,要对此有所作为,您将讨论对非常大的数据库(例如数亿行)进行优化。
我会投票支持单独的引用表以及随之而来的所有好处。在某些极端情况下,出于特定原因,人们可能会考虑另一种结构。
关于具有单列和增量 id 的 SQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29052146/