数据库原理及应用相关整理
基础
按抽象程度划分的三大世界如下。
- 现实世界;
- 信息世界(第一层抽象);
- 数据世界(第二层抽象,又称计算机世界)。
三大世界的术语对应如下表。
其中,数据项是最小操作单位。
现实世界 | 信息世界 | 数据世界 |
---|---|---|
个体 | 实体 | 记录 |
特征 | 属性 | 数据项 |
全体 | 实体集 | 文件 |
关系 | 概念模型 | 逻辑模型 |
管理技术的三个阶段如下。
人工管理;
文件系统;
文件系统存在的缺陷如下。
冗余(Redundancy);
冗余存在于文件系统,也存在于数据库系统。
不一致(Inconsistency);
弱联系(Poor Relationship)。
数据库系统。
数据独立性最高,与文件系统的主要区别体现于数据集成化。
数据库(Database)
长期存储于计算机内,有组织且统一管理的相关数据的集合。
在数据库中存储的是数据及数据间的联系。
数据模型(一般指逻辑模型)可分为如下两类。
- 概念模型:面向客观世界,独立于计算机系统;
- 逻辑模型:面向数据库,主要用于DBMS的实现。
数据模型的基本组成如下。
- 数据结构;
- 数据操作;
- 约束条件。
三大基本数据模型及其优缺点如下表。
其中,关系模型是主流的数据模型。
数据模型 | 优点 | 缺点 | 备注 |
---|---|---|---|
层次 | 1. 简单清晰; 2. 效率高; 3. 良好的完整性支持。 |
1. 现实联系是复杂的; 2. 对插入删除操作限制较多; 3. 查询子女比经由双亲。 |
层次序列即树的先序遍历。 |
网状 | 1. 更为直接地描述现实世界; 2. 性能良好且存取效率高。 |
1. 结构复杂; 2. DDL和DML复杂; 3. 数据独立性差。 |
首记录即树根; 属记录即树叶。 |
关系 | 1. 坚实的数学理论基础; 2. 实体联系皆能二维表表示; 3. 数据独立性高。 |
查询效率低。 | 元组即行;属性即列; 元数即模型中属性的个数。 |
此外,还有以对象为基本结构的面向对象数据模型。
数据定义语言(DDL; Data Definition Language)
定义结构,如SQL中的CREATE
、DROP
等语句。
数据操控语言(DML; Data Manipulation Language)
操控记录,如SQL中的INSERT
、DELETE
等语句。
数据控制语言(DCL; Data Control Language)
权限控制,如SQL中的GRANT
、REVOKE
等语句。
数据库系统(DBS; Database System)
包括数据库管理系统、数据库管理员、相关的硬件与应用程序和用户等。
数据库管理系统(DBMS; Database Management System)
应用和操作系统间的一层管理软件,是应用与数据库的接口。
数据库管理员(DBA; Database Administrator)
负责三级模式结构的定义和修改,控制数据整体结构。
三级模式
即视图。
- 外部模式(External Schema):又称用户模式或子模式,是从用户和应用的角度来观察的数据库,其设计是通过设计应用程序所必要的数据来实现的;
- 概念模式(Conceptual Schema):又称模式或逻辑模式,是确定数据库理论结构的阶段,在关系模型中,其设计是通过E-R模型把握现实世界,进而规范化表格来实现的;
- 内部模式(Internal Schema):又称存储模式,是从计算机内部看到的数据库,是确定数据库物理构造的阶段,其设计通过设计数据库高速检索方法来实现。
两级映像
即对应规则,指出模式的双方是如何进行转换的。
- 外部—概念模式映像:体现逻辑数据独立性;
- 概念—内部模式映像:体现物理数据独立性。
关系模型
E-R(Entity-Relationship)模型
实体:可被人们识别、客观存在且可用作区别的事物,用矩形表示;
关系:实体间的关系抽象,用菱形表示;
属性:实体或关系所具有的特征,用椭圆表示。
属性的值称为分量,其可取的范围称为域。
完整性规则
- 实体完整性:主键值不可空;
- 参照完整性:外键须有效或空;
- 用户自定义完整性;
实体完整性和参照完整性合称关系完整性规则,是必须满足的。
关系代数
其特点为集合操作,五个基本操作为并集、差集、笛卡尔积、选择和投影,又称完备操作集即
选择(Selection)
投影(Projection)
假定
组合操作 | 语法 | 替换 | 说明 |
---|---|---|---|
交运算 Intersection |
- | ||
条件连接 |
(其中 |
从 挑选第 满足 等值连接即 |
|
自然连接 Nature Join |
须有值域相同的公共属性 经由 每个公共属性只保留一列。 |
||
半连接 Semi Join |
- | ||
除法 Division |
- | 由在 和 |
表格规范化(Normalization)
即对关系模式不断分解,直到达到如下的某一范式(Normal Form)的过程。其中,分解必须遵循规范化原则即保持原有依赖关系和无损连接。
非范式:没有去除重复数据的表格;
关系型数据库不能使用非范式。
第一范式:分割、去重使一栏只有一个项目;
第二范式:通过主键而非其部分的值确定其他列的数值,即消除主键部分函数依赖;
完全函数依赖(Functionally Dependent)
通过某(些)列的值才能确定其他列的数值。
部分函数依赖即通过主键的部分就足以确定其他列的数值。
第三范式:只能通过主键确定其他列的数值,即消除主键传递依赖;
传递依赖(Transitively Dependent)
通过某(些)列的值能间接地确定其他列的数值。
BC(Boyce Codd)范式:消除候选键的部分和传递函数依赖。
结构化查询语言(SQL; Structured Query Language)
SQL语句对大小写不敏感。
定义表
创建新表如下例。
1 | CREATE TABLE Tbl( |
There can be only one auto column and it must be a key.
删除表如下例。
1 | DROP TABLE Tbl; |
定义主键
补充定义主键如下例。
其中,
name
为键的标识符。
1 | ALTER TABLE Tbl ADD [CONSTRAINT name] PRIMARY KEY(Attr1, ...); |
在SQL Server中,主键默认标识符为PK__Tbl
,外键默认标识符为FK__Tbl__Attr
;通过右击菜单的索引/键
查看主键,而关系
可查看外键。
撤销主键定义如下例。
1 | ALTER TABLE Tbl DROP CONSTRAINT name; |
1 | ALTER TABLE Tbl DROP PRIMARY KEY; |
定义外键
补充定义外键如下例。
1 | ALTER TABLE Tbl ADD [CONSTRAINT name] FOREIGN KEY(Attr1, ...) |
其中,更新/删除的规则如下表。
更新/删除规则 | 说明 |
---|---|
CASCADE |
级联,即子表同步更新/删除。 |
SET NULL |
置空,即设置为空值。 |
RESTRICT /NO ACTION |
不操作,若子表有匹配记录,则不允许操作。 |
SET DEFAULT |
设置为默认值。 |
撤销外键定义如下例。
1 | ALTER TABLE Tbl DROP CONSTRAINT name; |
1 | ALTER TABLE Tbl DROP FOREIGN KEY name; |
查询
查询的嵌套称子查询,其分类如下。
- 单行子查询:即子查询返回的记录有且仅有一条时,可使用
=
进行筛选; - 多行子查询:即返回记录不只有一条时,必须用
IN
操作符进行筛选。