- 关系模型概述
- 什么是关系
- 关系模型的完整性约束
重点与难点
一组概念的区分:
围绕关系的相关概念:域、笛卡儿积、关系、关系模式、关键字/键/码、外码/外键、主码/主键、主属性/非主属性。
三个完整性:实体完整性、参照完整性、用户定义完整性
概述
形象的说:一个关系(relation)就是一个table。
关系模型就是处理table的,他由三部分组成:包括描述数据库各种关系的基本结构形式(table)、关系运算(table和table之间可能发生的各种运算)、完整性约束(这些操作应该遵循的约束条件)。
关系运算:关系代数和关系演算 。
关系演算:元组演算和域演算。
关系代数的示例:基于集合的运算(数学语言)
也就是说操作的对象和结果都是集合,是一次一集合的操作(Set-at-a time)。
而非关系型数据的操作通常是一次次记录(Record-at-a time)。
以下是基于关系代数设计的数据库语言:ISBL(计算机语言)
ISBL是用计算机可以识别的符号表征关系代数的运算符号。
元组演算是基于逻辑的演算(数学语言)。
基于元组演算设计了数据库语言:Ingress系统的QUEL(计算机语言)
域演算和元组演算类似但是域演算是基于示例的运算(以示例为单位)。
基于域演算设计的数据库语言示例:QBE: Query By Example(计算机语言)
综述:关系运算
什么是关系?
表的基本构成要素
其中列的取值范围叫:
域(Domain)
- 一组值的集合这组值具有相同的数据类型。
- 集合中元素的个数称为域的基数。
元组
笛卡儿积的每个元素(d1,d2,d3,,,,,,dn)成为一个n元组。
- 元组(d1,d2,d3,,,,,,dn)中每一个值di称作一个分量
- 笛卡儿积是n个域形成的所有所有可能的n元组的集合。
- 如果域Di的基数是mi 那么笛卡儿积的基数=元组的个数是m1*m2*m3****mn
由于笛卡儿积中并不是所有的元组都是有意义的,由此我们从中抽取一些有意义的作为关系。
关系(Relation)
由于关系的不同列可能来自同一个域,那么作为区分需要为每一列起一个名字叫:属性名
属性名和域名是不一样的,域名是域的名字,但是属性名是关系里面的。
关系可以如下描述:
其中A是关系的属性名,而D是属性来源的域名。这种用属性名来表示关系的描述方式称为关系模式或者表标题。
例如下图的关系为一三目关系,描述为 家庭(丈夫:男人,妻子:女人,子女:儿童) 或者 家庭(丈夫,妻子,女人)
关系模式R(A1:D1 , A2:D2 , … , An:Dn )中属性指向域的映像在很多DBMS中通常直接说明属性的类型长度。例如:
关系模式与关系:
- 同一关系模式可以有很多关系。
- 关系模式是关系的结构,关系是关系模式在某一时刻的数据。
- 关系模式是稳定的,而关系是某一时刻的值,是随时间可能变化的。
思维回顾
关系有哪些特性
- 列是同质:即每一列中的分量来自同一域,是同一类型的数据
- 不同的列可来自同一个域,称其中的每一列为一个属性,不同的属性要给予 不同的属性名。
例如:
列位置互换性:区分哪一列是靠列名
行位置互换性:区分哪一行是靠某一或某几列的值(关键字/键字/码字)
关系是以内容(名字或值)来区分的,而不是属性在关系的位置来区分,如下面两个关系是完全相同的关系
理论上,关系是由集合来定义的,这就要求关系的任意两个元组不能完全相同。(满足集合的特性:集合内不能有两个完全相同的元素),现实应用中表可能并不完全遵守此特性。【元组相同是指两个元组的每个分量都相同】
属性不可再分特性:又被称为关系第一范式
关系上一些重要概念 候选键/候选码
依靠候选码我们可以把关系里面每一个元组都区分开,候选码可以唯一标识一个元组。
以上选课关系模型里面学生编号和课程代码就是一个候选码,但有时候候选码不止一个,可能有很多组。
主键/主码
当有多个 候选码/候选键 的时候,可以选用一个作为 主码/主键。
DBMS以主键作为主要线索管理关系中的各个元组。
主属性和非主属性
包含在任何一个候选码中的属性我们称之为主属性,而其他的就是非主属性。
最简单的候选码只有一个主属性。
最极端的所有属性构成这个关系的候选码称之为全码(AII-Key)。
外码(Foreign Key)/外键
关系R中的一个属性组,他不是R的候选码,但是他和另一个关系S的候选码相对应,那么就称这个属性是关系R外键/外码。
两个关系通常是用 外键/外码 连接起来的。
小结
关系模型的完整性
实体完整性:(针对主码而言)
关系的主码中的属性值不能为空值。
空值是不能参与算术比较,或者逻辑运算的。
参照完整性:(针对外码而言)
如果关系R1的外码Fk与关系R2的主 码Pk相对应,则R1中的每一个元组的 Fk值或者等于R2 中某个元组的Pk 值, 或者为空值。
参照完整性为了保证两个关系之间联系的正确性。
用户自定义完整性:(用户自定义的限制条件要满足)
用户针对具体的应用环境定义的完整性约束条件。
由于我们用的字符类型定义的范围还是太大,有时候我们需要进一步用户自定义属性条件。
DBMS系统提供了一套定义机制,让用户对某些属性定义相关的完整性约束。
当有更新操作发生的时候DBMS将自动按照完整性约束条件来检验更新操作的正确性,即是否符合用户自定义的完整性。