数据库语言
数据库系统提供了数据定义语言(DDL)来定义数据库模式,数据操纵语言来表达数据库的查询和更新
数据库操纵语言(DML)
数据库操纵语言使得用户可以访问或操纵那些按照某些适当的数据模型组织的数据,有以下类型
1、对存储在数据库中的信息进行检索 Query
2、向数据库中插入新的信息 insert
3、从数据库中删除信息 delete
4、修改数据库中存储的信息 update
通常有两类基本的数据操纵语言:
过程化DML:要求用户指定需要什么数据以及如何获得这些数据
声明式DML(也称为非过程化DML)只需要用户指定需要什么数据,而不需要指明如何获得这些数据
显而易见,声明式DML比过程化DML更加实用
数据定义语言(DDL)
数据库模式是通过一系列定义来说明,这些定义由一种被称作数据定义语言DDL来表达的,DDL又被称为数据存储和定义语言,这些语句定义了数据库模式的实现细节,但这些细节对用户来说一般是不可见的
数据库系统需要实现可以以最小代价测试的完整性约束
1 域约束:每个属性都必须对应于一个所有可能的取值构成的域,域约束是完整性约束的最基本形式
2 参照性约束 一个关系中给定属性集上的取值也在另一个关系的某一个属性集的取值中出现
3 断言 一个断言就是数据库需要时刻满足的某一条件,域约束和参照完整性约束是断言的特殊形式
4 授权 区分对于不同用户在数据库中的不同数据值上允许不同的访问类型,最常见的授权:读权限 插入权限 更新权限
DDL以一些指令(语言)作为输入,生成一些输出,DDL的输出放在数据字典中,数据字典包含了元数据,元数据是关于数据的数据。
关系型数据库
关系型数据库是基于关系模型的,关系型数据库也包含DML与DDL
关系模型是基于记录的模型的一个实例,基于记录的模型,之所以有此称谓,是因为数据库的结构是几种固定格式的记录,每个表包含一种特定类型的记录,每种记录类型定义了固定数目的字段和属性,表的列对应记录的类型的属性
数据操纵语言
SQL查询语言是非过程化的
数据定义语言
SQL提供了一个丰富的DDL语言,通过它我们可以定义表,完整性约束,断言等等
来自应用程序的数据库访问
为了访问数据库,DML语句需要由宿主语言来执行,有两种途径可以实现这一点
一种是通过提供应用程序接口(过程集),其可以将DML和DDL语句发送给数据库,再返回结果
例子PC---ODBC Java---JDBC
另一种是扩展宿主语言的语法,通过一个特殊字符作为DML调用的开始,并且通过预处理器,成为DML预编译器,来将DML语句转变为宿主语言中的过程调用。
数据库设计
由于数据库设计的主要内容设计数据库模式的设计,所以我们来探讨数据库的设计过程
设计过程
1 数据库设计者和领域专家,用户进行广泛交流,制定出用户需求的规格文档
2 选择数据模型,运用该选定的数据模型的概念,将用户需求转换为一个数据库的概念模式,设计者需要再审查这些元素,以确保所有的数据需求都满足并且相互之间没有冲突,可以选择去掉一些冗余的特性
这一阶段的重点是描述数据以及它们之间的关系,而不是指定物理的存储细节
3 进行模型的思考,概念设计阶段涉及决定数据库中应该包含哪些属性,以及如何将这些属性组织到多个表中(E-R模型,规范化)。
4 进行功能需求的复审,以确保其满足功能需求
5 逻辑设计阶段,设计者需要将高层的概念映射到要使用的数据库系统的实现数据模型上,还需使用物理设计阶段,以决定数据库的物理特性,这些特性包括文件组织的形式,以及内部的存储结构。
实体-联系模型
使用一组被称为实体的基本对象以及这些对象间的联系
数据库中实体通过属性集合来描述,联系是通过几个实体之间的关联,同一类型的所有实体的集合称作实体集,同一类型的所有联系集合被称作联系集
在E-R模型中可以使用统一建模语言来设计 UML,UML也可以进行映射基数(一对多,一对一,多对多)
规范化
规范化的目标是生成一个关系模式的集合,使我们存储信息时没有不必要的冗余,可以设计一种符合适当的范式的模式,最常用的方法是使用函数依赖
注明:空值不好处理,因此尽量不要使用
数据存储和查询
数据库的功能部件大致分为存储管理器和查询处理部件
存储管理器
存储管理器是数据库系统中负责在数据库中存储的低层数据与应用程序以及向系统提交的查询之间提供接口的组件,存储管理器负责与文件管理器进行交互。存储管理器会将
各种DML语句翻译为底层文件系统命令,因此存储管理器负责数据库中的数据的存储、检索和更新
存储管理部件包括
1 权限及完整性管理器:检测是否满足完整性约束
2 事务管理器:进行事务管理
3 文件管理器:管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构
4 缓冲区管理器:负责将数据从磁盘上取到内存中,并决定哪些数据应该被缓存到内存中
5 数据文件:存储数据库自身
6 数据字典:存储关于数据库结构的元数据,尤其是数据库模式
7 索引:数据库索引提供了指向和包含特定值的数据的指针
查询处理器
包括
DDL解释器:解释DDL语句并将这些定义记录保存在数据字典中
DML编译器:对DML语句进行翻译,使其成为执行引擎能理解的低级命令,一个查询通过可被翻译成多种等价的具有相同结果的执行方案的一种,DML编译器还自带查询优化
可以从几种选择中选取代价最小的一种
查询执行引擎:执行由DML编译器产生的低级执行
事务
三种特性
原子性、一致性、持久性
事务是数据库应用中完成单一逻辑功能的操作集合,每一个事务是一个既具原子性,又具一致性的单元
原子性和持久性的保证是数据库系统自身的职责,确切的说是恢复管理器的职责
如果事务发生异常,则需要进行回滚。
通过并发控制管理器:控制并发事务间的相互影响
事务管理器:包括并发事务管理器和恢复管理器
数据库体系结构
集中式、客户/服务器模式/并行计算机体系结构/分布式数据库
分布式数据库的体系结构
数据库应用一般可分为两个或者三个部分:
两层体系结构:应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库,像ODBC和JDBC这样的应用程序接口标准被用户进行客户端和服务器的交互
三层体系结构:客户机只作为一个前端并且不包含任何直接的数据库调用,客户端通过一个表单界面与应用服务器进行通信,应用服务器与数据库通信来进行访问数据,也就是应用程序的业务逻辑被嵌入到应用服务器中,
三层体系结构适合大型应用和互联网方面
特种数据库
基于对象的数据模型
半结构化数据模型
DBA的作用
模式定义
存储及存取方法定义
模式及物理组织的修改
数据访问权限
日常维护