数据库: 期末复习
期末总复习
基本概念
文件系统的弊端
- 数据冗余、数据不一致:在多个文件中,某些数据会出现冗余,导致修改时涉及很多文件,此时发生异常将导致数据不一致问题;这里的一致性指的是不同文件中数据本该相同,但实际上不同的情况
- 访问困难
- 数据孤立
- 数据完整性:指文件中数据不符合现实逻辑的情况,对某个数据添加约束时,很难约束所有涉及到该文件的程序
- 操作的原子性:对文件的修改难以做到要么全部完成、要么完全没有修改
- 多用户并发访问:当多个用户同时访问文件时,容易导致数据不一致问题
- 安全性问题:难以灵活调整不同用户对文件的访问权限
DBMS基本概念
- 数据是描述现实事物的符号记录
- 数据库是数据的集合
DBMS(数据库管理系统),是用于管理数据库的基础软件系统,也是通常意义上的数据库 数据库系统则是由DBMS、数据库、管理员、应用进程组成的一套系统- 数据库的三级模式:分为外部层(视图层、外模式)、概念层(逻辑层、模式)、内部层(物理层、内模式)
- 先考虑模式的概念:相当于一种数据类型,一个模式包含多个属性名及对应的属性类型和完整性约束 平常接触的表就是一个模式的实例 平常一个模式只会有一个实例,所以经常将“关系”、“关系模式”混着说
- 视图层:对于不同的用户、根据权限和需求展现不同的数据 例如平时使用查询语句以及创建视图时,查出来的结果,用户可以修改视图的列名,由系统完成从视图层到概念层的映射,只不过这些视图是
- 逻辑层:包含由创建该模式的用户起的名称及类型,例如平常接触的表就是一个概念层的实例
- 物理层:包含具体来说在数据库管理系统中真正的由系统起名、由系统管理的名称;以及其对应的存储大小、存储位置等
- 数据库的两级映射:使数据库具有独立性,在一层发生变动时,其它层不需要由用户维护而仍保持不变
- 视图层和逻辑层:使数据库具有逻辑独立性
- 逻辑层和物理层:使数据库具有物理独立性
- 数据模型:是数据、数据联系、数据语义、数据一致性约束的集合
- 概念数据模型:实体-联系模型 也就是
ER图 - 逻辑数据模型:关系模型、网状模型、层次模型、基于对象数据模型、半结构化数据模型
- 物理数据模型:
B树等
- 概念数据模型:实体-联系模型 也就是
关系数据模型
- 关系数据模型是一种逻辑数据模型 其中数据结构、数据完整性约束体现在用户设计的模式上 数据操作和数据结构、数据完整性约束共同构成关系数据模型
- 在关系数据模型中:
- 关系模式的实例称为关系,它们通常是一对一的,所以会混着用
- 关系也称为表
- 属性相当于表的一列
- 元组相当于表的一行,元组是一个关系的最小单位
- 一个属性的域是所有可以作为该属性的值的集合 域的原子性是第一范式,即域的所有值都是不可再分的
- 空值
NULL是一个特殊的值,表示未知、不确定,其参与的所有表达式都返回false(除is null等特殊表达式) - 关系完整性约束:
- 超码:是一个属性组,若这个属性组的值确定,则可以唯一确定关系中所有属性的值
- 候选码:是最小的超码,其任何真子集都不是超码 所有在候选码中出现过的属性称作主属性,其余是非主属性
- 主码:被设计者选中来作为关系的唯一标识的那个候选码
- 实体完整性约束:对于一个主码,它会受到实体完整性约束,用户插入的主码的值必须满足唯一、非空
- 参照完整性约束和外码:一个关系R1的属性组T1参照另一个关系R2的主码T2,称为T1是参照R2的外码 其中,T1不要求是主码,但有参照完整性约束,T1的值要么为空、要么是现在R2中存在的T2的值 T2要求是R2的主码
- 用户自定义完整性约束:唯一性约束、非空约束、检查约束(约束值的范围)
关系代数
概述
过程式查询语言
基本、附加、扩展
基本运算:σ、Π、
$\Pi_{投影的若干列}\left(\begin{align}\sigma_{选择条件}\left(数据源\right)\end{align}\right)$
σ:选择(限制)运算
选择条件可用的逻辑运算符: ∧ 、 ∨ 、¬
Π:狭义的投影运算,只能选择属性进行投影
ρ新名(原名):重命名运算
$\cross$:笛卡尔积运算
集合运算: ∪ 、−
⋈:自然连接
⟕、⟖、⟗:左/右/全外连接,在自然连接的基础上保留左端/右端/两端的所有行
⋈θ:θ连接,其中θ是自定义的连接条件
关系除:r(R)
聚集函数:分组依据𝒢聚集函数值
$\begin{align}\Large\rm\Pi_{ename,sal}(\sigma_{dept.loc='New\ York'\wedge emp.deptno=dept.deptno}(emp\cross dept))\end{align}$
数据库设计
基本概念
- 在进行需求分析后,数据库设计分为三步:
- 设计概念数据模型
- 设计逻辑数据模型
- 设计物理数据模型
ER模型设计
ER模型是最常见的概念数据模型,全称Entity-Relationship模型,即实体-联系模型ER模型由以下部分组成:- 实体集
- 联系集
- 属性和它的域
属性的类型:
简单类型
复合类型:由多个属性组成的属性,在
ER模型中表示为:1
2
3composite_attribute
component_1
...即由缩进表示从属关系
多值类型:可能同时含有多个值的类型,在
ER模型中表示为:1
{multivalue_attribute}
派生属性(或导出属性):可以由其它属性求出的属性,在
ER模型中表示为:1
derived_attribute()
作为码的属性:在
ER模型中用下划线指出
实体由属性和具体的值表示,由所有可能的实体构成的集合就是实体集 实体集在
ER模型中表示为方框,上面是实体集名称,下面是属性集合联系是若干实体之间的关联,也就是一个联系允许关联多个实体(但本文仅考虑二元联系),但不允许有关联联系的联系 由相同类型的联系构成的集合就是联系集,在
ER模型中表示为棱形 一个联系集允许有不同于相关联实体集属性的属性,称为描述性属性,在ER模型中表示为由虚线引出的方框中的属性参与度约束:
- 称一个实体参与一个联系集,是一个实体至少对应一个另一端的实体,即限制对应关系的下限
- 称一个实体集完全参与一个联系集,是这个实体集的所有实体都参与这个联系集 否则称这个实体集部分参与这个联系集
- 完全参与和部分参与在
ER模型中表示为双线、单线
映射基数约束:限制对应关系的上限,分为一对一基数、一对多基数、多对多基数
- 一对一基数:双方实体集都满足“所有实体至多对应一个另一端的实体”
- 一对多(或多对一)基数:对于多方实体集,没有上述限制
- 多对多基数:对于双方实体集都没有上限的限制
码约束:
- 对于实体集来说,用户定义的码属性就是该实体集的码,它们的某个值必须能够唯一标识一个实体
- 对于联系集来说,多方实体集的码属性就是联系集的码;如果两边都是多方,则使用双方的码作为联系集的码;如果双方都是“一”方,则使用任意一方的码作为联系集的码
ER模型中不允许出现起外码功能的属性,如果实体集中存在这样的属性则需要删去 如果删去后剩余的码属性无法唯一标识一个实体,但依赖于另一方的码属性后又可以唯一标识时,则称该实体集为弱实体集,关联该弱实体集和其依赖的强实体集的联系集用双棱形表示 弱实体集的“码属性”没有码的职责,因此它们的集合称为分辨符,用虚线下划线表示
关系型数据模型设计
- 关系型数据模型是一种逻辑数据模型,将
ER模型转化为关系型数据模型 - 对于所有一对一的联系集,联系集不需要单独作为一个关系,两个实体集各作为一个关系,联系集的属性可作为任意一个实体集的属性