知识卡片
元组相等性的精确定义及其重要性
内容
元组t和t’相等,当且仅当满足两个条件:二者标题相同(拥有完全相同的属性集合, 也就是类型相同),且对标题里的每一个属性Ai,t中Ai的取值都等于t’中Ai的取值。 这个定义看起来朴素,但书中特别强调它的重要性远超直觉——候选键、外键的定义, 以及几乎所有关系代数运算符的定义,最终都要落到”两个元组是否相等”这个基础判断 上,理解这条精确定义是理解整个关系模型运作机制的地基。这个定义还带来两个直接 推论:其一,两个元组互为重复,当且仅当它们相等(这与直觉一致,但作为正式定义 被明确写出,是因为”关系从不包含重复元组”这条规则正是靠这个定义撑起来的); 其二,所有的0-元组(度为0的空元组)互为重复——既然0-元组彼此没有任何属性可比, 它们自动满足”标题相同+无属性值需要逐一比对”的条件,因此永远相等,这也是书中 统一用”the 0-tuple”(那个0-元组)而非”a 0-tuple”(一个0-元组)指称它的原因, 因为本质上只存在唯一的一个0-元组。另外要注意,正因为元组本质是一个(分量) 集合,”=“和”≠”对元组有意义,但”<“和”>“这类顺序比较运算符对元组无意义—— 集合之间没有大小顺序可言。
参考来源
- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第3章"元组、关系、行、表"
3.1节"元组是什么"(源文件:OEBPS/text00031.html)
- 结论依据:原文明确"元组t和t'是相等(equal)的,当且仅当它们具有相同的属性
A1,A2,…,An(换言之,它们类型相同)并且,对于所有的i……t中Ai的值v与t'中
Ai的值v'相等……关系模型中依赖此概念的内容实在是太多了。比如,候选键、外键
以及几乎所有的关系代数运算符都是依赖它进行定义的""所有的0-元组都互为重复"。
- 原始内容:元组t和t'是相等(equal)的,当且仅当它们具有相同的属性……并且,
对于所有的i,t中Ai的值v与t'中Ai的值v'相等……关系模型中依赖此概念的内容实在
是太多了。比如,候选键、外键以及几乎所有的关系代数运算符都是依赖它进行定义的。