第一章: 绪论
数据库数据三个基本特性:
- 永久存储
- 有组织
- 可共享
数据库管理系统(DataBase Management System, DBMS)主要功能:
- 数据定义功能 – DBMS提供数据定义语言(Data Definition Language, DDL)
- 数据组织, 存储和管理
- 数据操纵功能:
- 数据库的事务管理和运行管理 – 保证数据安全性, 完整性, 多用户对数据的并发使用, 发生故障后的系统恢复
- 数据库的建立和维护功能 – 初始数据的输入, 转换功能
数据库系统(DataBase System, DBS)
- 数据库
- 数据库管理系统(及其开发工具)
- 应用系统
- 数据库管理员
数据库系统的特点
- 数据结构化
- 数据共享性高, 冗余度低, 容易扩充
- 数据独立性高: 物理独立性, 逻辑独立性
- 由DBMS统一管理和控制
数据模型(Data Model)
按模型应用的不同目的分为两类
- 概念模型: 按照用户观点进行建模, 描述数据库的语义
- 逻辑模型: 层次模型, 网状模型, 关系模型, 面向对象模型, 对象关系模型 – 按计算机系统的观点进行数据建模, 主要进行DBMS的实现1
- 物理模型: 对数据最底层的抽象, 描述数据在系统内部的表示方式和存取方法, 面向计算机系统.
数据模型的组成要素
- 数据结构
- 数据操作: 查询和更新(插入, 删除, 修改)
- 数据的完整性约束条件: 关系模型中, 任何关系必须满足实体完整性(关键字唯一确定一条记录)和参照完整性(数据一致性)
基本概念
- 实体(Entity): 客观存在并可相互区别的事物
- 属性(Attribute): 实体所具有的某一特性
- 码/关键字(Key): 唯一标识实体的属性集
- 域(Domain): 一组具有相同数据类型的值的集合, 属性的取值范围来自某个域
- 实体型(Entity Type): 抽象一类具有相同特征的实体, 即实体类型
- 实体集(Entity Set): 统一类型实体的集合
- 联系(Relationship): 实体内部的联系: 组成实体的各属性之间的联系; 实体之间的联系: 不同实体集之间的类型
- 一对一联系:(1 : 1) 两实体集之间一对一的关系
- 一对多联系(1 : n): 对实体集A中的每一个实体, 实体集中有n个实体与之可联系.
- 多对多联系(m : n)
概念模型表示方法: 实体-联系图(E-R图)
实体型: 用矩形表示;
属性: 用椭圆型表示, 并用无向边与其相应实体型联系起来;
联系: 用菱形表示, 并用无向边分别与有关实体型连接起来, 在边旁标上联系的类型;
数据库系统的三级模式结构
- 外模式(子模式/用户模式): DB用户能看见和使用的局部数据的逻辑结构和特征的描述
- 模式(逻辑模式): DB中全体数据的逻辑结构和特征的描述, 是所有用户的公共数据视图
- 内模式(存储模式): 数据物理结构和存储方法的描述, 是数据在数据库内部的组织方式 -> 保证物理独立性
三大完整性
- 实体完整性: 主码唯一且非空: 不唯一则拒绝插入/修改
- 参照完整性: 外码的约束
- 用户定义完整性: 属性上约束条件的定义
第二章: 关系型数据库
- 域(Domain): 一组具有相同数据类型的值的集合
- 笛卡尔积(Cartesian Product): 给定一组域, 这些域可以相同, 其笛卡尔积为所有域的所有取值的集合.
- 元组(Tuple): 笛卡尔积中每一个元素称作一个n元组.
- 分量(Component): 笛卡尔积元素中的每一个值都是一个分量
- 基数(Cardinal number): 域空间的状态数, 或者取值范围的大小.
- 关系(Relation): D1*D2…*Dn的子集称做在域上的关系, 表示: R(D1, D2, …, Dn)
- 关系即二维表, 每行对应一个元组, 每列对应一个域, 一个属性.
- 码:
- 候选码(Candidate key): 关系中的某一属性组的值能唯一标识一个元组, 称为候选码
- 全码(All-Key): 关系模式中的所有属性组是这个关系模式的候选码
- 主码(Primary key): 若一个关系有多个候选码: 则选定其中一个为主码:
- 超码: 能推出所有属性的属性组的集合, 候选码是极小的超码集, 是超码的子集
- 属性
- 主属性: 包含在任何一个候选码中的属性
- 非主属性: 不包含在任何一个候选码中的属性
三类关系
- 基本关系(基本表/基表): 实际存在的表, 是实际存储数据的逻辑表示
- 查询表查询结果对应的表
- 视图表由基本表或其他视图表导出的表, 是虚表, 不是实际存储的数据, 而是基表的部分引用
基本关系的性质:
- 列是同质的(Homogeneous)
- 不同列可出自同一域, 每列称为一个属性
- 列的顺序无关紧要
关系模式
关系模式(Relation Schema) 是对关系的描述, 关系模式是型, 关系是值
关系模式 – structure type; 关系: object of structure
定义: R(U, D, DOM, F)
R: 关系名
U: 组成该关系的属性名集合
D: 属性组U中属性所来自的域
DOM: 属性向域的映像(映射)集合
F: 属性间的数据依赖关系集合, 或者说该关系模式的约束
关系数据库
在一个给定的应用领域中, 所有关系的集合构成一个关系型数据库
- 关系型数据库的型: 关系型数据库的模式, 或者说对关系数据库的模式
- 关系型数据库模式: 若干域的定义
- 关系数据库的值: 关系模式在模式可对应的关系的集合, 简称为关系数据库
关系模型的存储结构
- 一个表对应一个操作系统文件, 将物理数据组织交给操作系统完成
- 从操作系统申请若干大文件, 自己划分文件空间, 表等结构
基本关系操作
- 常用关系操作:
- 查询: 选择, 投影, 连接, 除, 并, 交, 差, 笛卡尔积等, 加粗为五种基本操作
- 数据更新: 插入, 删除, 修改
- 关系操作的特点:
- 集合操作方式: 操作对象和结果都是集合
关系数据库语言的分类
- 关系代数语言: 用对关系的运算表达查询要求: e.g: ISBL
- 关系演算语言: 用谓词表达查询要求
- 元组关系演算语言: 谓词变元的基本对象是元组变量e.g: ALPHA, QUEL
- 域关系演算语言: 谓词变元的基本对象是域变量e.g: QBE
- 具有关系代数和关系演算双重特点的语言: SQL
关系的完整性
- 实体完整性(Entity Integrity)
- 若属性A是基本关系R的主属性, 则A不能取空值, 所有基本关系的主属性都不能取空值, 或称主码不能为空
- 参照完整性
- 若属性(组)F是基本关系R的外码, 其与基本关系S的主码KS相对应, 则对于R在每个元组在F上的值必须为: 空值(F的每个属性值均为空值), 或等于S中某个元组的主码值(引用要么为空, 要么必须有效)
- 关系模型中实体及实体间的联系都是用关系来描述的, 存在关系与关系间的引用
- 用户定义的完整性
- 针对某一具体关系数据库的约束条件, 反映某一具体应用所涉及的数据必须满足的语义要求
实体完整性和参照完整性在关系模型必须满足, 称为关系的两个不变性
外码(Foreign Key)
设F为基本关系R的一个或一组属性, 但不是关系R的码. 若F与基本关系S的主码Ks相对应, 称F为基本关系R的外码.
外码用来建立表之间的关联关系
R: 称为参照关系(Referencing Relation), 一般在从表中
S: 称为被参照关系(Referenced Relation), 一般在主表中
外码不一定要与相应的主码同名, 但当外码与相应的主码从属于不同关系时, 往往取相同名字, 以便于识别.
关系理论
函数依赖
- 非平凡的函数依赖: X -> Y, Y !≤ X: X可以推出Y, 但Y不是X的子集
- 平凡的函数依赖: X -> Y, Y ≤ X 一般情况下, 某个集合总能推出其子集, 也就是平凡的函数依赖
- 完全函数依赖: X -> Y, 且对于X的任意真子集X’, 都有X’ -/-> Y, 称Y完全函数依赖于X, 记作 X -F-> Y
- 部分函数依赖: Y不完全函数依赖于X, 记作X -P-> Y, 例如A -> C, 又 AB -> C, 那么C部分函数依赖于AB, 此时造成数据冗余.
求候选码的方法:
集合 U = {A, B, C, D, E, F, G}, 函数依赖集F = {AB -> C, CD -> E, E -> A, A -> g}
- 找出一定属于候选码的属性: 只出现在左边, 或左右都没出现,
- 可能属于候选码的属性: 左右都出现
- 不属于候选码的属性: 只出现在右边
进行闭包运算: 设有集合X := {该属性组}
X(0) = 自身
X(1) = X(0) 中的属性所能推出的
以此类推, 直到X(k) = U或者X(k) = X(k – 1), 就求得了属性组的闭包(X)+F
对其他属性组也进行闭包操作, 比较哪些更少的属性能推出所有属性, 从而得到其候选码.
闭包运算还可用于判断X -> Y是否成立: 当Y 是X的闭包的子集时, 有 X -> Y
关系代数
关系代数: 一种抽象的查询语言, 是对关系的运算来表达查询
运算对象是关系, 运算结果也是关系
按运算符不同可分为传统集合运算和专门的关系运算两类
- 集合运算: 从关系的水平方向(行的角度考虑)
- 交, 并, 差 -> n目关系, 由运算数的若干元组组成
- (广义)笛卡尔积 -> 将两关系的所有元组进行组合, 生成新关系
- 专门的关系运算: 行列都有
- 选择(σ), 选择一个关系R的某个属性, 设r∈R, r为R的一个元组, r[Ai]标识元组r中属性Ai的值
- 投影(π),
- 连接(θ), 从两关系的笛卡尔积中选取属性间满足一定条件的元组
- 等值连接
- 自然连接(特殊的等值连接)
- 除
范式
- 1NF: 第一范式, 所有属性都是不可分割的数据项(所有数据项都是原子项), 1NF是关系数据库需要满足的最低要求
- 2NF: 在满足1NF的前提下, 不包含非主属性对码的部分函数依赖(即每一个非主属性都完全依赖于码)
- 3NF: 在满足2NF的前提下, 不包含非主属性对码的传递函数依赖(即码应该直接决定非主属性, 不能间接决定)
- BCNF: 消除任何属性对候选码的传递依赖, 即每一个决定因素(推导公式的左部)都包含码, 表现在函数依赖集中, 左边的都包含候选码(整个属性组)
- 4NF: 不允许有非平凡函数的多值依赖
发表回复
要发表评论,您必须先登录。