1、几个核心概念
① 数据(Data):数据库中存储的基本对象。
② 数据库(Database):长期存储在计算机内、有组织的、可共享的大量数据集合,提供一种可以方便、高效地存取数据库信息的途径。数据库中的数据按一定的数据模型组织描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性。并可为各种用户共享。
③ 数据库管理系统(DataBase-Management System,DBMS):由一个互相关联的数据集合和一组用以访问这些数据的软件组成,位于用户和操作系统之间,和操作系统一样是计算机的基础软件。
主要功能:1、数据定义功能
2、数据组织、存储和管理
3、数据操纵功能
4、数据库的事务管理和运行管理
5、数据库的建立和维护功能
6、其他功能(通信功能、数据转换功能、互访和互操作功能等)
④ 数据库系统:是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。
2、数据库的发展阶段
(1)人工管理阶段:数据不保存、不共享,不具有独立性。
(2)文件系统阶段:可保存,但共享性差、冗余度大、独立性(应用程序和数据库中的数据独立)差。
(3)数据库管理系统:数据库系统的出现使信息系统从以加工数据的程序为中心,转向围绕共享的数据库为中心的新阶段,实现整体数据的结构化。
3、数据库系统的目标
在数据库管理系统(DBMS)出现之前,一般使用文件处理系统来存储信息,其主要弊端有:
数据的冗余和不一致(data redundancy and inconsistency):不同文件可能有不同的结构,不同程序可能采用不同的程序设计语言写成,相同的信息可能在几个地方(文件)重复存储,这种冗余可能导致数据不一致性。
数据访问困难(difficulty in accessing data):传统的文件处理环境不支持以一种方便而高效地方式去获取所需数据。
数据孤立(data isolation):数据分散在不同文件中,这些文件又可能具有不同的格式,因此编写新的应用程序来检索释放数据是很困难的。
完整性问题(integrity problem):数据库中所存储数据的值必须满足某些特定的一致性约束。
原子性问题(atomicity problem):A 账户给 B 账户转钱,A 转出和 B 转入这两个操作必须是原子的。
并发访问异常(concurrent-access anomaly):同个账户做多笔交易,如果读写的时序交叉,有可能出现多笔交易做完后账户的余额不对的问题。
4、数据视图
4.1 数据抽象
系统开发人员通过如下几个层次上的抽象来对用户屏蔽复杂性,以简化用户与系统的交互:
- 物理层(physical level):描述数据实际上是怎么存储的,含数据结构。
- 逻辑层(logical level):描述数据库中存储什么数据及这些数据间存在什么关系。
- 视图层(view level):最高层次的抽象,描述数据库的某个部分。
4.2 实例和模式
- 实例(instance):特定时刻存储在数据库中的信息的集合。
-
模式(schema):数据库的总体设计。
- 物理模式(physical schema):在物理层描述数据库的设计。
- 逻辑模式(logical schema):在逻辑层描述数据库的设计。
- 物理数据独立性(physical data independence):修改物理层不影响逻辑层。
- 逻辑数据独立性(logical data independence):修改逻辑层不影响应用层。
4.3 数据模型
数据模型(data model):是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合,提供了一种描述物理层、逻辑层以及视图层数据库设计的方式,其分类有:
- 层次模型:有且只有一个结点没有双亲结点,这个结点称为根结点;根以外的其他结点有且只有一个双亲结点。
- 网状模型:1、允许一个以上的结点无双亲 2、一个结点可以有多个双亲
- 关系模型(relational model):用表的集合来表示数据和数据间的联系。
实体-联系模型(entity-relationship model):基于现实世界由一组被称作实体的基本对象以及这些对象间的联系构成。
基于对象的数据模型(object-based data model):可以看成 E-R 模型增加了封装、方法(函数)和对象标识等概念后的扩展。
半结构化数据模型(semistructured data model):允许那些相同类型的数据项含有不同的属性集的数据定义,可扩展标记语言(eXtensible Markup Language,XML)被广泛地用来表示半结构化数据。
两类数据模型:概念模型、逻辑模型和物理模型(人们首先将显示世界抽象为信息世界,然后将信息世界转换为机器世界)
(1)概念模型
也称信息模型,它是按用于观点来对数据和信息建模,主要用于数据库设计
基本概念:
- 实体:客观存在并可相互区别的事物,人。
- 属性:实体所具有的某一特性。(如人的鼻子嘴巴)
- 码:唯一标识实体的属性。(如学号、身份证号)
- 实体型:用实体名及其属性集合来抽象和刻画同类实体。(含有鼻子和嘴巴的人)
- 实体集:同一类型实体的集合。(学校)
- 联系:实体之间的联系通常是指不同实体集之间的联系。(实体之间的联系有一对一、一对多和多对多等多种联系)
概念模型的一种表示方法:实体-联系方法,用 E-R 图来描述现实世界的概念模型,E-R 方法也称为 E-R 模型。
(2)逻辑模型
按计算机系统的观点对数据建模,主要用在数据库管理系统的实现。
包括:层次模型、网状模型、关系模型。
(3)物理模型
对数据最底层的抽象,描述数据在系统内部的表示方法和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
联系:
实体之间的联系通常是指不同实体集之间的联系,实体之间的联系有一对一、一对多和多对多等多种联系。
实体内部的联系通常是指实体各属性之间的联系。
5、数据库语言
1、数据操纵语言(Data-Manipulation Language,DML):访问或操纵数据。
分类:
(1)过程化 DML(procedural DML):要求用户指定需要什么数据以及如何获得这些数据。
(2)声明式 DML(declarative DML):只要求用户指定需要什么数据,而不指明如何获得这些数据。
2、数据定义语言(Data-Definition Language,DDL):定义数据库的模式。
一致性约束:
- 域约束(domain constraint):每个属性都必须对应于一个所有可能的取值构成的域(如整数型、字符型、日期/时间型)。
- 参照完整性(referential integrity):一个关系中给定属性集上的取值也在另一关系的某一属性集的取值中出现。
- 断言(assertion):一个断言就是数据库需要时刻满足的某一条件,域约束和参照完整性约束是断言的特殊形式。
- 授权(authorization):对不同的用户在数据库中的不同数据值上允许不同的访问类型。
6、数据库设计
设计的几个阶段:
-
需求分析阶段
调研用户需求,和领域专家、数据库用户广泛地交流,制定出用户需求的规格文档。
-
概念设计阶段(conceptual-design phrase)
决定数据库中应该包含哪些属性,以及如何将这些属性组织到多个表中,建立抽象的概念数据模型。
-
逻辑设计阶段(logical-design phrase)
主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。
-
物理设计阶段(physical-design phrase)
根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。
-
数据库实施阶段
在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。
-
数据库运行和维护阶段
在数据库系统正式投入运行的过程中,必须不断地对其进行调整与修改。
7、数据存储和查询
(1)存储管理器
存储管理器(Storage Management)是数据库系统中负责在数据库中存储的底层数据与应用程序以及向系统提交的查询之间提供接口的部件,包括:
权限及完整性管理器(authorization and integrity manager):检测是否满足完整性约束,并检查访问数据用户权限。
-
事务管理器(transaction manager):故障也能保证一致。
- 并发控制管理器(concurrency-control manager)
- 恢复管理器(recovery manager):满足原子性和持久性
文件管理器(file maneger):管理磁盘存储空间分配,管理用于表示磁盘上所存储信息的数据结构。
缓冲区管理器(buffer manager):负责将数据从磁盘取到内存中,并决定哪些数据应被缓冲存储在内存中。
数据结构:
- 数据文件(data file):存储数据库自身。
- 数据字典(data dictionary):存储关于数据库结构的元数据,尤其是数据库模式。
-
索引(index):提供对数据项的快速访问。
(2)查询处理器
DDL 解释器(DDL interpreter):解释 DDL 语句并将这些定义记录在数据字典中。
DML 编译器(DML compiler):将查询语言中的 DML 语句翻译为一个执行方案,包括一系列查询执行引擎能理解的低级指令。
-
查询执行引擎(query evaluation engine):执行由 DML 编译器产生的低级指令。
8、事务
事务的四大特性 ACID:
原子性(Atomicity) 多个操作要么都执行要么都不执行,如转账。
一致性(Consistency) 数据要保持一致性,如 A 转出账户金额减小,B 转入账户金额增加,转账前后 A、B 的账户金额总额不变。
隔离性(Isolation) 不同的事务互相隔离不影响。
持久性(Durability) 当资金转账成功后,即使发生系统故障,A 和 B 的余额都应该保持转账成功结束后的新值。
事务管理器包括:
- 恢复管理器(recovery manager):保证原子性和持久性,当多个操作中部分失败时,必须将数据库状态回滚到执行事务之前,即进行故障恢复(failure recovery)。
- 并发控制管理器(concurrency-control manager):控制并发事务间的相互影响,即隔离性。
9、数据库结构体系
数据库系统结构:描述了模式数据库中全体数据的逻辑结构和特征,它仅仅涉及型的描述,不涉及具体的值,其一个具体指称为模式的一个实例。
模式是相对稳定的,实例是相对变动的。
(1)三级模式结构:外模式+模式+内模式。
- 外模式:也称子模式或用户模式,它是数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与应用有关的数据的路基表示。
- 模式:也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
- 内模式:也称存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
更透彻的关于对三个模式的解析(来自知乎:https://www.zhihu.com/question/38737183):
(2)二级映像
外模式/模式映像:当模式改变时,由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变,应用程序不必修改,保证了数据与程序的逻辑独立性。
模式/内模式映像:当数据库的存储结构改变时,有数据库管理员对模式/内模式作相应改变,可以使模式保持不变,从而应用程序也不用改变,保证了数据与程序的物理独立性。
数据库系统各个部分以及它们之间的连续如下图所示:
数据库应用通常可分为两或三个部分。在一个两层体系结构中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能。像 ODBC 和 JDBC 这样的应用程序接口标准被用于进行客户端和服务器的交互。
在一个三层体系结构中,客户机只作为一个前端并且不包含任何直接的数据库调用。客户端常常通过一个表单界面与应用服务器进行通信。而应用服务器与数据库系统通信以访问数据。应用程序的业务逻辑,也就是说在何种条件下做出何种反应,被嵌入到应用服务器中,而不是分布在多个客户机上。三层体系的应用更适合大型应用和互联网上的应用。