一尘不染

SQL中的一对多关系可以使用按位数学吗?

sql

RDBMS中正确的规范化意味着表的增加。整数字段可以将正交数据存储为位-是否可以在不牺牲关系完整性的情况下替代其他表?


阅读 106

收藏
2021-05-16

共1个答案

一尘不染

您的问题的答案是“否”。位字段牺牲了关系完整性,原因很简单,因为您在数据库中有没有对应表的实体。

也就是说,许多数据库通常通过“位”数据类型来提供对此的支持。Mysql使用“ set”数据类型提供了更强大的支持。

主要问题是您对集合中的元素一无所知-
全名是什么,何时将其添加到数据库中,等等。(枚举绕过了部分命名问题。)此外,集合的大小受到限制。您可能有一个例子,说明事情受到限制。但是,马特(Matt)的例子在这里强调了这个问题。您可以访问的大洲清单。但是,当您切换到访问的国家/地区时,方法肯定会大不相同,因为国家/地区的数量不再适合一个“单词”。您是否希望您的系统在这方面将对待大陆与各国大不相同?您希望您的设计决策受到计算机字中32位或64位限制的限制吗?

最后,您似乎认为表的增加是一个问题。表的增加实际上是一种解决方案。有关实体的所有数据都存储在表中,而不是通过系统散布。您可以维护有关实体实例的信息,例如创建实例的时间,实例随时间的变化等。只要有人想要一个大陆,就可能使用“大陆”实体。

考虑一下在两个不同的开发人员决定为大洲开发自己的位掩码的系统中发生了什么,但是他们将大洲的顺序不同。使用设计良好的关系数据库(意味着在表定义中显式声明了外键关系),就不会出现这种混淆。

2021-05-16