关系数据库系统是支持关系模型的数据库系统
关系数据模型
关系数据结构
单一的数据结构—-关系
现实世界的实体以及实体间的各种联系均用关系表示
数据的逻辑结构—-二维表
从用户角度,关系模型中数据的逻辑结构就是一张二维表
相关概念
关系模型建立在集合代数的基础上
域(列的类型varchar)
域是一组具有相同数据类型的值的集合
如:整数,实数,{‘’男,’女’}
笛卡尔积
给定一组域D1,D2……Dn。集合元素交叉相乘
可以使用二维表来表示,表中的每一行对应一个元组,表中的每列对应一个域
关系
笛卡尔集的子集(D1,D2,D3…Dn)叫做在域D1,D2,D3…Dn上的关系,表示为R(D1,D2,D3…Dn),R:关系名;n:关系的目或度
表的每行对应一个元组,表的每列对应一个域,表的列表示属性
码:key,是由一个属性或多个属性构成
候选码:在关系中能唯一表示元组的属性或属性集,保证主码
主属性:候选码的各个属性
主码:用户选作元组标识的候选键
全码:关系的所有属性是这个关系的候选码
关系模式
关系数据库
三类关系:
基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示
查询表:查询结果对应的表
视图:有基本表或其他视图导出来的表,是虚表,不对应实际存储的表
基本关系的性质
列是同质的
每一列的分量都是同一类型的数据,来自同一个域
不同的列可出自同一个域
其中的每一列称为一个属性,不同的属性要给予不同的属性名
列的顺序无所谓
任意两个元组不能完全相同(主键不能相同)
行的顺序无所谓
分量必须取原子值
关系实例的所有表现形式问题
如果考虑到元组的顺序和属性的顺序,则这个关系实例有多少种不同的表现形式?
n个属性和m个元组的话,表达式就是m!*n!(无所谓行,无所谓列)
关系模式(关系是值,关系模式是型)
关系模式是对关系的描述,静态的稳定的
关系模式是型,关系是值
关系是指关系模式在某一时刻的状态或内容,关系是动态的、随时间不断变化的
类似关系只表示学生,而关系模型是学生(id,name,sex…..等)
关系模式通常机尾R(A1,A2…..An)
在一个给定的应用领域中,所有实体即实体之间联系的关系集合构成一个关系数据库。
关系数据库模式是关系数据库的型,是对关系数据库的描述。
关系操作
常用的关系操作
查询、插入、删除、更新
关系操作的特点
集合的操作方式
关系数据语言的种类
关系代数语言
关系演算语言
具有上两者双重特点的语言。如sql(关系数据库的标准语言)
关系数据语言的特点
是一种高度非过程化的语言
能够嵌入高级语言中使用
完整性约束
关系模型的完整性规则是指对关系的某种约束条件
关系模型中三类完整性约束:
实体完整性
主码唯一且不能为空
主属性不能取空值(mysql可以)
参照完整性
关系间引用
外码
参照完整性规则
用户定义的完整性
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作为关系的两个不变性,应该由关系系统自动支持
实体完整性
实体完整性规则是针对基本关系而言的
现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识
关系模型中以候选码作为唯一性标识
所谓空值就是“不知道”或者”无意义”的值,如果主属性取空值,就说明存在某个不可标识的实体,即不可区分的实体,这与第二点相矛盾,因此这个规则又称为实体完整性
参照完整性
参照完整性规则就是定义外码与主码之间的引用规则
参照完整性规则中外码的取值必须为:
或者取空值,表示尚未分配
或者等于被参照表中某一个元组的主码值