数据库原理及应用相关整理

基础

按抽象程度划分的三大世界如下。

  1. 现实世界;
  2. 信息世界(第一层抽象);
  3. 数据世界(第二层抽象,又称计算机世界)。

三大世界的术语对应如下表。

其中,数据项是最小操作单位。

现实世界 信息世界 数据世界
个体 实体 记录
特征 属性 数据项
全体 实体集 文件
关系 概念模型 逻辑模型

管理技术的三个阶段如下。

  1. 人工管理;

  2. 文件系统;

    文件系统存在的缺陷如下。

    • 冗余(Redundancy);

      冗余存在于文件系统,也存在于数据库系统。

    • 不一致(Inconsistency);

    • 弱联系(Poor Relationship)。

  3. 数据库系统。

    数据独立性最高,与文件系统的主要区别体现于数据集成化

数据库(Database)

长期存储于计算机内,有组织且统一管理的相关数据的集合。

在数据库中存储的是数据及数据间的联系

数据模型(一般指逻辑模型)可分为如下两类。

  • 概念模型:面向客观世界,独立于计算机系统;
  • 逻辑模型:面向数据库,主要用于DBMS的实现。

数据模型的基本组成如下。

  • 数据结构;
  • 数据操作;
  • 约束条件。

三大基本数据模型及其优缺点如下表。

其中,关系模型是主流的数据模型。

数据模型 优点 缺点 备注
层次 1. 简单清晰;
2. 效率高;
3. 良好的完整性支持。
1. 现实联系是复杂的;
2. 对插入删除操作限制较多;
3. 查询子女比经由双亲。
层次序列即树的先序遍历。
网状 1. 更为直接地描述现实世界;
2. 性能良好且存取效率高。
1. 结构复杂;
2. DDL和DML复杂;
3. 数据独立性差。
首记录即树根;
属记录即树叶。
关系 1. 坚实的数学理论基础;
2. 实体联系皆能二维表表示;
3. 数据独立性高。
查询效率低。 元组即行;属性即列;
元数即模型中属性的个数。

此外,还有以对象为基本结构的面向对象数据模型。

数据定义语言(DDL; Data Definition Language)

定义结构,如SQL中的CREATEDROP等语句。

数据操控语言(DML; Data Manipulation Language)

操控记录,如SQL中的INSERTDELETE等语句。

数据控制语言(DCL; Data Control Language)

权限控制,如SQL中的GRANTREVOKE等语句。

数据库系统(DBS; Database System)

包括数据库管理系统数据库管理员、相关的硬件与应用程序和用户等。

数据库管理系统(DBMS; Database Management System)

应用和操作系统间的一层管理软件,是应用与数据库的接口。

数据库管理员(DBA; Database Administrator)

负责三级模式结构的定义和修改,控制数据整体结构。

三级模式

即视图。

  • 外部模式(External Schema):又称用户模式或子模式,是从用户和应用的角度来观察的数据库,其设计是通过设计应用程序所必要的数据来实现的;
  • 概念模式(Conceptual Schema):又称模式或逻辑模式,是确定数据库理论结构的阶段,在关系模型中,其设计是通过E-R模型把握现实世界,进而规范化表格来实现的;
  • 内部模式(Internal Schema):又称存储模式,是从计算机内部看到的数据库,是确定数据库物理构造的阶段,其设计通过设计数据库高速检索方法来实现。

两级映像

即对应规则,指出模式的双方是如何进行转换的。

  • 外部—概念模式映像:体现逻辑数据独立性;
  • 概念—内部模式映像:体现物理数据独立性。

关系模型

E-R(Entity-Relationship)模型

  • 实体:可被人们识别、客观存在且可用作区别的事物,用矩形表示;

  • 关系:实体间的关系抽象,用菱形表示;

  • 属性:实体或关系所具有的特征,用椭圆表示。

    属性的值称为分量,其可取的范围称为

完整性规则

  • 实体完整性:主键值不可空;
  • 参照完整性:外键须有效或空;
  • 用户自定义完整性;

实体完整性和参照完整性合称关系完整性规则,是必须满足的。

关系代数

其特点为集合操作,五个基本操作为并集、差集、笛卡尔积、选择和投影,又称完备操作集即

选择(Selection)

,调取表中某行的运算。

投影(Projection)

,调取表中某列的运算,常用于去重。

假定有三个属性,下例检索至少含两个属性2的元组的属性1。 由基本操作衍生的组合操作如下表。

组合操作 语法 替换 说明
交运算
Intersection

-
条件连接
-Join

(其中的元数)
中,
挑选第分量和第分量
满足运算的元组;
等值连接的连接。
自然连接
Nature Join
须有值域相同的公共属性
经由操作使得连接后
每个公共属性只保留一列。
半连接
Semi Join
-
除法
Division
- 由在中不出现于的属性
中所有元组在中对应相同的元组构成。

表格规范化(Normalization)

即对关系模式不断分解,直到达到如下的某一范式(Normal Form)的过程。其中,分解必须遵循规范化原则即保持原有依赖关系和无损连接。

  • 非范式:没有去除重复数据的表格;

    关系型数据库不能使用非范式。

  • 第一范式:分割、去重使一栏只有一个项目;

  • 第二范式:通过主键而非其部分的值确定其他列的数值,即消除主键部分函数依赖

    完全函数依赖(Functionally Dependent)

    通过某(些)列的值才能确定其他列的数值。

    部分函数依赖即通过主键的部分就足以确定其他列的数值。

  • 第三范式:只能通过主键确定其他列的数值,即消除主键传递依赖

    传递依赖(Transitively Dependent)

    通过某(些)列的值能间接地确定其他列的数值。

  • BC(Boyce Codd)范式:消除候选键的部分和传递函数依赖。

结构化查询语言(SQL; Structured Query Language)

SQL语句对大小写不敏感。

定义表

创建新表如下例。

1
2
3
4
5
CREATE TABLE Tbl(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY(id)
);

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
2
3
ALTER TABLE Tbl ADD [CONSTRAINT name] FOREIGN KEY(Attr1, ...)
REFERENCES RefTbl(Attr1, ...)
[ON DELETE Rule] [ON UPDATE Rule];

其中,更新/删除的规则如下表。

更新/删除规则 说明
CASCADE 级联,即子表同步更新/删除。
SET NULL 置空,即设置为空值。
RESTRICT/NO ACTION 不操作,若子表有匹配记录,则不允许操作。
SET DEFAULT 设置为默认值。

撤销外键定义如下例。

1
ALTER TABLE Tbl DROP CONSTRAINT name;
1
ALTER TABLE Tbl DROP FOREIGN KEY name;

查询

查询的嵌套称子查询,其分类如下。

  • 单行子查询:即子查询返回的记录有且仅有一条时,可使用=进行筛选;
  • 多行子查询:即返回记录不只有一条时,必须用IN操作符进行筛选。