数据库是长期存储在计算机内有组织可共享的数据集合,具有较小的冗余度,较高的数据独立性和易扩展性,并为多个用户共享。
数据管理技术的发展阶段:
人工管理阶段
特点:数据不能长期保存,数据不具有独立性,数据不共享,应用程序管理数据。
文件系统阶段:
特点:冗余度大,数据独立性差,共享性差,数据能长期保存,由文件系统管理数据。
数据库系统阶段:
特点:数据结构化,共享性高,冗余度低,易扩展,数据独立性高,由数据库管理系统进行管理和控制,
高级数据库技术阶段:
数据库系统与传统文件系统的区别?
文件系统阶段,记录内部有了一些结构,但记录之间没有联系,数据库系统阶段则实现了整体数据结构化。
传统文件系统的存储单位是记录(实体),不能细化到数据项(属性),数据库系统能存取数据库中的某一数据项。
实体之间的联系:
一对一,一对多,多对多。
数据模型是现实世界数据特征的抽象,是表示实体类型及实体类型间联系的模型(真实地模拟现实世界 容易理解 便于计算机上实现)。有概念数据模型和逻辑数据模型(网状,层次,关系,面向对象)。
常用的概念数据模型——实体联系模型(ER图):三要素:实体,属性,联系。
数据库的三级模式:
外模式:用户与数据库系统的接口,是用户所看到和使用的局部数据的特征和逻辑描述(用户视图)。与某一应用有关的数据的逻辑表示。用户的所有操作都是针对用户视图进行。
模式:介于用户级和物理级之间,是所有用户的公共数据视图(全局的数据视图),是数据库管理员看到和使用的数据库。
内模式:是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有内部记录类型,表示方式,索引,及文件组织方式,以及数据控制方面的细节。
两级映像:外模式/模式,模式/内模式(定义了全局逻辑结构和存储结构的关系)。
数据库系统中存放三级结构定义的数据库称为数据字典。
键码由一个或多个属性组成
候选键(码):若关系中某一属性组能唯一的标识一个元组而其子集不能,则该属性组为候选码
主属性:候选码的属性 非主属性:不包含在候选码的属性
主键(码):候选码中的一个
外键(码):若果关系R中某一或一组属性不是它的码,但它是另一个关系中的主码,则称为该关系R的外码。
全码:关系模式中的所有属性是该关系模式的候选码即为全码。
视图:是一个或多个基本表导出的表,是虚表,只存储视图的定义而不存放数据,随基本表的改变而改变。
作用:简化用户的操作,使用户能够多角度看待同一数据,对机密数据提供了一种保护机制,适当的利用视图能更清晰地表达查询。
数据库安全性控制常用的方法:
用户标识和鉴定
存取控制
视图
审计
密码存储
视图机制:
把要保密的数据对无权存取这些数据的用户隐藏起来,实现数据的安全保护。
主要功能:提供数据的独立性,间接实现了支持存取谓词的用户权限定义。
审计:
审计日志:将用户对数据的所有操作记录在上面
DBA利用审计日志找出非法存取数据的人时间和内容
C2安全级别以上的DBMS必须具有
审计又分为:
用户级审计
针对自己创建的数据库表或视图进行审计 记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
系统级审计
DBA设置 监测成功或失败的登录要求 监测GRANT和REVOKE操作以及其他数据库级权限下的操作
数据库的完整性
实体完整性
参照完整性
用户定义的完整性
第一范式:关系模式的所有域为简单域,其元素不可再分,即属性不可分。
第二范式:非主属性完全依赖于码
第三范式:非主属性不传递依赖于码。
聚簇:为了提高某个属性或属性组的查询效率,把属性值相同的元组存放在连续的物理块。
数据字典:是关系数据库管理系统内部的一组系统表,它记录着数据库中所有定义信息。
触发器:是一种特殊类型的存储过程,它在指定表中的数据发生变化时自动执行。导致触发器生效的操作包括INSERT,DELETE,UPDATE等
使用触发器的原因:对数据进行复杂的检查,而这些检查是约束不能完成的;基于原始触发表中的更新,对另一张表进行修改。实现复杂的完整性约束和保证数据的一致性。
触发器&存储过程
触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
DBMS提供了两种主要机制用于维护数据的完整性:一种是约束,另一种就是触发器。触发器虽然是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在(这点与约束十分类似)。
触发器的主要作用就是其能够实现复杂的完整性约束和保证数据的一致性。
事务:用户定义的一系列操作序列,要么都做,要么都不做,是一个不可分割的工作单位。
事务的四大特性:原子性,隔离性,一致性,永久性
日志文件:记录事务对数据的更新操作的文件。作用:对事务故障进行恢复,对系统故障进行恢复,协助后备副本进行介质故障恢复。
并发控制机制:对并发操作进行正确的调度,保证事务的隔离性,保证数据库的一致性。
并发操作带来的数据不一致性:丢失修改(事务T1与T2对同一数据修改,T2提交的结果破坏了T1提交的结果,导致T1提交的结果丢失),不可重复读(事务T1读取数据后,T2对数据进行更新,导致T1不能重现读取之前的数据),读脏数据(事务T1对数据进行修改并写回磁盘,T2对该数据进行读取,但T1由于某种原因撤销了此次修改,导致T2读取的数据与数据库中的不一致,T2读到的数据是错误的,即脏数据)。
并发控制技术的主要方法:封锁,时间戳,乐观控制法。
两段锁协议:在对事务进行读写之前,事务首先获得对该数据的封锁(扩展阶段)。在释放一个封锁之后(收缩阶段),不再申请和获得任何其他锁。
事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。
封锁对象的大小称为封锁粒度。封锁的对象:逻辑单元,物理单元