数据库原理及应用相关整理
基础
按抽象程度划分的三大世界如下
- 现实世界
; - 信息世界
; - 数据世界
又称计算机世界), 。
三大世界的术语对应如下表
其中
数据项是最小操作单位 , 。
现实世界 | 信息世界 | 数据世界 |
---|---|---|
个体 | 实体 | 记录 |
特征 | 属性 | 数据项 |
全体 | 实体集 | 文件 |
关系 | 概念模型 | 逻辑模型 |
管理技术的三个阶段如下
人工管理
; 文件系统
; 文件系统存在的缺陷如下
。 冗余
; 冗余存在于文件系统
也存在于数据库系统, 。 不一致
; 弱联系
。
数据库系统
。 数据独立性最高
与文件系统的主要区别体现于数据集成化, 。
数据库 (Database)
长期存储于计算机内
在数据库中存储的是数据及数据间的联系
。
数据模型
- 概念模型
面向客观世界: 独立于计算机系统, ; - 逻辑模型
面向数据库: 主要用于, 。
数据模型的基本组成如下
- 数据结构
; - 数据操作
; - 约束条件
。
三大基本数据模型及其优缺点如下表
其中
关系模型是主流的数据模型 , 。
数据模型 | 优点 | 缺点 | 备注 |
---|---|---|---|
层次 | 1. 简单清晰 2. 效率高 3. 良好的完整性支持 |
1. 现实联系是复杂的 2. 对插入删除操作限制较多 3. 查询子女比经由双亲 |
层次序列即树的先序遍历 |
网状 | 1. 更为直接地描述现实世界 2. 性能良好且存取效率高 |
1. 结构复杂 2. DDL 3. 数据独立性差 |
首记录即树根 属记录即树叶 |
关系 | 1. 坚实的数学理论基础 2. 实体联系皆能二维表表示 3. 数据独立性高 |
查询效率低 |
元组即行 元数即模型中属性的个数 |
此外
还有以对象为基本结构的面向对象数据模型 , 。
数据定义语言 (DDL; Data Definition Language)
定义结构CREATE
DROP
数据操控语言 (DML; Data Manipulation Language)
操控记录INSERT
DELETE
数据控制语言 (DCL; Data Control Language)
权限控制GRANT
REVOKE
数据库系统 (DBS; Database System)
包括数据库管理系统
数据库管理系统 (DBMS; Database Management System)
应用和操作系统间的一层管理软件
数据库管理员 (DBA; Database Administrator)
负责三级模式结构的定义和修改
三级模式
即视图
- 外部模式
又称用户模式或子模式: 是从用户和应用的角度来观察的数据库, 其设计是通过设计应用程序所必要的数据来实现的, ; - 概念模式
又称模式或逻辑模式: 是确定数据库理论结构的阶段, 在关系模型中, 其设计是通过, 进而规范化表格来实现的, ; - 内部模式
又称存储模式: 是从计算机内部看到的数据库, 是确定数据库物理构造的阶段, 其设计通过设计数据库高速检索方法来实现, 。
两级映像
即对应规则
- 外部—概念模式映像
体现逻辑数据独立性: ; - 概念—内部模式映像
体现物理数据独立性: 。
关系模型
E-R(Entity-Relationship) 模型
实体
可被人们识别: 客观存在且可用作区别的事物、 用矩形表示, ; 关系
实体间的关系抽象: 用菱形表示, ; 属性
实体或关系所具有的特征: 用椭圆表示, 。 属性的值称为分量
其可取的范围称为域, 。
完整性规则
- 实体完整性
主键值不可空: ; - 参照完整性
外键须有效或空: ; - 用户自定义完整性
;
实体完整性和参照完整性合称关系完整性规则
是必须满足的 , 。
关系代数
其特点为集合操作
选择 (Selection)
投影 (Projection)
假定
组合操作 | 语法 | 替换 | 说明 |
---|---|---|---|
交运算 Intersection |
- | ||
条件连接 |
(其中 |
从 挑选第 满足 等值连接即 |
|
自然连接 Nature Join |
须有值域相同的公共属性 经由 每个公共属性只保留一列 |
||
半连接 Semi Join |
- | ||
除法 Division |
- | 由在 和 |
表格规范化 (Normalization)
即对关系模式不断分解
非范式
没有去除重复数据的表格: ; 关系型数据库不能使用非范式
。 第一范式
分割: 去重使一栏只有一个项目、 ; 第二范式
通过主键而非其部分的值确定其他列的数值: 即消除主键部分函数依赖, ; 完全函数依赖
通过某
。 部分函数依赖即通过主键的部分就足以确定其他列的数值
。 第三范式
只能通过主键确定其他列的数值: 即消除主键传递依赖, ; 传递依赖
通过某
。 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, ...); |
在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
。