关系数据回顾
参考中科大金培权ppt
数据库体系结构
ANSI/SPARC体系结构——三级模式结构+两级映像
数据库模式的概念
- 模式:数据库中全体数据的逻辑结构和特征的描述(不涉及到具体的值)
- 实例:模式的一个具体值
- 三级模式结构:
1)概念模式(模式、逻辑模式)
定义:数据库中全体数据的逻辑结构和特征的描述(数据项、类型、取值范围、数据间的联系、数据的完整性)
特点:不涉及物理存储的细节和硬件环境、具有唯一性
概念视图:概念模式的实例
通过模式DDL定义
2)外模式(子模式、用户模式)
定义:单个用户看到的局部数据的逻辑结构和特征的描述
特点:对于用户而言,外模式就是数据库;同一概念模式可能有多个不同的外模式
外部视图:外模式的实例
通过子模式DDL定义
3)内模式(存储模式)
定义:数据物理结构和存储方式的描述(记录的存储方式、索引组织方式、加密/压缩)
特点:不涉及具体的磁盘块大小;具有唯一性
内部视图:内模式的实例
通过内模式DDL定义
- 二级映像和数据独立性
二级映像实现三级模式结构间的联系和转换,使用户可以逻辑地处理数据,不必关心数据的底层表示方式和存储方式
外模式/模式映像
1)定义:外模式和概念模式之间的对应关系(外模式中的属性可能由模式中的多个属性运算而得)
2)概念模式发生改变时,只要修改外模式/模式映像,可保持外模式不变,从而保持用户应用程序不变,保证了数据与用户程序的逻辑独立性——数据的逻辑独立性
模式/内模式映像
1)定义:概念模式和内模式之间的对应关系(概念模式中的逻辑记录和字段在内部如何表示)
2)当数据库的内部存储结构发生改变时,只要修改模式/内模式映像,可保持概念模式不变,从而保持外模式以及用户程序的不变,保证了数据与程序的物理独立性——数据的物理独立性
- SQL数据库体系结构
关系数据模型
数据模型是描述现实世界实体、实体间联系以及数据语义和一致性约束的模型
数据模型的分类
目的分类
- 概念数据模型:按用户的观点建模,应用于数据库的概念设计
- 结构数据模型:按计算机系统的观点建模,面向数据库的逻辑结构
数据模型实例
- 现实世界(客户存款)
- 概念模型(E-R模型)
- 机器世界(数据模型(关系模型))
数据模型要素
- 数据结构
- 数据操作
- 数据的完整性约束(数据及数据间联系应具有的制约和依赖规则)
关系模型
- 结构:
实体集:规范化的二维表格结构
实体间联系:外码
三类完整性表示数据约束的数据模型
术语
- 属性:二维表格的每一列称为关系的一个属性
- 度:列的数目
- 元组:每一行称为关系的一个元组
- 势:元组的数目
- 域:一组具有相同数据类型的值的集合,每个属性有一个域
- 关系:元组的集合
- 超码:在关系中能唯一标识一个元组的属性集称为关系模式的超码
- 候选码:不含多余属性的超码
主属性:包含在任何一个候选码中的属性
非主属性:不包含在任何一个候选码中的属性
- 主码:用户选择元组标识的一个候选码称为主码(注意不一定是主属性)
- 替换码:除主码的其余的候选码
关系的性质
一个关系是一个规范的二维表格
- 属性值不可分解(不允许表中有表)
- 元组不可重复(因此一定存在至少一个候选码)
- 没有行序,即元组之间无序
- 没有列序,即属性之间无序
关系模式与关系数据库
- 关系模式:关系的逻辑结构和特征的描述,对应表头,通常由属性集和各属性域表示(不关心域时可以去除)
- 关系:关系模式的实例,元组的集合(二维表)
- 关系数据库模式:关系模式的集合
- 关系数据库:关系数据库模式的实例
关系模式的形式化定义
- 定义:R(U,D,dom,F)
其中R为关系模式名,U是一个属性集,D是域,dom是属性到域的映射集合,F是属性间的依赖关系
函数依赖
R(U,D,dom,F)中的F在实际中一般只考虑函数依赖
- 定义:函数依赖是指一个关系模式中一个属性集和另一个属性集间的多对一关系
- 例子:SC(S#,C#,Score)中给定的S#值和C#值,只有一个Score对应;反过来可以存在多个S#和C#它们对应的Score值相等
- 形式化定义:
关系模型的形式化定义
- 数据结构:关系,数据库中全部数据及数据间联系都以关系来表示
- 数据操作:关系运算(关系代数、关系演算)
- 数据的完整性约束:关系模型的三类完整性规则
关系代数
操作 | 并 | 交 | 差 | 笛卡尔积 | 选择 | 投影 | 联接 | 除 | 重命名 | 赋值 |
---|---|---|---|---|---|---|---|---|---|---|
数学表达 | ∨ \lor ∨ | ∧ \land ∧ | − - − | × | σ \sigma σ | π \pi π | ⋈ \Join ⋈ | ÷ | ρ x ( E ) \rho_x(E) ρx(E) | ← \gets ← |
英文表达 | Union | Intersect | Minus | Times | Where | All but… | Join | Divideby |
- 其中笛卡尔乘积为
- 联接有三种方式
自然联接: R ⋈ S R\Join S R⋈S相当于在R×S中选取R和S的所有公共属性值都相等的元组,并在结果中去除重复属性(列)
θ 联 接 \theta 联接 θ联接: R ⋈ A θ B S R\Join_{A \theta B} S R⋈AθBS相当于在R×S中选取R的属性A值和S的属性B值满足比较关系 θ \theta θ的元组
等值联接:当 θ \theta θ为等号时
- 关系代数具有封闭性:任何关系代数操作的结果仍然是一个关系
增:插入一个新学生 S 1 ← S 1 ∪ { i d , n a m e , c i t y } S1\gets S1\cup \{id,name,city\} S1←S1∪{id,name,city}
删:删除id为1的学生 S 1 ← S 1 − σ i d = 1 ( S 1 ) S1\gets S1-\sigma_{id=1}(S1) S1←S1−σid=1(S1)
查:查找老乡
改:将所有学生id前加S S 1 ← π S ∣ ∣ i d , n a m e , c i t y ( S 1 ) S1\gets \pi_{S||id,name,city}(S1) S1←πS∣∣id,name,city(S1)(这里是广义投影)
关系模型的三类完整性规则
- 实体完整性:主码不为空
- 参照完整性:R的任一外码值必须等于被参照关系S中所参照的候选码的某个值,否则为空
- 用户自定义完整性:具体应用的特殊语义要求
SQL
SQL基本组成
DDL | 数据定义语言 | 模式操作 | Create(Alert、Drop) Table |
DML | 数据修改语言 | 记录操作 | Insert |
DCL | 数据控制语言 | 权限操作 | Grant |