跳转至

第 1 章:啥是数据库

数据库 Database:长期存储在计算机内、有组织的、可共享的数据集合。(一种说法)

数据库系统 Database Management System,DBMS:数据库和使用它的工具。

  • 在数据访问上很有效率,并且扩展性强。
  • 开发方便。
  • 数据独立性(物理上和逻辑上的)。
  • 保证数据完整且安全。
  • 可以并发访问并保持一致,并且很耐草。

数据的抽象

  • 物理层:记录是怎么储存的。(当然是以文件形式储存了。)
  • 逻辑层:描述数据库中储存信息的方式和关系。
  • 视图层:给用户准备的,隐藏不必要展示的细节与信息的层。

模式和实例 Schemas and Instances

和编程那边的概念相似,模式描述了数据库是怎么样的,而实例是一个根据模式创建出来的具体的东西。物理层、逻辑层和视图层都有相应的模式(你可以理解成子模式)。

物理独立与逻辑独立

模式的物理独立性在于其他模式改动的时候自己不用跟着改,比如你换一种文件系统的时候一般不会导致你的数据库要重写。

而逻辑独立性在于数据库不会随着数据的逻辑结构变化而变化。它相比物理独立性来说更难实现,如果你自己写一个数据库就能发现你的数据库是严重依赖于数据的逻辑结构的。

数据的模型

数据模型一般需要包含这些东西:

  • 数据的结构(怎么组织起来的);
  • 数据之间的关系;
  • 数据的语义;
  • 以及针对数据的限制。

实体-关系模型 Entity Relationship Model,E-R Model

实体有其属性;实体和实体之间会有关系存在。比如:

人员列表:

id name gender species
1 妙艾拉 魔幻假面喵

妙艾拉是一个“实体”,她有序号 1,种族“魔幻假面喵”等“属性”。

与此同时,帕底亚图鉴:

species hp atk ...
魔幻假面喵 76 110 ...

“魔幻假面喵”作为图鉴的一个实体,有 HP、物攻等“属性”。

两张表里面的两条元组通过“魔幻假面喵”这个键关联起来。

作为一个非常符合人类思维的模型,E-R 模型被大量应用于数据库的设计中。

数据库语言 Database Language

  • 数据定义语言 Data Definition Language,DDL
  • 数据处理语言 Data Manipulation Language,DML
  • 数据控制语言 Data Control Language,DCL

而我们常说的 SQL 就是 DDL、DML 和 DCL 的结合体。

数据定义语言

这种语言指定了一种关系模式的方案,包括存储结构,访问方法和一致性约束等元素。比如:

1
2
3
4
5
create tabe teammate(
  id integer,
  name char(10),
  primary key id
);

数据字典 Data dictionary

数据字典包括对数据的数据项、数据结构、数据流、数据存储、处理逻辑等的定义和描述。

数据处理语言

这种语言用来从数据库中获取信息,以及进行增删改查等操作……换句话说就是“查询语句”。其中,如果用户使用“程序性”(Procedural)的 DML,他们需要指定需要的数据和获取方法(比如使用 C、Java 等语言描述);反之,使用“非程序性”的 DML 就不用这么做(比如 SQL 语言)。

事务管理 Transaction Management

数据库需要应付很多并发的事情,而这又是个大麻烦。

事务有四种特性:原子性(不可再分割)、一致性、隔离性(并发之间互不影响)和持久性(提交的修改不被故障影响)。

DBMS 的结构

储存管理器 Storage manager

和文件系统中底层数据进行交互。

  • Transaction manager
  • Authorization and integrity manager
  • File manager
  • Buffer manager

查询处理器 Query processor

它需要翻译 DDL 和编译 DML,根据情况选择适合的方式来获得指定的资料。