ch1.数据库系统简介
数据库管理系统(DBMS)被期望做到:
1、允许用户用特定语言创建数据库并指定模式
2、允许用户进行查询
3、进行大量数据的存储
4、能够在各种故障中恢复数据
5、能够同时被多名用户使用
早期数据库管理系统
由文件系统演变而来,只能完成部分期望DBMS能够完成的操作
关系数据库系统
背后为复杂的数据结构,使得能够作出较快的响应
用高级语言进行查询
DBMS大小的发展趋势
体积上越来越小
从大型机器上运行,到逐步能够在个人电脑上运行
常使用XML标记文档,大量文档的集合组成数据库(?)
存储容量上越来越大
信息集成
DBMS系统组成
日志和恢复、并发控制是事务管理器的组成部分。前者负责事务的持久性,后者负责事务的孤立性。
缓冲区:(?)
ch2.关系数据模型
数据模型
描述数据或信息的记号,通常由三个部分组成:1、数据结构(结构体);2、对数据的操作;3、对数据的约束
重要的数据模型包括关系数据模型和半结构化数据模型(包含XML)
关系数据模型简介
关系数据模型基于二维表格(例如fig.2.1)
半结构化数据模型简介
由树或图的形式构成,当前的主要表示形式为XML
其他数据模型
目前呈现出面向对象化的趋势,例如以结构体代替基本类型
各模型间的比较
半结构化数据模型相比于关系数据模型更为便捷迅速,但关系数据模型仍然是使用的最多的模型。因为关系数据模型能够对现实中的数据有效进行模型化,并提供了高效的操作集。
关系模型基础
属性
关系的列,例如title, year, length, genre等
模式
关系的名称及其属性,例如Movies(title, year, length, genre)
元组
关系中除属性之外的所有行,例如(Gone With the Wind, 1939, 231, drama)
域
假定与关系的每个属性相关联的是一个域,即元组的每个分量都有一个数据类型,例如integer, string。表示形式形如:Movies(title : string, year : integer, length : integer, genre : string)
关系模型的等价表述
元组顺序对表述无影响,属性次序对表述也没有影响
关系实例
给定的关系中元组的集合,称作关系实例
键(keys)
属于一种约束,由属性集组成,保证在关系实例中,没有两个在此属性集上相等的元组
设置虚拟键会更加安全,例如员工id
在SQL中定义关系模式
SQL是用于描述及操作数据库的主要语言
基本用法
见各大网站
代数查询语言
关系代数
属于另外一门代数,原子操作数是:
1、代表关系的变量
2、代表有限关系的常量
传统关系代数的主要操作
1、并、交、差
2、除去某些行列
3、组合两个关系元组
4、重命名
关系代数的表达式一般被称之为查询
关系上的集合操作
并:R ∪ \cup ∪S
交:R ∩ \cap ∩S
差:R-S
投影
只保留关系中的部分列,例如:图2-13投影到title, year, length
表示形式为: π t i t l e , y e a r , l e n g t h ( M o v i e s ) \pi_{title,\ year,\ length}(Movies) πtitle, year, length(Movies)
投影后,重复元组会被排除
选择
σ C ( R ) \sigma_C(R) σC(R)表示从关系R中按条件C筛选,例如: σ l e n g t h ≥ 100 ( M o v i e s ) \sigma_{length\ge100}(Movies) σlength≥100(Movies)表示从关系Movies中筛选出length大于或等于100的元组
笛卡尔积
表示形式:R × \times ×S
列举出两个关系的所有可能的组合,如图2-14
自然连接
表示形式:R ⋈ \Join ⋈S
自然连接后的关系保留了原关系R和S之间,在相同属性上具有相同值的元组,如图2-16,U与V具有相同属性B和C,最后的结果只保留了关系U与关系V在B和C这两个属性上具有相同值的相应元组
悬浮元组:无法和另一关系的任何元组进行自然拼接的元组
θ \theta θ连接
表示形式:R ⋈ C \Join_C ⋈CS
先得到笛卡尔积,再筛选满足条件C的元组
参考资料:J. Ullmann, et. al., - A First Course in Database Systems (2008, Pearson) - libgen.lc