数据库(三)
关系模型的基本概念
关系模型就是处理Table的,由三个部分组成:
描述DB各种数据的基本结构形式(Table/Relation)
描述Table与Tbale之间所可能发生的各种操作(关系运算)
描述这些操作所应遵循的约束条件(完整性约束)
关系模式的三个要素
基本结构:Table/Relation
基本操作:Relation Operator,包括并、差、广义积、选择、投影、交、连接、除
完整性约束:实体完整性、参照完整性和用户自定义的完整性
Table的定义
域(Domain)
列:阈值范围称为“域”
域(Domain):一组值的集合,这组值具有相同的数据类型
集合中元素的个数称为域的基数(Cardinality)
域名:丈夫
域值:李基、张鹏等
笛卡尔积(Cartesian Product)
行:元组
笛卡尔积(Cartesian Product):所有可能组合成的元组
一组域D1,D2...Dn的笛卡尔积为:D1*D2*...*Dn = { (d1,d2,...,dn) | di Di , i = 1,...n}
笛卡尔积的每个元素(d1,d2...dn)称作一个n-元组
元组(d1,d2...dn)的每一个值di叫做一个分量(component)
元组(d1,d2...dn)是从每一个域任取一个值所形成的一种组合,笛卡尔积是所有这种可能组合的集合,即:笛卡尔积是由n个域形成的所有可能的n-元组的集合
若Di的基数为mi,则笛卡尔积的基数,即元组个数为m1*m2*...mn
关系(Relation)
关系(Relation):一组域D1,D2,...Dn的笛卡尔积的子集
笛卡尔积中具有某一方面意义的那些元组被称作一个关系
由于关系的不同列可能来自同一个域,为区分,需要为每一列起一个名字,该名字即为属性名
关系可用R(A1:D1,A2:D2,...,An:Dn)表示,可简记为R(A1,A2,...,An),这种描述又被称为关系模式(Schema)或表标题(head)
R是关系的名字,Ai是属性,Di是数学所对应的域,n是关系的度(列)或目(行),关系中元组的数目称为关系的基数
e.g:家庭(丈夫:男人,妻子:女人,子女:儿童)或家庭(丈夫,妻子,子女)
关系模式与关系
同一关系模式下,可有很多的关系
关系模式是关系的结构,关系是关系模式再某一时刻的数据
关系模式是稳定的;而关系是某一时刻的值,是随时间可变化的
关系模式是框架,关系是具体的实例
关系的特性
列是同质:每一列中的分量来自同一域,是同一数据类型
列位置互换性:区分那一列是靠列名
行位置互换性:区分哪一行是靠某一或某几列的值
关系是以内容(名字或值)来区分的,而不是属性再关系的位置来区分
理论上,关系的任意两个元组不能完全相同,但是现实应用中表可能不完全遵守此特性
属性不可再分特性:关系第一范式
候选码(Candidate Key)/候选键
关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,他就不具有这一性质了,这样的属性组称作候选码
e.g:选课(S#,C#,Sname,Cname,Gread),(S#,C#)联合起来是一个候选码
主码(Primary Key)/主键
当有多个候选码时,可以选定一个作为主码
DBMS以主码为主要线索管理关系中的各个元组
主属性与非主属性
包含在任何一个候选码中的属性被称为主属性,其他属性被称为非主属性
外码(Foreign Key)/外键
关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键
两个关系通常是靠外码连接起来的
实体完整性
关系的主码中的属性值不能为空值
空值:不知道或无意义的值
参照完整性
关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值,或者为空值
用户自定义完整性
用户针对具体的应用环境定义的完整性约束条件