数据库复习
CH2 数据库体系结构
2.1 数据库体系结构层次
数据库体系结构能够分成3个层次:
- 外部层次
- 概念层次
- 内部层次
外部层次是指每一个用户用不同的高级语言来訪问数据库所面对的接口。概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等)。而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计须要保证这三个层次之间的独立性:
- 概念层和内部层之间物理数据的独立性
- 外部层和概念层之间逻辑数据的独立性
2.2 DBA和DBMS
DBA(数据库管理员)必须非常好的了解企业的数据资源以及企业需求。除此之外DBA另一下职责:
- 数据库模式定义(数据库逻辑设计)
- 存储结构和訪问方法
- 物理组织以及改动方法
- 用户訪问控制
- 完整性约束
- 监測数据库性能
- 和用户保持沟通
DBA要完毕这么多工作必须借助于DBMS(数据库管理系统),我们能够从两个方面来看待什么是DBMS
DBMS首先是一个软件系统,它能够满足下面数据库需求:
- 数据定义
- 数据改动
- DML(数据操作语言)请求
- 查询优化
- 数据安全性
- 数据完整性
- 数据并发
- 数据恢复
- 性能
其次DBMS还是一个文件系统
2.3 数据库应用架构
数据库应用有两种典型的结构,C/S架构(客户机-server架构)、B/S架构(浏览器-server架构),现今的应用也是逐渐由C/S架构发展到B/S架构
C/S架构中用户要么通过数据库应用直接和DBMS打交道获取数据库服务。要么通过网络连接到数据server。由数据库server完毕和DBMS的交互
然而在现在Web应用的大力发展下,诞生了新型的多层次B/S架构数据库应用:
- 用户通过Web浏览器和server交互
- Webserver响应用户操作并把用户请求转达给应用server
- 应用server完毕系统的业务逻辑,把用户请求翻译成数据请求送达数据库server,而且把数据请求反馈给Webserver
- 数据库server执行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的工作)
关系型数据库就是单纯的多表结构。表之间并没有指针互相引用
关系型数据库有一套规范化设计模式。用于有效的避免数据冗余和信息缺失,将在后面章节中介绍
关系模式定义:有属性