参考教材 Database System Concepts (7th Edition) Abraham Silberschatz, Henry F. Korth, S. Sudarshan

USTB的数据库是双语课堂,讲师是中国人,使用教材是英语教材,考试使用英语,感觉有些抽象,感觉不如自行阅读英语教材,于是就有了这篇笔记。

由于使用的是英语教材,这篇文章可能也会出现大量中英文夹杂使用的现象,毕竟纯英文写一篇还不如直接看教材

USTB开设的这门数据库重点是Concept,从教材中就可以看出。总的来说挺重要,好好学吧。

Intro

Concept

DBMS(database-management system) 数据库管理系统,包含相互关联的数据集(a collection of interrelated data) 和访问这些数据的程序(a set of programs to access those data)

Database 通常上文所指的数据集被称为数据库

创建数据库的主要目的是为存储(store)和检索(retrieve)数据库信息提供一种便捷而高效的手段 convenient and efficient.

File-Processing System vs Database

数据库相比于**文件处理系统(File-Processing System)**有许多优点,传统的文件管理系统有以下缺点

  • Data redundancy(冗余) and inconsistency(矛盾)
  • Difficulty in accessing data 难以访问
  • Integrity problems(完整性问题)
  • Atomicity problems(原子操作问题)
  • Concurrent-access anomalies(并发限制)
  • Security Problems(安全问题)

Relational Model

Concepts

Relational Databases 关系型数据库,consists of a collection of tables(表), each of which is assigned a unique name.

Attributes(属性) 表头

tuples(元组)

component(分量) 单元格

Domain(域) 该属性的可取值

Relation schema(关系模式) Attributes+Domain

书写方法为 表名(主键,属性,属性,……)

Relation instance(关系实例) set of tuples

Database Schema(数据库模式) 数据库的逻辑结构

Database Instance(数据库实例) 某时刻数据库中数据快照(snapshot)

Super keys(超码) 可以唯一标识元组的属性集合

Candidate keys(候选码) 超码的最小真子集

Primary key(主键) 数据库设计者选择的候选码

Foreign key(外键) 该属性是别的表的主键,此时该属性称为外键

Relation Algebra

Opreation of relations,输入和输出都是关系

Select

σ选择区间()\sigma _\text{选择区间}(表名)

eg

σdept_name(instructor)\sigma_{dept\_name}(\text{instructor})

顾名思义,选出包含所有符合条件的元组的表

选择区间可以使用以下算符连接

¬\land \lor \lnot

Project

投影

Π属性(表名)\Pi_\text{属性}(\text{表名})

选出包含相应属性的列

select和project可以结合使用选出行列

Cartesian-Production

笛卡尔积

r1×r2r_1\times r_2

两表中元组结合,所有可能结果组成新表

Theta-Join

rθs=σθ(r×s)r \bowtie_\theta s=\sigma_\theta(r\times s)

Nature Join

rsr \bowtie s

r和s公共属性上相等的元组组合

Rename

ρa/b(R)\rho_{a/b}(R)

Union

并集 ∪

Set-Intersection

交集 ∩

Set Difference

差集

rsr - s

相当于r中去除r和s的交集

Division

r÷seg. r(A,B)  s(B)r\div s \\ eg.\ r(A,B)\ \ s(B)

  1. 求象极 r中A1={B1,B2}, A2={B1,B2,B3}

  2. 找s中公有属性全部的值集合K s中K={B1,B3}

  3. 找象极中包含K所有值的结果 A2

  4. 得到表

    A

    A2

SQL

SQL全称Structured Query Language,翻译为结构化的查询语言,但其实不仅限于查询,SQL中有两个比较重要的部分,Data-definition language (DDL)Data-manipulation language (DML)

DDL

首先介绍SQL中数据定义部分,DDL可以定义的内容十分广泛,包括

  • The schema for each relation.
  • The types of values associated with each attribute.
  • The integrity constraints.
  • The set of indices to be maintained for each relation.
  • The security and authorization information for each relation.
  • The physical storage structure of each relation on disk.

Basic Types

首先介绍几种常见的数据类型

char

定长字符串,表示为char(n),其中n为字符串长度,如果给定的字符串不足n个字符将用空格space补齐。

varchar

常用

不定长字符串,表示为varchar(n),其中n为字符串最大长度

注意 当char与varchar比较时,可能会给varchar添加几个空格使之与char长度匹配

int

整形,表示为int或其全称integer

numeric

自定义精度定点小数(原文是fixed-point number with user-specified precision,不知道翻的对不对),表示为numeric(p,d),p表示总位数,d表示p中小数位数

eg. numeric(3,1): 44.6

float

浮点数,表示为float(n),n表示精度

Basic Schema Definition

使用create table命令创建SQL关系

1
2
3
4
5
create table department
(dept_name varchar(10)
building varchar(15)
budget numeric(12,2)
primary key (dept name));

上述命令创建了一个名为department的表,其中dept_name、building等都是属性(Attribute),后面的数据类型是这些属性的域(Domain),最后一行中primary key是约束(integrity-constraint),主要有以下几种

Primary key

主键,要求非空(nonnull)且唯一(unique)

一般写为

1
primary key (KEY_NAME)

Foreign key

外键参考,一般写为

1
foreign key(KEY_NAME_1, KEY_NAME_2,...,KEY_NAME_N) references TABLE_NAME

这种约束要求这些属性的元组必须是表TABLE_NAME中的主键