知识卡片

关系是n维的而非二维的

普通读书笔记卡

内容

把关系看成一张”平面”或”二维”的表格是直观上方便、但在数学意义上完全错误的 理解——如果一个关系r有n个属性,那么r中的每个元组实际上代表n维空间中的一个 确定的点,整个关系就是这些点构成的集合,因此这个关系整体在数学意义上是n维的, 而不是二维的。以常用的供应商关系为例,它有SNO/SNAME/STATUS/CITY四个属性, 它的每一个元组代表四维空间中的一个点,整个供应商关系因此是四维的。这个纠偏 不只是数学咬文嚼字:书中借此顺带指出,业界经常说决策支持系统”需要多维数据库” 这种说法,恰恰暴露了很多人根本没意识到普通关系本身就已经是多维的——把关系 类比成”表”这个图示带来的直觉便利,反而遮蔽了它数学上真实的结构,让人误以为 “多维”是关系模型之外需要额外引入的新能力。这也是为什么书中反复强调[[关系的 精确定义与关系命名之谜]]中”事物和事物的图示存在逻辑差异”这条原则——表格图示 虽然对理解和使用系统很有帮助,却也很容易让人在维度这类根本性质上产生系统性 误解。

参考来源

- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第3章"元组、关系、行、表" 3.5节"关系是n维的"(源文件:OEBPS/text00035.html) - 结论依据:原文明确"如果关系r具有个n属性,那么每个r中的元组都代表一个n维空间 中的确定点(关系整体代表这些点的集合)……供应商关系常用的5个元组中的每一个 都代表一个四维空间中的确定点……所以,关系是n维而不是二维的……我想之所以有 那么多人说需要'多维数据库',正是因为有太多人没有意识到关系本身就是多维的"。 - 原始内容:如果关系r具有个n属性,那么每个r中的元组都代表一个n维空间中的确定 点……所以,关系是n维而不是二维的……让我们发誓永远不要再说"平面关系"了。