数据库系统

数据库

什么是数据库?
将信息以某种形式存储在一起。

数据库的重要位置
系统软件之一,为多种应用软件提供基础。

注意数据库(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 一门广受好评的数据库系统课程

维基百科 维基百科,自由的百科全书