关系数据库
关系数据模型
关系是一个数学概念。
当把关系的概念引入到数据库系统作为数据模型的数据结构时,既有所限定和也有所扩充。
关系的数学定义
例:
课程={离散,C语言…..},学生={张三,李四…..}
笛卡儿积(cartesian product):设D1、...、Dn是n个域。D1、...、Dn上的笛卡尔乘积定义为集合
D1×...×Dn ={ (d1 , ..., dn ) | di ∈Di,1≤i≤n }。
解:
D1={离散,C语言…},D2={张三,李四…}
D1×D2={(离散,张三),(离散,李四),……
(C语言,张三),(C语言,李四),……
…….}
关系(relation):笛卡尔乘积D1×...×Dn的任意一个子集合称为一个定义在域D1、...、Dn上的关系。
对数学定义的限定和扩充
限定:无限关系在数据库系统中是无意义的。因此限定关系数据模型中的关系必须是有限集合。
数学上,(离散,张三)≠(张三,离散)
扩充:通过为关系的每个域附加一个属性名的方法取消关系元组的有序性
数据库上:(离散,张三)=(张三,离散)
基本关系具有以下六条性质:
列是同质的,即每一列中的分量是同一类型的数据;
不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性必须给不同的属性名;
列的顺序可任意交换;
任意两个元组不能完全相同;
行的顺序可任意交换;
分量必须取原子值,即每一个分量都必须是不可分的数据项。
完整性约束规则
几个基本概念
候选键:给定关系模式R(U),K属于U,如果
(1) R(U)的任何关系实例中的任意两个元组在属性集合K上的值都不相同----唯一性
(2) K的任何真子集都不满足条件(1)----极小性
称K是候选键。
例:Student(姓名, 学生编号, 年级, 专业, 系)
显然,学生编号是候选键。
如果姓名不重复,姓名也是候选键。
主键:一个关系模式可能具有多个候选键。
当一个关系中具有多个候选键时,我们选择一个作为该关系模式的主键。
候选键中的属性称为键(主)属性,其他属性称为非键(主)属性
外部键