第二章-关系数据库
一、关系数据结构及形式化定义
关系
基本概念:
-
域:一组具有相同数据类型的值的集合。
-
笛卡尔积:一种集合运算。
-
关系:所有属性的笛卡尔积的子集。
-
候选码、主码:唯一标识一个元组的属性集,候选码中取其一为主码。
关系的三种类型:
- 基本关系(基本表):实际存在的表。
- 查询表:查询结果对应的表。
- 视图表:由基本表或其他视图导出的表,是虚表。
1NF:关系的每一个分量必须是一个不可分的数据项。
关系模式
对关系的描述称为关系模式(ralation schema),记为\(R\left(U,D,DOM,F\right)\),可简记为\(R\left(U,F\right)\)。
- \(R\):关系名
- \(U\):组成该关系的属性名集合
- \(D\):\(U\)中属性所来自的域
- \(DOM\):属性向域的映射集合
- \(F\):为属性间数据的依赖关系
二、关系操作
基本的关系操作
关系操作的特点是集合的操作方式,即操作的对象和结果都是集合。关系模型中常用的关系操作包括查询、插入、删除、修改操作等。关系的查询表达能力很强,查询操作可分为选择、投影、连接、除、并、差、交、笛卡尔积等。
其中的基本操作为:选择、投影、并、差、笛卡尔积。其他的操作可以用基本操作来定义和导出。
关系数据语言
关系数据语言有关系代数语言和关系演算语言,另外还有一种介于两者之间的结构化查询语言\(SQL\)。
\(SQL\)语言是一种高度非过程化的语言,存储路径的选择由关系数据库管理系统的优化机制完成。
三、关系的完整性
关系模型中有三种完整性约束:实体完整性、参照完整性和用户定义完整性。
实体完整性
若属性\(A\)是基本关系\(R\)的主属性,则\(A\)的值不重复不能取空值。
参照完整性
设\(F\)是基本关系\(R\)的一个或一组属性,但不是关系\(R\)的码,\(K_s\)是基本关系\(S\)的主码。如果\(F\)与\(K_s\)相对应,则称\(F\)是\(R\)的外码,并称基本关系\(R\)为参照关系,基本关系\(S\)为被参照关系。
参照完整性的规则:
设属性\(F\)是基本关系\(R\)的外码,它与基本关系\(S\)的主码\(K_s\)相对应,则对于\(R\)中的每个元组在\(F\)上的值必须:
- 或者取空值
- 或者等于\(S\)中某个元组的主码值
用户定义完整性
用户定义完整性针对某一具体关系数据库的约束条件,例如某属性取值必须唯一,某属性不能取空值等。
四、关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
关系代数的运算按运算符的不同分为传统的集合运算和专门的关系运算。
运算符 | 描述 |
---|---|
\(\cup\) | 并 |
\(-\) | 差 |
\(\cap\) | 交 |
\(\times\) | 笛卡尔积 |
\(\sigma\) | 选择 |
\(\Pi\) | 投影 |
\(\bowtie\) | 连接 |
\(\div\) | 除 |
上述运算的具体含义见:此博客
专业之外,喜欢阅读,尤爱哲学、金庸、马尔克斯。