关系数据库
一.关系数据库及形式化定义
-
关系
- 域
- 笛卡尔积
- 关系:笛卡尔积的子集
- 候选码、主码全码
- 关系的三种类型:基本关系、查询表、视图表
-
关系模式
- R(U,D,DOM,F),关系名(属性名集合,域,属性向域的映射空间,属性之间的依赖关系集合)
二.关系操作
- 关系操作:增删改查
- 基本操作:选择、投影、连接、除、并、差、交、笛卡尔积等
三.关系完整性
关系模型有三类完整性约束:实体完整性(Entity integrity)、参照完整性(Referential integrity)、用户定义完整性(User-defined intergrity)。其中实体完整性和参照完整性是两个必须满足的两个完整性约束条件,被称为两个关系不变形。
-
实体完整性:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。其中这里的空值是指“不知道”或“不存在”或“无意义”。
- 在mysql中,实体完整性用 定义,其中包括:检查主码值是否唯一,如果不唯一则拒绝插入或修改,检查主码各个属性是否为空,只要有一个为空就拒绝插入或修改
-
参照完整性:
- 参照完整性定义:学生(学号,姓名,专业号)。专业(专业号,专业名称)。专业号是关系模式专业的主属性,所以说专业号是学生关系的外码,学生关系是参照关系,专业关系是被参照关系。
- 参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码对应,那么R中每个元组在F上的取值
- 空值
- 等于S中某个元组的主码
- 在mysql中,当上述不一致发生时,系统可以采用以下策略加以处理:
-
用户定义完整性:用户定义完整性是指用户针对某一具体数据库的约束条件,它反应某一具体应用所涉及的数据库必须满足的语义要求。如性别要求,只能是男或女。
- 列值非空
- 列值唯一
- 检查列值是否满足一个条件表达式(短语)
四.关系代数
-
传统的集合运算
- 并
- 差
- 交
- 笛卡尔积
-
专门的关系运算
- 选择
- 投影
- 连接:等值连接、自然连接、外连接(左连接、右连接)
- 除:关系R除以关系S的结果为关系T,T中包含所有在R中但是不在S中的属性及值。T中元组与S中元组的所有组合都在R中。(不理解见书P55)