首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个空值的表和两个单独的表。

具有多个空值的表和两个单独的表。
EN

Stack Overflow用户
提问于 2012-12-16 05:35:25
回答 2查看 2.2K关注 0票数 3

我有一个表(X),它有10列,其中6列是可空的外键(bigint数据类型),在每一行中,其中5列为空。

解决方案:将表(X)分为两个表:(X)和(XType),以便(X)包含一个大int列(而不是外键),用于插入6个ID中的一个,以及一个用于确定6个数据类型的XType_id列。

这个解决方案是最优的还是第一个有10列的表更好?

EN

回答 2

Stack Overflow用户

发布于 2012-12-16 08:21:02

我更喜欢你的第一个选择。

当您拥有这6个单独的外键列时,您可以通过对这6个引用表的实际外键约束来强制执行引用完整性。

如果您有一种具有单个IDID_Type的超级智能方法,则不能再强制执行引用完整性了。

对我来说,能够真正执行引用完整性的好处远远超过的“好处”,只有一个ID列;有几个带有NULL值的列并不坏。

票数 3
EN

Stack Overflow用户

发布于 2012-12-16 15:39:30

s's answer是绝对正确的,让我再补充一点:第二种方法不太可能节省空间(通过扩展,改进缓存)。represented将在一个位字段中对字段的“空”进行编码,而6个可空的列可以用一个字节表示。第二种方法中的"type“字段将不少于一个字节。

顺便说一句,如果您的FKs是不同类型的,那么您的第二种方法将需要将FK值存储为“最低公共分母”类型(可能是字符串)并手动进行类型转换,因此您也会失去域的完整性。

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

https://stackoverflow.com/questions/13898925

复制
相关文章

相似问题

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