数据库复习
CH2 数据库体系结构
2.1 数据库体系结构层次
数据库体系结构可以分成3个层次:
- 外部层次
- 概念层次
- 内部层次
外部层次是指每个用户用不同的高级语言来访问数据库所面对的接口,概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等),而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计需要保证这三个层次之间的独立性:
- 概念层和内部层之间物理数据的独立性
- 外部层和概念层之间逻辑数据的独立性
2.2 DBA和DBMS
DBA(数据库管理员)必须很好的了解企业的数据资源以及企业需求,除此之外DBA还有一下职责:
- 数据库模式定义(数据库逻辑设计)
- 存储结构和访问方法
- 物理组织以及修改方法
- 用户访问控制
- 完整性约束
- 监测数据库性能
- 和用户保持沟通
DBA要完成这么多工作必须借助于DBMS(数据库管理系统),我们可以从两个方面来看待什么是DBMS
DBMS首先是一个软件系统,它能够满足以下数据库需求:
- 数据定义
- 数据修改
- DML(数据操作语言)请求
- 查询优化
- 数据安全性
- 数据完整性
- 数据并发
- 数据恢复
- 性能
其次DBMS还是一个文件系统
2.3 数据库应用架构
数据库应用有两种典型的结构,C/S架构(客户机-服务器架构)、B/S架构(浏览器-服务器架构),现今的应用也是逐渐由C/S架构发展到B/S架构
C/S架构中用户要么通过数据库应用直接和DBMS打交道获取数据库服务,要么通过网络连接到数据服务器,由数据库服务器完成和DBMS的交互
然而在如今Web应用的大力发展下,诞生了新型的多层次B/S架构数据库应用:
- 用户通过Web浏览器和服务器交互
- Web服务器响应用户操作并把用户请求转达给应用服务器
- 应用服务器完成系统的业务逻辑,把用户请求翻译成数据请求送达数据库服务器,并且把数据请求反馈给Web服务器
- 数据库服务器运行DBMS,直接和数据库交互
CH3 关系系统
3.1 关系
我们把现实世界中的实体之间的联系抽象成表(Table)的形式,就叫做关系
(1)表结构
如下一张记录客户信息的表就是我们所说的关系:
Customer:
name:Name | street:Street | city:City |
---|---|---|
Jones | North | Harrison |
Smith | North | Rye |
Lindsay | Park | Pittsfield |
对于关系我们有很多术语:
- 域Domain:Domain是指属性的数据类型以及这些数据类型所匹配的运算操作,数据属性可以是系统提供的,也可以是用户定义的
- 属性/字段Attribute:属性就是表的列数据所代表的统一的现实世界中的含义,Customer表中name、street和city就是该表的属性
- 元组Tuple:Tuple是表中一行数据的集合,它表示一条完整的关系记录,如Customer表中(Jones, North, Harrison)就是一个元组
- 基数Cardinality:表中元组的个数
- 度Degree:表中属性的个数
C.J.Date这本书中定义了两个作用于类型的操作符:
- Selector:允许用户声明或选择这种类型的值
- THE_:允许用户访问这些值的组成
(这里还不是很理解)
(2)关系变量
关系是一张表,表头是断言(或者叫恒真函数),那么表中每个元组就是一个真命题,C.J.Date把表头断言叫做关系,而把关系的实例——这些元组的集合叫做关系变量(RELVARS)
关系变量是变化的,因为表中的数据随时都可能发生更改,有两种关系变量:
- 基本关系变量:元组的集合描述的就是实际的基本关系
- 视图:是基于基本关系的一种抽象元组表示(我一直把视图理解为,我们有很多基础表,但展现出来的不一定是完整的基础表,而是某个业务逻辑需要的子关系[视图],这些子关系可以是基本表的Restrict和Project,也可以是多张基本表的Join)
(3)目录/字典
C.J.Date用术语目录(Catalog)或字典(Dictionary)来描述记录关系模式的表,书上又称它们为描述符信息或元数据(metadata)
通俗理解,目录就是描述关系表名、列名行名、列数行数等信息的表
(4)关系的性质
关系必须满足以下性质:
- 关系中没有重复的元组
- 元组是无序排列的
- 属性也是无序排列的
- 每个元组在对应属性中至多有一个值(多数关系型数据库可以允许为null)
(5)操作
我们把对关系的操作抽象成以下三种(抽象,区别于SQL中具体操作):
- Restrict:提取表中某些行(元组)
- Project:提取表中某些列(属性)
- Join:两张表某列(属性)具有相同值,根据这些属性的值把这两张表合并在一起
关系操作有一下两个特性:
- 所有的操作都是针对表,所有操作的输出也是一张表
- (闭包属性)一个操作的输出(表)可以作为另一个操作的输入
3.2 关系型数据库
关系型数据库就是包含一个或多个关系(表)的数据库,这里的表是指从业务逻辑、业务需求中抽象出来的逻辑结构,而非物理存储结构(我们并不关心物理存储结构,这是DBMS的工作)
关系型数据库就是单纯的多表结构,表之间并没有指针互相引用
关系型数据库有一套规范化设计模式,用于有效的避免数据冗余和信息缺失,将在后面章节中介绍
关系模式定义:有属性 A1,A2,...,An ,那么我们称 R(A1,A2,...,An) 为关系模式,关系模式中一条关系记录/元组用 r(R) 表示