数据库——第二章——关系数据库
关系数据库及形式化定义
在第一章已经学过,关系模型的概念,且关系模型包括三个方面:关系数据结构、关系集合操作、关系完整性约束,接下来的内容便是为从这三个方面展开的;
关系数据结构——关系——二维表
1、域
具有相同数据类型值的集合;
2、笛卡尔积
D1XD2X……XDn={(d1,d2,……,dn)|di∈Di,i=1,2……,n}
通过笛卡尔积得到的元组数目一共是m1xm2……xmn个
一般来说笛卡尔积是没有实际语义的,只有某个真子集才有实际含义;
3、关系
笛卡尔积的有限子集,也是一张二维表,表的每行对应一个元组,每列对应一个域
关系类型包括:基本表、查询表、视图
基本表:实际存在的表,它是实际存储数据的逻辑表示;
查询表:查询结果对应的表;
视图:是由基本表或其他视图导出来的表,是虚表,不对应实际存储数据;
表中行的顺序无所谓,但列的顺序不可颠倒
4、码
候选码:若关系中某一属性组的值能够唯一标识一个元组,而其自己不能,则称该属性组为候选码;
主码:主码也可以唯一标识一个元组,且主码是从候选码里选出来的,也就是说候选码可以是多个
若关系的属性都是候选码,则称为全码;
候选码的诸属性为主属性,不包含在任何候选码中的属性称为非主属性
关系模式
关系的描述称为关系模式
可以表示为R(U,D,DOM,F)
R为关系名,U为组成该关系的属性名集合,DOM属性向域的影响集合,F为属性间属性依赖关系集合;
关系操作
基本关系操作:查询(选择、投影、连接、除、并、交、差)和查、插、删、改两大部分
其中选择、投影、并、差、笛卡尔积是基本操作
关系操作的特点是:集合操作,操作的对象和结果都是集合——一次一集合
SQL语言
一种高度非过程化的语言;
具有数据查询、数据定义、数据控制功能;
关系完整性
实体完整性:主属性不能为空,所谓空值便是“不知道”或“不存在”或”无意义“ 以前我理解的是主码不能为空,看来是我错了
参照完整性:该关系中的主码被另一张关系表中某一列的取值所参照,而且这一列的取值必须在该关系主码中存在(或者取空值);
用户自定义完整性:人为规定的一些约束条件,例如学生的成绩啊规定在0~100之间;
关系代数
关系代数是一种抽象的查询语言,她用对关系的运算来表达查询
关系代数的运算按运算符分:
不忘初心,方得始终;初心易得,始终难守;