数据库系统
数据库
什么是数据库?
将信息以某种形式存储在一起。
数据库的重要位置
系统软件之一,为多种应用软件提供基础。
注意数据库(Database)与数据库管理系统(Database management system,DBMS)的区别。
传统数据整理
传统数据整理的方式:一种方式为 CSV 的表格式存储。
缺点:安全性,效率性,使用时的复杂度等。
如无法保证在数字栏插入的一定是数字。检索需要遍历,出现问题容易直接崩溃等。
早期的DBMS
DBMS:软件层面上对数据模型进行定义,提供了增删改查等功能。
早期的数据模型:逻辑与物理紧密结合,必须对特定的数据库场景安排对应的处理应用。
根本原因为物理存储上直接采用应用对数据格式,位置等进行规定,因此切换场景等都需要重新进行设计。
关系模型
基于关系定义了一种数据模型的抽象。
- 利用一种简单的数据结构(关系)进行数据库存储
- 用户操作基于高级语言,DBMS 负责具体执行策略
- 物理存储由 DBMS 负责实现。
关系模型是将无序的各种数据通过关系串联起来,而对这些数据的操作和物理存储的实现都交给了 DBMS,因此使用者可以相对透明的完成对数据的处理。
关系模型也定义了三个概念:
- 数据结构
- 数据操作
- 数据约束
关系模型利用了数学上的关系定义
主键与外键
主键:每个关系中唯一的键,作为该关系的关键字。(如省略,一般会自动生成)
外键:提供关系与关系间的纽带。
DML
Data Manipulation Languages,数据操作语言,用来操作数据库表中的记录。
中文可以理解成增删改查四种操作。
常见的两种分类:
- Procedural: 指定了做什么,和如何做
- Non-Procedural(Declaratice): 仅仅指定了做什么
关系代数
关系代数是对关系模型中各种运算操作的集合(前面说了关系模型其实是一种数学的关系定义)。
注意和数学上的关系运算并不完全相同。
“选择”、“投影”、笛卡尔积(也叫做“叉积”或“交叉连接”)、并集、差集、“重命名”、“自然连接”。
利用关系代数我们可以解释两种 DML 的不同之处:
- Procedural:σb id=102(R ▷◁ S),既解释了做什么,也解释了如何做
- Non-Procedural:(retrieve the joined tuples from R and S where bid equals 102,只说明了做什么,没有说明如何做,指定关系代数顺序)
第二种交给了 DBMS 来完成。
SQL
对关系模型的一种语言实现,现阶段使用最广泛的一种。
Non-Procedural
Reference
cmu15-445 一门广受好评的数据库系统课程
维基百科 维基百科,自由的百科全书