知识卡片
关系的精确定义与"关系"命名之谜
内容
关系的形式化定义是:给定一个元组标题{H},以及m个(m≥0)标题都是{H}的互不重复 的元组t1到tm,{H}和这m个元组构成的集合共同组成一个关系值r,涵盖标题里的全部 属性;关系r的标题就是{H},元组集合{t1,…,tm}是它的主体(body),m是它的基数 (cardinality)。这个定义直接推出两条关键性质(也是[[元组的精确定义与元组从不 包含NULL的推论]]的自然延伸):关系从不包含重复元组(因为主体是数学意义上的 元组集合,集合本身不允许重复元素);关系从不包含NULL(因为主体由元组组成, 元组按定义从不包含NULL)。书中还纠正了一个流传甚广的误解——很多人以为”关系 模型”这个名字来自它擅长表达”表之间的关联(relationship)”,这个说法虽然不算错 但确实是舍本求末;真正的命名来源是:关系中的每个元组代表一个n元关联,联系着n个 属性各自对应的值,某个时刻这种关联的全体元组集合,用数学语言来说恰好就是一个 “关系”(relation,数学里表示若干值之间对应关系的集合概念)——模型之所以叫 “关系模型”,是因为它处理的抽象在日常直觉里是表,在数学形式化语言里恰好对应 “关系”这个数学概念,而不是因为它”支持表间关联”这个更表层、更容易望文生义的 理解。
参考来源
- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第3章"元组、关系、行、表"
3.3节"关系是什么"(源文件:OEBPS/text00033.html)
- 结论依据:原文明确"{H}和元组集合{t1,t2,…,tm}的组合(设为r)即为涵盖属性
A1,A2,…,An的关系值……关系从不包含重复元组……关系从不包含null……你经常
听到的将关系模型的名称由来归因于其支持'表间关联'的说法,实际上是舍本求末的
说法……关系模型之所以要这么命名是因为,它所处理的抽象在我们非形式化的思维中
是表,而在数学中则形式化地称为关系"。
- 原始内容:关系从不包含重复元组……关系从不包含null……关系模型之所以要这么命名
是因为,它所处理的抽象在我们非形式化的思维中是表,而在数学中则形式化地称为
关系。