数据库 学习笔记
CH01
概念
数据库(DB)的概念
文件系统管理数据存在的局限:
数据库是长期存储在计算机内有组织的、大量的、相关的、可共享的数据集合
数据库管理系统(DBMS)的概念
一个数据库管理系统是管理数据库的一些程序的集合
数据库管理系统的功能
用户角度
数据库定义
定义数据库中表(Table)的名称、标题(内含的属性名称以及对该属性的值的要求)等
- DBMS提供一套数据定义语言(DDL:Data Definition Language)给用户
- 用户使用DDL描述其所要建立表的格式(定义表名、表标题、列名及其结构形式)
- DBMS依照用户的定义,创建数据库以及其中的Table
数据库操纵
向数据库的表(Table)中增加/删除/更新数据以及对数据进行查询、检索、统计等
- DBMS提供一套数据操纵语言(DML:Data Manipulation Language)给用户
- 用户使用DML描述其所要进行的增、删、改、查等操作
- DBMS依照用户的操作描述,实际执行这些操作
数据库控制
控制数据库中数据的使用——哪些用户可以使用,哪些不可以
- DBMS提供一套数据控制语言(DCL:Data Control Language)给用户
- 用户使用DCL描述其对数据库所要实施的控制
- DBMS依照用户的描述,实际进行控制
数据库维护
转储、恢复、重组、性能监测、分析
- DBMS提供一系列程序(实用程序、例行程序)给用户
- 在这些程序中提供了对数据库维护的各种功能
- 用户使用这些程序进行各种数据库维护操作
数据库系统(DBS)的概念
数据库系统是指在计算机系统中引入数据库后的系统(一个数据库系统由数据库、DBMS和应用程序组成)
数据库系统的三层结构
数据库系统的体系结构受 运行数据库底层计算机系统【Centralized、Client-server、Parallel(multi-processor)、Distributed】 的影响
目标:
- 改变存储结构而不影响用户视图
- 物理存储的改变不影响数据库的内部结构
- 概念结构的改变不影响所有用户
整体结构
说明:
外部层(External Level):用户视图
描述与某一个特定的用户相关的数据库的部分
某一用户能够看到与处理的数据
概念层(Conceptual Level):总体视图
描述有什么数据存储在数据库中以及这些数据之间的关系
从全局角度理解、管理的数据,含相应的关联约束
内部层(Internal Level):数据库在计算机上的物理表示
描述数据是如何存储在数据库内的
存储在介质上的数据,含存储路径、存储方式、索引方式等
三层结构举例
三级模式与数据独立性
数据(视图)与模式
模式:对数据库中数据所进行的一种结构性的描述,所观察到数据的结构信息
示例:某时间点的数据库(表)的实际内容
例子:
数据独立性
- 逻辑数据独立性:概念模式(Conceptual Level)的变化不会影响外模式(External Level)
- 物理数据独立性:概念模式(Conceptual Level)不受内模式(Internal Level)的影响——内模式改变不要求概念模式与外模式也发生改变
三级模式与两层映像
三级模式(三级视图)
- External Schema:某用户能够看到与处理的数据的结构描述
- Conceptual Schema:从全局角度理解和管理的数据的结构描述,含相应的关联约束 体现在数据之间的内在本质联系
- Internal Schema:存储在介质上的数据的结构描述,含存储路径、存储方法、索引方式等
两层映像——保证数据独立性
- External Schema/Conceptual Schema:实现逻辑数据独立性,概念模式改变只需改E-C映像
- Conceptual Schema/Internal Schema:实现物理数据独立性,物理模式改变只需修改C-I映像
数据模型
数据模型是描述数据、数据间联系、数据语义以及约束的工具集合
数据模型由三部分组成:
- 数据结构
- 数据操纵
- 完整性约束
主要数据模型
- 实体-联系模型(E-R模型)
- 关系模型
- 面向对象模型
- XML半结构化模型
- 其他模型
- 网络模型
- 层次模型
CH02
关系、关系模式等基本概念
- 元组(行、记录):一行完整的数据,如(A1 B1 C1)
- 关系:属性名+表名+数据
- 关系模式:属性名+表名
- 目、度【degree(arity)】:属性个数
- 基数(Cardinality):元组数目
关系的例子:
Relations are Unordered
属性(Attributes):
-
The set of allowed values for each attribute is called the domain of the attribute
属性的值域(domain)
-
Attribute values are (normally) required to be atomic; that is, indivisible
属性的值是原子的,也就是不可分割的
-
The special value null is a member of every domain
每个值域都会有一个特殊的值:null
-
The null value causes complications in the definition of many operations
null这个值会使得在定义许多操作的时候复杂化
关系数据库
不重名规范化关系的集合
(A collection of normalized relations with distinct relation names)
信息被分成几个部分,每一个关系存储这个信息的一部分
例子
- account : stores information about accounts
- depositor : stores information about which customer owns which account
- customer : stores information about customers
Q:能不能将所有的信息存储在一个简单的关系中?
这样将会造成:信息重复、需要大量空值
数据库 表的性质
- 关系不重名
- 单元格不可再分
- 属性不重名
- 一个属性来自同一个域
- 元组不重复
- 列的顺序无所谓
- (理论上)行的顺序无所谓【实际上会影响元组方法效率】
Keys(码、键)&Integrity
Keys
Super Keys(SK,超码)
能唯一标识一行的一个或多个属性
Candidate Key(CK,候选码)
候选码是一种超码,而它的任意子集不再是超码
Primary Key(PK,主码、主关键字)
一种候选码,数据库设计者选中用来在同一关系中区分不同元组的候选码
Alternate Keys(AK,备选码)
除了主码之外的其他所有候选码
- 一个关系只能有一个主码
- 主码通常选择值不变或者很少变化的属性
- 在选择主码时,首先考虑应用语义,然后考虑比较值的存储需求和代价
- 整数常常比长字符串好
- 单属性主码比复合主码好
Foreign Keys(外码、外键)
一个关系(参照关系)中的属性是另一种关系(被参照关系)的主码,且该属性为参照关系的外码
参照关系中的外键的取值必须与被参照关系中的主键的值一致或者为null
Relation Integrity
关系模型的完整性是对关系的某种约束条件
实体完整性(Entity Integrity)
- 码值唯一
- 基本表主码的诸属性均不能为空值
- 空值:代表现在不知道或者对于这个元组不适用
- Null represents a value for an attribute that is currently unknown or is not applicable for this tuple.
参照完整性(Relation Integrity)
外码取参照码值或者取空值
用户定义的完整性(Enterprise Integrity)
关系模型
关系代数
- select(选择):σ
- project(投影):Π
- union(并):∪
- set difference(集合差):-
- Cartesian product(笛卡尔积):×
- rename(更名):ρ
- 其他运算:集合交、连接、除、赋值
关系代数运算以一个或两个关系作为输入,产生一个新的关系作为运算结果
Select Operation
σp(r):在关系r中选择出所有的满足条件p的元组
例子:
Relation r:
σA=B^D>5(r):
Project Operation
ΠAttributei, Attributej, …, Attributek(r):得到一个含有列出属性的关系(去掉了重复行)
例子:
Relation r:
ΠA, C(r):
中间过程:
去掉重复行之后得到结果:
Union Operation
r ∪ s = { t | t ∈ r or t ∈ s }
要使得合并操作合法,必须满足:
-
r和s必须有相同的arity
r, s must have the same arity
(same number of attributes)
-
属性的值域必须是相容的
The attribute domains must be compatible
(example: 2nd column of r deals with the same type of values as does the 2nd column of s)
例子:
Relation r:
Relation s:
r ∪ s: