关系数据模型

关系数据模型

0x00 关系数据库三要素

​ 关系数据模型:关系数据结构+关系完整性约束

​ 关系代数

​ 关系演算

0x01 关系数据结构

关系:现实世界中的实体和实体之间的联系均可以用关系来表示QQ截图20200506164655

定义

​ 若干个属性构成了关系的模式 属性的值构成了一个实体

域(domain) 笛卡尔积 域的乘法运算,所有域的任意多元素的自由组合构成一个笛卡尔积

关系:D1XD2XD3…XDN(若干个域的笛卡尔集)的子集叫做域d1 d2 d3..dn上的关系

​ 上述子集中的一个值就是元组(tuple)

​ 关系中的不同的列称为属性(attribute)

(key)关系中某一属性的值能够唯一地标识一个元组,则称为该属性为码

​ 如果关系是定义在n个属性上的,那称该关系为n元关系

性质

​ 1列是同质的(homogeneous同种类的)

​ 2不同的列可以出自同一个域

​ 3列的顺序无所谓,列的次序可以任意交换

​ 4任意两个元组的候选码(candidate key)不能相同

​ 5行的顺序也无所谓

​ 6分量(属性)必需取原子值(即某一个属性不能是多个属性拼起来的)QQ截图20200506170247

关系必须是每个属性的域的笛卡尔积的子集,全集是所有排列组合都列出来,没有任何意义

关系模式

​ 关系模式和关系之间的关系是 型和值的关系

​ 一个关系模式可以如下表示

QQ截图20200506170558

​ 关系是关系模型在某一个时刻的具体值,关系模型是关系的结构

0x02 关系完整性约束

​ 分三类

实体完整性约束

参照完整性约束

用户定义的完整性约束

​ 前两个约束必须满足

实体完整性

​ 实体是客观存在的,且必须要可区分,所以反应实体的元组必须要可以区分

​ 具体来说:关系的主属性不能取空值(空值实际上不是一种值,是一个状态,表示还没有值)

QQ截图20200506171153

参照完整性

关系与关系之间的联系

​ 我们知道关系是可以描述实体内部的关系,也可以描述实体与实体之间的关系,参照即是一种实体与实体之间的关系QQ截图20200506171641

​ 学生是一个实体,专业也是一个实体,两者之间有对应关系

而我们的参照完整性约束就是对两者关系的一种约束

​ 比如 我们在图片的例子中,要求学生实体中的专业号的取值是在专业实体范围之中,这个要求即是一个参照完整性

QQ截图20200506172240外码 即一个关系的属性r是另一个关系s的主码,称r是参照关系,s是被参照关系,这个时候r中的外码要满足参照关系QQ截图20200506171958