还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库基础概念欢迎学习数据库基础概念课程本课程将系统地介绍数据库的核心概念、设计理念和实际应用,帮助你建立扎实的数据库理论基础,并掌握数据库系统的设计、实现和管理技能数据库技术是现代信息系统的核心组成部分,它为信息的存储、管理和检索提供了有效的解决方案随着大数据时代的到来,对数据库技术的需求变得越来越重要,理解数据库的基础概念对于从事信息技术工作的人员至关重要让我们一起踏上这段学习旅程,探索数据的奥秘世界!课程概述1课程目标2课程内容3学习方法本课程旨在帮助学生掌握数据库系统课程内容涵盖数据库系统概述、数据建议采用理论学习与实践相结合的方的基本概念和原理,了解各种数据模模型、关系数据库、SQL语言、数据式,课后及时完成练习和实验,参与型及其应用场景,学习SQL语言的使库设计、数据库安全性、数据库完整小组讨论,查阅相关资料拓展知识面用方法,培养数据库设计和管理能力,性、并发控制以及数据库恢复技术九建议使用主流数据库管理系统(如为后续深入学习数据库技术和开发应大章节,从理论到实践全面介绍数据MySQL、Oracle等)进行实际操作,用系统打下坚实基础库技术的各个方面巩固所学知识第一章数据库系统概述系统架构技术演进应用价值数据库系统是由数据库、数据库管理系统数据库技术经历了从手工管理、文件系统到数据库系统已成为现代信息系统的核心组件,(DBMS)、应用程序和数据库管理员数据库系统的发展过程,每一次技术变革都广泛应用于金融、电商、政务、医疗、教育(DBA)组成的集成化数据管理系统它极大地提高了数据管理的效率和能力等领域,为这些行业提供了高效的数据存储提供了一种可靠、高效、便捷的数据管理方和访问服务式数据库的基本概念
1.1数据库系统1集成化的数据管理系统数据库管理系统2管理数据库的软件系统数据库3按照数据模型组织的数据集合数据4描述事物的符号记录数据是描述事物的符号记录,是对客观事物的一种表达和记录形式在计算机系统中,数据是信息存储、处理和传输的基本单位数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的数据集合它按照特定的数据模型组织、描述和存储数据,具有较小的冗余度、较高的数据独立性和易扩展性,可为多个用户共享数据库管理系统(DBMS)是管理和控制数据库的软件系统,它为用户提供数据定义、操纵、控制和管理的功能数据库系统则是由数据库、DBMS、应用程序和DBA共同组成的集成化系统数据管理技术的发展
1.2人工管理阶段(世纪年代前)12050数据由应用程序直接管理,数据的描述与处理不分离,完全依赖于程序员的组织,数据面向特定应用且不可共享,存在大量数据冗余和不一致性,维护困难文件系统阶段(世纪年代)22050-60数据以文件方式组织,由文件系统管理,实现了数据与程序的部分分离,提高了数据共享性和减少冗余,但仍然存在数据结构不够灵活、数据独立性差、安全性不足等问题数据库系统阶段(世纪年代末至今)32060数据按模型组织成数据库,由专门的DBMS统一管理,实现了数据与程序的完全分离,极大提高了数据共享性、减少冗余、增强了数据独立性和安全性,便于数据维护和应用开发数据库系统的特点
1.3数据结构化数据的共享性高、冗余度数据独立性高低数据库中的数据不是简单的数数据库系统支持数据的物理独据项的集合,而是按照一定的数据库系统的一个主要目标是立性和逻辑独立性,使得物理数据模型组织起来的,具有严让不同用户和应用程序能够共存储结构的改变不会影响逻辑格的结构特性这种结构化使享同一份数据,减少数据存储结构,逻辑结构的变化不会影得数据能够被高效地存储、检的重复,降低数据的冗余度,响应用程序,从而简化了系统索和管理从而节省存储空间并确保数据的维护和升级的一致性数据由统一管理和DBMS控制数据库管理系统提供了统一的数据操作、保护和维护功能,实现了数据的安全性、完整性控制,并支持并发访问和故障恢复,确保系统的可靠运行数据库系统的组成
1.4数据库数据库管理系统数据库是存储数据的仓库,是按照数据模数据库管理系统是位于用户与操作系统之型组织的、长期存储在计算机内存储介质间的一层软件,负责数据库的创建、使用上的、可共享的数据集合它保存了系统12和管理它为用户提供了数据定义、数据中的原始数据,是整个数据库系统的核心操作、数据控制等功能,是数据库系统的部分核心软件数据库管理员应用程序数据库管理员(DBA)是负责数据库设应用程序是为了完成特定任务而开发的程计、实现、维护和管理的专业人员他们43序,它通过调用DBMS提供的接口访问和定义数据库的结构,实施访问控制,监控操作数据库中的数据,为最终用户提供所性能,进行备份和恢复,解决数据库使用需的功能和服务,是用户与数据库系统交中的技术问题互的重要途径数据库管理系统的功能
1.5数据定义DBMS提供数据定义语言(DDL),支持用户定义数据库的整体逻辑结构、外模式及其逻辑结构,以及两者之间的映射关系;支持定义数据的完整性约束、安全控制等,并将这些定义存入数据字典中数据操纵DBMS提供数据操纵语言(DML),支持对数据库中数据的检索、插入、删除和修改操作这些操作既可以针对单条记录,也可以针对满足特定条件的数据集合,为用户提供了灵活的数据访问能力数据库的运行管理DBMS负责数据库的日常运行管理,包括并发控制、数据完整性检查、安全性检查和日志管理等这些功能确保在多用户环境下数据的正确性、一致性和安全性,保障系统的可靠运行数据库的建立和维护DBMS提供数据库建立、数据装载转换、数据库重组织、性能监控、数据库备份与恢复等功能,帮助用户建立和维护数据库,确保数据库的可用性和性能数据库系统的环境
1.6数据库系统的运行依赖于特定的环境,主要包括硬件平台、操作系统和网络环境三个方面硬件平台是数据库系统的物理基础,包括CPU、内存、存储设备(如硬盘、SSD)以及网络设备等不同规模的数据库系统对硬件的要求不同,大型数据库系统通常需要高性能的服务器集群来支持操作系统为数据库系统提供基础的运行环境和资源管理功能,负责处理器调度、内存管理、文件系统支持和设备控制等主流数据库系统如Oracle、SQLServer、MySQL等支持多种操作系统平台网络环境则决定了数据库系统的连接方式和访问模式,现代数据库系统通常支持本地连接、局域网连接和互联网连接,允许用户通过各种方式远程访问数据库资源第二章数据模型物理数据模型逻辑数据模型是存储世界的抽象,描述数据在物理存储介质上的概念数据模型是信息世界的抽象,用特定的数据结构表示实体和存储结构和访问方法它关注数据的物理组织和访是现实世界的抽象,表达信息世界中的概念及其联联系,如关系模型、网状模型、层次模型等它是问效率系,如实体-联系模型(E-R模型)这是数据库设概念模型向物理模型转换的中间层计的第一步,侧重于对现实世界的语义表达数据模型是数据库系统的核心和基础,它决定了数据库的组织结构和操作方式不同的数据模型有不同的数据表示和操作方式,适用于不同的应用场景在数据库设计过程中,我们通常先建立概念数据模型,然后转换为逻辑数据模型,最后实现为物理数据模型,这种自顶向下的设计方法有助于确保数据库设计的质量数据模型的概念
2.1定义数据模型是对现实世界数据特征的抽象,是用于描述数据的概念集合,包括数据结构、数据操作和数据约束三个要素它是数据库系统的核心,决定了数据库的组织形式和处理方法作用数据模型作为现实世界与数据库系统之间的桥梁,一方面能够较准确地描述客观世界,另一方面又便于在计算机上实现它简化了数据库的设计过程,提高了数据库应用系统的开发效率组成要素数据模型由数据结构、数据操作和数据完整性约束三部分组成数据结构描述数据库的组成对象及其联系;数据操作定义对数据的基本操作;数据完整性约束规定数据应满足的约束条件常见的数据模型
2.2模型类型特点优点缺点应用示例层次模型树形结构,一结构简单,查表达多对多关IMS对多关系询效率高系复杂网状模型网络结构,支能直接表示复结构复杂,不IDMS持多对多杂关系够直观关系模型二维表格,易简单灵活,独查询性能较低Oracle,于理解立性强MySQL面向对象模型支持复杂数据模型能力强,标准不统一,MongoDB类型高扩展性较复杂常见的数据模型各有其特点和适用场景层次模型在处理一对多关系时效率高,但表达复杂关系时需要数据冗余;网状模型能够直接表示各种复杂的联系,但结构复杂,不够直观;关系模型以其简单的二维表格形式和严格的数学基础,成为当前最主流的数据模型;面向对象模型能够处理更复杂的数据类型,适合多媒体和工程设计等领域随着NoSQL数据库的兴起,文档模型、键值模型等新型数据模型也得到了广泛应用,它们在处理非结构化和半结构化数据方面具有优势实体联系模型(模型)
2.3-E-R实体属性联系实体是客观存在并可相互区分的事物,如属性是实体所具有的特性,用于描述实体联系表示实体之间的相互关联,如学生一个学生、一门课程或一个部门实体可的状态、性质或特征属性可分为简单属选修课程联系可以是二元联系(涉及分为强实体和弱实体,强实体可以独立存性和复合属性,单值属性和多值属性,存两个实体集),也可以是多元联系(涉及在,而弱实体依赖于其他实体存在储属性和导出属性等多个实体集)每个实体集都有一个或一组属性,其值能按照联系两端实体集的对应关系,联系可每个实体都有一组属性来描述其特征,如唯一标识实体集中的每个实体,这样的属分为一对一(1:1)、一对多(1:n)和多学生实体可能有学号、姓名、年龄等属性性称为码或键例如,学号可以作为学生对多(m:n)三种基本类型联系也可以实体集是具有相同属性的实体的集合,如实体集的码,唯一标识每个学生具有属性,如选修联系可能有成绩这所有学生构成学生实体集一属性图的表示方法
2.4E-R实体的表示属性的表示联系的表示在E-R图中,实体通常用矩形表示,矩形中属性通常用椭圆形表示,并用一条线与其所联系用菱形表示,菱形中写明联系名称,并写明实体名称强实体用单线矩形表示,而属的实体或联系相连主键属性(码)通常用线段连接相关的实体在连接线上标注联弱实体则用双线矩形表示实体之间的关系用下划线标出或用特殊符号标识多值属性系的基数约束,如1:
1、1:n或m:n,表示实用菱形连接,菱形中标注关系的名称用双线椭圆表示,导出属性用虚线椭圆表示,体间的对应关系联系的属性也用椭圆表示,复合属性则是将各组成部分属性与复合属性并用线与菱形相连如果联系是三元或更高相连的,则所有相关实体都与菱形相连模型向关系模型的转换
2.5E-R实体转换1每个实体转换为一个关系模式,实体的属性成为关系的属性,实体的码成为关系的主键一对一联系转换2选择一个实体对应的关系,添加另一个实体的主键作为外键;或创建独立的关系一对多联系转换3在多的一方对应的关系中,加入一的一方的主键作为外键多对多联系转换4为该联系创建一个独立的关系,包含两个实体的主键和联系的属性E-R模型向关系模型的转换是数据库设计中的关键步骤在转换过程中,除了上述基本规则外,还需要注意以下特殊情况弱实体转换为关系时,必须包含其依赖的强实体的主键作为外键;多值属性需要单独创建一个关系;复合属性可以分解为简单属性或作为整体处理;派生属性通常不需要存储例如,学生学号,姓名,年龄和课程课程号,课程名,学分之间的选修多对多联系,可以转换为三个关系模式学生学号,姓名,年龄、课程课程号,课程名,学分和选修学号,课程号,成绩,其中选修关系的主键是由学号和课程号组成的组合键第三章关系数据库1970关系模型提出年代IBM研究员E.F.Codd在1970年提出了关系模型的概念,奠定了关系数据库的理论基础3关系的范式级别关系数据库设计理论中最常用的三个范式第一范式1NF、第二范式2NF和第三范式3NF12关系代数基本运算关系代数包含的基本运算操作数量,包括集合运算和专门的关系运算1979SQL标准首次发布年份SQL作为关系数据库标准查询语言,首个正式标准于1979年由ANSI发布关系数据库是当前最主流的数据库类型,它基于关系模型,将数据组织为相互关联的二维表格集合这种模型具有简单、灵活、易理解的特点,使用户可以简单地查询和更新数据,而不必关心数据的存储细节关系数据库的基础是数学中的集合论和关系理论,具有坚实的理论基础它支持高度抽象的非过程化语言SQL,简化了数据库的操作和管理关系数据库系统的代表产品包括Oracle、MySQL、SQL Server、PostgreSQL等关系数据结构
3.1关系是关系模型的核心,一个关系可以表示为一张二维表,其中行表示元组,列表示属性每个元组是一组值的有序集合,对应表中的一行,表示一个实体或联系的一个实例每个属性代表实体或联系的一个特性,对应表中的一列域是属性的取值范围,例如学生的年龄属性的域可以是0到120的整数关系模式是关系的结构定义,由关系名和属性集组成,表示为RA1,A2,...,An,其中R是关系名,A1到An是属性名关系数据库的数据操作基于关系代数和关系演算,通过这些理论,可以实现高效的数据查询和处理关系数据库管理系统将这些理论实现为具体的数据库产品,为用户提供数据存储、查询和管理功能关系的完整性约束
3.2参照完整性2外键要么取空值,要么是所参照关系中某个元组的主键值实体完整性1关系的主键不能取空值或重复值用户定义的完整性3根据应用环境的要求和语义约束定义的规则实体完整性约束确保每个实体都能被唯一标识在关系数据库中,这意味着关系的主键不能包含空值,且同一关系中不能有两个元组的主键值相同这是关系模型的基本要求,所有关系数据库管理系统都必须实现这一约束参照完整性约束定义了关系之间的引用规则若关系R1中的外键F与关系R2的主键P相对应,则R1中任何元组在F上的取值要么为空值,要么必须是R2中某个元组在P上的取值这确保了数据的引用完整性,防止出现悬浮指针用户定义的完整性约束是特定于应用的规则,例如学生的年龄必须在15到50岁之间,成绩的取值范围是0到100等这些约束反映了具体应用领域的业务规则和数据语义,是保证数据合法性和有效性的重要手段关系代数
3.3集合运算专门的关系运算包括并∪、差-、交∩和笛卡尔积×四种运算这些运算来源包括选择σ、投影π、连接⋈、除÷和重命名ρ等运算这于数学的集合论,适用于关系模型中些运算是专门为关系数据库设计的,用于实现特定的数据查询需求•并运算R∪S,返回属于R或属于S或同时属于两者的元组•选择σ条件R,返回R中满足条件的元组•差运算R-S,返回属于R但不属于S的元组•投影π属性集R,返回R中指定属性集构成的关系•交运算R∩S,返回同时属于R和S的元组•连接R⋈S,将R和S中满足连接条件的元组连接起来•笛卡尔积R×S,返回R和S所有元组的所有可能组合•除R÷S,找出R中与S中每个元组都存在联系的元组•重命名ρSR,将关系R重命名为S关系代数是一种抽象的查询语言,它用于描述关系数据库中的查询操作通过组合使用上述运算,可以表达复杂的查询需求关系代数的运算结果仍然是关系,这种封闭性使得可以将运算的结果作为另一个运算的输入,形成复杂的查询表达式关系演算
3.4元组关系演算域关系演算元组关系演算是以元组变量作为基本对象,通过谓词来描述检索条件,获取满足条件的域关系演算以域变量为基本对象,通过谓词描述属性值的约束条件,获取满足条件的元元组集合其基本形式为{t|Pt},表示满足谓词P的所有元组t的集合元组关系演组集合其基本形式为{x1,x2,...,xn|Px1,x2,...,xn},表示属性值满足谓⟨⟩算是SQL语言的理论基础,许多SQL查询语句可以直接对应到元组关系演算表达式词P的所有n元组的集合域关系演算的表达能力与元组关系演算相当,但更接近自然语言的表述方式关系演算是一种声明式查询语言,它描述要检索什么,而不是如何检索与关系代数相比,关系演算更注重描述结果的性质,而不是获取结果的步骤关系演算的表达能力与关系代数等价,即任何关系代数表达式都可以转换为等价的关系演算表达式,反之亦然关系演算的安全性是一个重要问题,安全的关系演算表达式保证结果是有限的关系,而不是无限集合大多数关系数据库管理系统的查询优化器会将高级查询语言(如SQL)转换为内部的关系代数或关系演算表达式,然后进行优化并执行第四章语言SQLSQL(结构化查询语言)是关系数据库的标准语言,用于数据库的创建、管理、查询和控制它是一种非过程化语言,用户只需指定做什么,而不必关心怎么做,系统会自动优化查询路径和执行计划SQL语言分为数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和事务控制语言(TCL)四大部分DDL用于定义数据库对象,如表、视图、索引等;DML用于查询和修改数据;DCL用于控制用户对数据的访问权限;TCL用于管理事务的提交和回滚虽然SQL是一个国际标准,但各个数据库厂商往往会在标准基础上添加自己的扩展功能,如Oracle的PL/SQL、Microsoft SQL Server的T-SQL等,这些扩展增强了SQL的功能,但也导致了不同系统间的SQL代码可能不完全兼容概述
4.1SQL年19741SQL的前身SEQUEL在IBM研究实验室诞生,最初是为了操作IBMSystem R关系数据库系统而设计的一种结构化查询语言年21979Oracle公司推出首个商用SQL关系数据库产品,标志着SQL开始进入商业应用阶段年19863ANSI(美国国家标准协会)和ISO(国际标准化组织)发布SQL第一个标准版本,称为SQL-86年41992SQL-92标准发布,大幅扩展了SQL的功能,包括外连接、事务隔离级别等,成为最广泛实现的SQL标准年至今19995SQL:
1999、SQL:
2003、SQL:
2008、SQL:
2011、SQL:2016和SQL:2019等新标准陆续发布,不断增加新特性如递归查询、XML支持、窗口函数、JSON支持等SQL的主要特点包括高度非过程化,用户只需描述需要的数据,而不必指定获取数据的具体步骤;使用简单,语法接近自然语言,易于学习和使用;统一性强,集数据定义、数据操纵、数据控制功能于一体;独立性好,用户使用SQL时不需考虑底层存储结构;基于集合的操作方式,一次处理多条记录,效率高数据定义语言()
4.2DDL创建表修改表使用CREATE TABLE语句创建数据库表,定义表使用ALTER TABLE语句修改表的结构,包括添加的结构、字段类型和约束条件语法基本格式为新列、修改列定义、删除列、添加或删除约束等常用语法格式包括CREATE TABLE表名ALTER TABLE表名ADD列名数据类型列名1数据类型[约束条件],[约束];列名2数据类型[约束条件],ALTER TABLE表名MODIFY列名新数据...类型[约束];[表级约束定义]ALTER TABLE表名DROP COLUMN列名;;ALTER TABLE表名ADD CONSTRAINT约束名约束定义;删除表使用DROP TABLE语句删除数据库表,包括表的结构和所有数据基本语法为DROP TABLE[IF EXISTS]表名[CASCADE|RESTRICT];其中,IF EXISTS是可选的,表示如果表存在则删除;CASCADE表示级联删除所有依赖对象;RESTRICT表示如果有依赖对象则拒绝删除操作删除表是一个危险操作,应谨慎使用数据操纵语言()
4.3DML1插入数据2更新数据使用INSERT INTO语句向表中插入数据可以一次插入一使用UPDATE语句修改表中的数据可以同时更新一个或行或多行数据,也可以将查询结果插入表中多个列的值,还可以使用WHERE子句限定要更新的行--插入单行数据UPDATE表名INSERT INTO表名[列名1,列名2,...]SET列名1=表达式1[,列名2=表达式2,...]VALUES值1,值2,...;[WHERE条件];--插入多行数据INSERT INTO表名[列名1,列名2,...]VALUES值1,值2,...,值1,值2,...,...;--插入查询结果INSERT INTO表名[列名1,列名2,...]SELECT列1,列2,...FROM源表[WHERE条件];3删除数据使用DELETE语句删除表中的数据可以使用WHERE子句限定要删除的行,如果没有WHERE子句则删除表中所有行DELETE FROM表名[WHERE条件];数据查询语言()
4.4DQL基本查询语句条件查询排序和分组SQL的查询功能由SELECT WHERE子句用于指定查询ORDER BY子句用于对查语句提供,其基本格式为条件,筛选出符合条件的询结果进行排序,可以按记录常用的条件运算符照一个或多个列进行升序包括比较运算符(=,,(ASC)或降序(DESC),=,,=)、逻辑运算排序GROUP BY子句用SELECT[DISTINCT]列名1,列名2,...符(AND,OR,NOT)、于将查询结果按照指定的FROM表名LIKE(模式匹配)、IN列分组,通常与聚合函数[WHERE条件](集合包含)、(如COUNT,SUM,AVG,[GROUP BY分组列]BETWEEN...AND...(范MAX,MIN)一起使用[HAVING分组条件]围查询)、IS NULL/IS HAVING子句用于对分组[ORDER BY排序列NOT NULL(空值检测)后的结果进行筛选等[ASC|DESC]][LIMIT限制数量];复杂查询
4.5连接查询子查询集合查询连接查询用于合并多个表中的数据,是关系数据子查询是嵌套在另一个SQL语句内部的SELECT语集合查询用于合并多个SELECT语句的结果SQL库的核心功能之一SQL支持多种连接类型句,可以出现在SELECT、FROM、WHERE和提供了三种集合操作HAVING子句中根据返回结果的不同,子查询•UNION合并两个结果集并去除重复行可分为•内连接(INNER JOIN)返回两个表中满•UNION ALL合并两个结果集但保留重复行足连接条件的行•标量子查询返回单个值,可以用在任何需要单个值的地方•左外连接(LEFT JOIN)返回左表的所有•INTERSECT返回两个结果集的交集行和右表中满足条件的行•行子查询返回单行多列,可以与行构造器•EXCEPT/MINUS返回存在于第一个结果集进行比较•右外连接(RIGHT JOIN)返回右表的所有但不存在于第二个结果集的行行和左表中满足条件的行•表子查询返回多行多列,通常用在FROM子句中作为派生表•全外连接(FULL JOIN)返回两个表中的所有行,不管是否满足条件•相关子查询引用了外部查询中的列的子查询•自然连接(NATURAL JOIN)根据两个表中同名列自动创建连接条件•交叉连接(CROSS JOIN)返回两个表的笛卡尔积视图
4.6视图的概念创建视图视图是基于一个或多个表(或其他视图)的查使用CREATE VIEW语句创建视图,基本语法询结果的虚拟表它不存储实际数据,而是存为CREATE VIEW视图名[列名1,列名2,...]储查询定义当访问视图时,系统会执行其定AS SELECT语句[WITH CHECKOPTION]12义的查询语句,动态生成结果集视图可以简WITH CHECKOPTION表示对视图的修改必化复杂查询,提高安全性,实现数据独立性须满足视图定义中的条件视图的列名可以显式指定,也可以从SELECT语句中继承使用视图修改和删除视图视图的使用方式与表类似,可以在SELECT、使用ALTER VIEW语句修改视图的定义,使用INSERT、UPDATE和DELETE语句中引用视图43DROP VIEW语句删除视图删除视图不会影但是,视图的可更新性受到限制,只有满足特响基表中的数据,只会删除视图的定义但是,定条件的视图才能进行更新操作复杂视图删除基表会导致依赖于该表的视图失效(如包含聚合函数、DISTINCT、GROUP BY等)通常是只读的索引
4.7B树索引哈希索引位图索引全文索引其他索引索引是数据库中用于提高查询效率的一种数据结构,它类似于书籍的目录,可以帮助数据库系统快速定位和访问数据,而不必扫描整个表索引是物理数据库设计的重要组成部分,合理的索引设计可以显著提升系统性能常见的索引类型包括B树索引(最常用的通用索引类型)、哈希索引(用于等值查询的高效索引)、位图索引(适用于低基数列的索引)、全文索引(用于文本搜索)等索引可以是单列索引(只包含一个列)或复合索引(包含多个列)创建索引的基本语法为CREATE[UNIQUE][TYPE]INDEX索引名ON表名列名1[ASC|DESC],列名2[ASC|DESC],...其中,UNIQUE表示唯一索引,TYPE指定索引类型(如BTREE、HASH等)索引虽然提高了查询速度,但也会增加插入、更新和删除操作的开销,占用额外的存储空间,因此需要权衡利弊,合理使用第五章数据库设计数据库设计是构建数据库系统的重要环节,它决定了系统的性能、可靠性、安全性和可扩展性良好的数据库设计需要充分理解用户需求,合理组织数据结构,确保数据的完整性和一致性数据库设计通常遵循自顶向下的方法论,从需求分析开始,经过概念设计、逻辑设计和物理设计等阶段,最终实现为可运行的数据库系统在这个过程中,设计人员需要充分考虑系统的功能需求、性能需求、安全需求和未来扩展的可能性数据库设计的理论基础包括范式理论、E-R模型、关系代数等这些理论帮助设计人员创建结构良好、易于理解和维护的数据库模式同时,设计中也需要考虑实际应用环境的特点,在必要时进行一定的反规范化处理,以平衡系统的查询性能和数据一致性数据库设计的步骤
5.1需求分析收集和分析用户需求,确定系统的功能需求、性能需求、安全需求等通过与用户交流,了解业务流程、数据特点和处理规则,明确系统的边界和目标需求分析的质量直接影响后续设计的正确性和系统的可用性概念结构设计根据需求分析结果,使用E-R模型等工具建立概念数据模型,识别实体、属性和实体间的联系概念设计关注的是对现实世界的准确抽象,不考虑具体的数据库产品和实现技术逻辑结构设计将概念数据模型转换为特定数据模型(如关系模型)的逻辑结构,确定表结构、键和完整性约束等逻辑设计阶段需要应用范式理论,确保数据结构的规范性和合理性物理结构设计根据特定DBMS的特点,确定数据库的物理存储结构、索引设计、存储过程设计等,优化数据库性能物理设计需要考虑数据访问模式、数据量大小和系统性能需求数据库实施使用DBMS提供的工具,创建数据库、表、索引等对象,完成数据的初始化加载在实施阶段还需要进行系统测试,验证设计的正确性和系统的性能数据库运行和维护监控数据库系统的运行状态,进行性能优化、安全管理、备份恢复等维护工作,适时调整数据库结构,以适应不断变化的需求和环境概念结构设计
5.21E-R图的绘制E-R图(实体-联系图)是概念结构设计的主要工具,它通过矩形表示实体、椭圆表示属性、菱形表示联系,直观地描述数据的组织结构绘制E-R图的过程是对业务需求进行抽象和整理的过程,有助于厘清系统的数据关系和业务规则2实体的识别实体是客观存在并可相互区分的事物或概念,如学生、课程、部门等识别实体的过程需要仔细分析业务需求,找出系统中需要存储信息的对象类型实体可以是有形的物理对象,也可以是无形的概念或事件实体间的边界和粒度需要根据具体应用需求来确定3属性的确定属性是实体所具有的特征或性质,如学生的学号、姓名、年龄等确定属性时需要考虑系统的功能需求和数据处理需求,确保属性的完整性和必要性属性可以分为简单属性、复合属性、单值属性、多值属性等类型,需要根据实际情况选择合适的表示方法4联系的确定联系表示实体之间的相互关联,如学生选修课程、教师属于部门等确定联系需要分析实体间的业务关系和依赖关系,明确联系的类型(一对
一、一对多、多对多)和参与性质(完全参与或部分参与)联系也可以具有属性,如选修联系可能有成绩属性逻辑结构设计
5.3E-R图向关系模型的转换1将概念阶段设计的E-R图转换为关系模型的表结构,是逻辑结构设计的核心任务转换过程遵循一系列规则每个实体转换为一个关系模式;一对多联系通过在多端加入外键实关系模式的优化2现;多对多联系转换为独立的关系模式;属性转换为关系的列等转换时需要保留E-R图中表达的语义信息,确保数据的完整性和一致性通过范式理论和反规范化技术对初步转换得到的关系模式进行优化,消除冗余和异常,提高设计质量优化过程需要分析关系的结构特点和功能依赖,确保关系模式至少达到第三范式或BC范式在某些特定场景下,为了提高查询性能,可能需要适当引入冗余,进行定义完整性约束3反规范化处理这种优化需要权衡数据一致性和系统性能确定各种完整性约束条件,包括主键约束、外键约束、唯一性约束、非空约束、CHECK约束等这些约束是关系数据库中保证数据正确性和一致性的重要机制约束的定义应该反映业务规则和数据语义,如学生学号必须唯一,成绩必须在0-100之间等约束定义应评估和修正4尽量在数据库层面实现,减少应用程序的负担通过评估指标(如范式级别、查询复杂度、维护成本等)对设计结果进行评估,根据评估结果进行必要的修正评估应考虑系统的功能需求和性能需求,确保设计能够满足应用的实际需要修正可能涉及表结构的调整、索引的添加、约束的修改等这是一个迭代优化的过程,目标是获得平衡各种因素的最优设计规范化理论
5.4函数依赖码的概念范式的意义函数依赖是关系数据库理码(或键)是关系模式中范式是符合某种规范化程论的基础概念,表示属性的一个属性集,它能唯一度的关系模式设计关系之间的决定关系如果关标识关系中的每个元组数据库时,遵循范式理论系R中的属性X的值唯一确如果属性集K是关系R的码,可以减少数据冗余,避免定属性Y的值,则称Y函数则K→R(K函数决定R中插入、删除和更新异常,依赖于X,记为X→Y例的所有属性),且K的任使数据库结构更加合理如,在学生关系中,学号何真子集都不能函数决定从第一范式到更高级范式,→姓名表示学号可以唯一R中的所有属性码可以对关系模式的约束逐渐增确定姓名函数依赖反映分为超码、候选码、主码强,数据更加规范,但可了属性间的内在联系,是和外码等不同类型码的能会导致表的分解和连接范式理论的基础选择对数据库设计至关重操作增加,在某些情况下要,它影响着数据的存取影响查询性能效率和完整性约束范式
5.5第一范式(1NF)1关系的每个属性都是原子的,不可再分例如,地址应该拆分为省、市、街道等第二范式(2NF)2在1NF基础上,消除非主属性对码的部分函数依赖所有非主属性必须完全依赖于码第三范式(3NF)3在2NF基础上,消除非主属性对码的传递函数依赖,即非主属性不依赖于其他非主属性BC范式(BCNF)4在3NF基础上,消除主属性对码的部分和传递函数依赖,所有决定因素必须是码第一范式(1NF)要求关系中的每个属性都是原子的,不可再分这消除了重复组和多值属性,如将电话号码属性拆分为家庭电话和移动电话,或将多个电话号码存储在不同的行中第二范式(2NF)要求在满足第一范式的基础上,消除非主属性对码的部分函数依赖例如在选课关系中,如果码是学号,课程号,而学生姓名只依赖于学号,那么存在部分函数依赖,不满足2NF第三范式(3NF)要求在满足第二范式的基础上,消除非主属性对码的传递函数依赖例如在学生关系中,如果学号→系号,系号→系主任,则系主任对学号存在传递函数依赖,不满足3NF反规范化
5.6概念应用场景注意事项反规范化是有意违反范式规则,在数据库反规范化主要应用于以下场景实施反规范化时需要注意以下问题设计中引入适当的数据冗余,以提高查询•频繁执行的复杂连接查询,特别是涉•增加数据更新的复杂性,需要维护冗性能或简化操作的技术与规范化追求数及多表连接的查询余数据的一致性据的无冗余和一致性不同,反规范化更注•大量聚合计算操作,如求和、计数、•增加存储空间的占用重系统的性能和用户体验平均值等•可能引入数据不一致的风险反规范化的常见操作包括合并表(将多•读操作远多于写操作的应用系统•需要额外的程序逻辑或数据库触发器个表合并为一个)、增加冗余字段(在一•对查询响应时间有严格要求的应用来保证数据的同步更新个表中增加来自其他表的字段)、增加派生字段(存储可由其他字段计算得出的数•分布式数据库系统,为减少跨节点查•应该在规范化设计的基础上有选择地询应用反规范化技术据)、创建汇总表(存储预计算的聚合结果)等第六章数据库安全性安全策略1制定全面的数据库安全保护计划安全机制2实现身份认证、访问控制、审计和加密等安全技术安全管理3进行日常安全维护、漏洞修补和安全培训安全评估4定期检查安全措施的有效性并做出适当调整数据库安全性是指保护数据库中的数据不受非授权访问、恶意破坏和意外泄露的能力随着数据价值的不断提升和网络威胁的日益增长,数据库安全已成为组织信息安全战略的核心组成部分数据库安全涉及多个层面,包括物理安全(保护硬件设备)、网络安全(防火墙、入侵检测)、系统安全(操作系统加固)和数据库安全(访问控制、加密)等全面的数据库安全保护需要采用多层次、多手段的综合防护策略,形成纵深防御体系实现数据库安全不仅需要技术手段,还需要完善的管理制度和操作规程组织应制定明确的安全策略,规范数据库的访问和使用,定期进行安全审计和风险评估,建立健全的应急响应机制,确保在安全事件发生时能够及时有效地处理数据库安全性概述
6.1数据库安全性的重要性日益凸显,因为数据已成为组织最宝贵的资产之一数据泄露不仅会导致直接的经济损失,还会影响组织的声誉和客户信任,甚至可能导致法律诉讼和合规处罚特别是在金融、医疗、政府等行业,数据库中存储的敏感信息更需要严格保护数据库面临的安全威胁主要来自以下几个方面非授权访问(未经授权的用户访问数据库)、特权滥用(合法用户超越权限使用数据)、恶意代码攻击(病毒、木马等)、SQL注入(通过操纵输入攻击数据库)、拒绝服务攻击(使数据库服务不可用)、数据窃取(未经授权复制数据)、中间人攻击(截获和篡改数据通信)等应对这些威胁需要采取综合防护措施,包括技术手段(如身份认证、访问控制、数据加密等)和管理措施(如安全策略制定、人员培训、应急响应等)一个有效的数据库安全策略应该能够防止、检测和响应各种安全事件,减少安全风险,保护数据资产用户身份鉴别
6.2口令鉴别生物特征鉴别智能卡鉴别口令鉴别是最常见的身份验证方式,用户通生物特征鉴别利用人体固有的生物特征(如智能卡鉴别使用包含安全芯片的物理卡片,过提供用户名和密码来证明自己的身份为指纹、虹膜、面部特征、声纹等)来验证用用户需同时持有卡片并知道PIN码才能通过增强安全性,数据库系统通常会实施密码复户身份这种方式难以伪造,无需记忆,但认证智能卡可以存储数字证书、加密密钥杂度要求、定期更换密码、密码历史检查、实现成本较高,且生物特征一旦泄露无法更等信息,支持复杂的密码学操作这种方式账户锁定等措施口令鉴别虽然实现简单,改在高安全性要求的环境中,生物特征鉴结合了持有物和知识两种因素,安全性但容易受到暴力破解、字典攻击、社会工程别通常作为多因素认证的一部分使用较高,但存在卡片丢失、被盗的风险学攻击等威胁存取控制
6.3自主存取控制自主存取控制(DAC)是一种由数据拥有者决定谁可以访问数据的控制机制在这种模式下,对象(如表、视图)的创建者拥有该对象,并可以授予其他用户访问权限SQL通过GRANT和REVOKE语句支持DAC,允许数据库管理员或对象所有者控制谁可以查看、修改或删除数据DAC的特点是灵活性高,管理简单,但也存在权限管理复杂、易导致权限蔓延、难以应对内部威胁等缺点大多数商用数据库系统(如Oracle、SQL Server、MySQL)都实现了DAC机制强制存取控制强制存取控制(MAC)是一种基于安全策略的中央控制机制,无论数据的拥有者是谁,都必须遵循系统强制实施的安全规则MAC通常基于多级安全模型,为主体(用户)和客体(数据)分配安全级别和类别标签,访问决策基于这些标签和预定义的规则MAC的特点是安全性高,符合最小特权和需要知道原则,适用于军事、政府等对安全性要求极高的领域但MAC实现复杂,管理开销大,灵活性低,主要用于专门的安全数据库系统角色存取控制角色存取控制(RBAC)是一种基于用户在组织中的角色来管理访问权限的机制系统首先定义一系列角色,为每个角色分配适当的权限,然后将用户分配给相应的角色用户通过所属角色间接获得操作权限,简化了权限管理RBAC的特点是管理简便、权限集中、易于审计、符合职责分离原则它结合了DAC的灵活性和MAC的集中控制,是现代数据库系统中最常用的访问控制模型之一大多数企业级数据库系统都支持RBAC,如Oracle的角色管理、SQLServer的固定角色和用户定义角色视图机制
6.4视图与安全性视图的安全优势视图是数据库安全控制的重要机制,它视图在安全方面具有多种优势首先,能够隐藏底层表的细节,只向用户展示它实现了数据的逻辑独立性,用户无需其有权访问的数据子集视图可以限制了解底层表结构;其次,它支持行级和用户对某些列或行的访问,保护敏感数列级的访问控制,提供精细的安全管理;据不被未授权用户看到例如,可以创第三,它可以隐藏数据的来源和存储细建一个员工信息视图,其中不包含薪资节,增强系统的安全性;最后,视图便和个人敏感信息,供普通用户查询于实现数据过滤和数据隔离,确保用户只能看到有权访问的数据视图的安全限制尽管视图是实现安全控制的有效工具,但它也存在一些限制首先,视图不能完全防止SQL注入等攻击;其次,视图的更新操作受到限制,复杂视图通常是只读的;第三,视图的性能可能低于直接访问基表;最后,视图的安全性依赖于底层表的权限设置,如果基表权限设置不当,视图的安全性也会受到影响审计
6.5审计的概念审计的内容12数据库审计是记录、监控和分析数据数据库审计的内容通常包括用户登库活动的过程,旨在检测异常行为、录和注销事件(成功和失败的认证尝保障数据安全、满足合规要求审计试);数据定义操作(创建、修改、系统收集用户访问和操作数据库的信删除数据库对象);数据操作(查询、息,生成审计日志,帮助管理员了解插入、更新、删除数据);系统管理谁在什么时间做了什么操作数据库操作(备份、恢复、权限变更);访审计是安全策略的重要组成部分,为问敏感数据的行为;特权用户的活动;安全事件调查和取证分析提供依据违反安全策略的行为等审计的粒度可以是语句级、对象级或访问级,取决于安全需求和性能考虑审计的实现3数据库审计可以通过多种方式实现内置审计功能(大多数主流数据库管理系统都提供内置的审计功能);触发器(创建触发器记录数据变更);应用程序审计(在应用代码中实现审计逻辑);第三方审计工具(提供更丰富的审计功能和分析能力)选择合适的审计实现方式需要考虑安全需求、性能影响、管理复杂度和成本因素数据加密
6.6数据加密是保护数据库中敏感信息的关键技术,它将明文数据转换为密文,使未授权者即使获取了数据也无法理解其内容数据库加密可分为静态数据加密(保护存储的数据)和动态数据加密(保护传输中的数据),两者结合使用可提供全面的数据保护常见的加密算法包括对称加密算法(如AES、3DES,使用相同的密钥加解密,速度快但密钥管理复杂)和非对称加密算法(如RSA、ECC,使用公钥加密私钥解密,安全性高但速度较慢)此外,哈希算法(如SHA-
256、MD5)用于生成数据的数字指纹,验证数据完整性;数字签名技术用于验证数据来源的真实性在数据库中实现加密的方式包括应用层加密(在数据进入数据库前加密)、API加密(使用数据库提供的加密函数)、透明数据加密(TDE,自动加密整个数据库或表空间)、列级加密(只加密敏感列)等加密实施需要解决密钥管理、性能影响、索引效率等问题,在安全需求和系统性能间找到平衡点第七章数据库完整性数据一致性约束机制触发器保护数据完整性确保数据库中的信息保数据库系统提供了多种约束机制,触发器是与特定表关联的存储过程,持一致、准确和可靠通过实施完包括主键约束、外键约束、唯一性在数据修改操作发生时自动执行整性约束,可以防止无效数据进入约束、非空约束和检查约束等,这它可以实现复杂的完整性规则,执数据库,维护数据的质量和可信度些机制共同作用,确保数据满足预行数据验证和转换,记录数据变更定义的规则和条件历史错误防范完整性控制机制可以预防、检测和纠正数据错误,减少人为失误和系统故障对数据质量的影响,提高系统的可靠性和稳定性数据库完整性是数据库系统的一个基本特性,它确保数据遵循特定的业务规则和条件,防止数据库中出现不合法、不一致或不准确的数据在关系数据库中,完整性约束是实现数据完整性的主要机制,这些约束在数据定义时指定,在数据操作时由DBMS自动检查和维护完整性约束可以分为域完整性(限制属性值的类型和范围)、实体完整性(确保每个实体的唯一标识)、参照完整性(维护实体间引用关系的一致性)和用户定义完整性(满足特定应用需求的自定义规则)四大类完整性概述
7.1完整性的重要性完整性的定义1数据是企业的核心资产,保障数据质量至关重要确保数据符合预定义规则,保持一致性和准确性2完整性的实现完整性的挑战4通过数据库约束、触发器、存储过程等机制保障数据完整3数据量增长、系统复杂性提高带来更多完整性风险性数据库完整性是指数据库中数据的正确性、一致性和完整性,它确保数据库中的数据满足一定的规则和约束条件在数据库设计和使用过程中,完整性约束是防止数据出现错误和不一致的重要手段,它可以减少人为错误,提高数据质量,简化应用程序开发随着企业信息系统的复杂性日益增加,数据完整性面临更多挑战大数据环境下数据来源多样、质量参差不齐;分布式系统中数据一致性难以保证;频繁的系统集成和数据迁移可能导致完整性规则丢失;快速变化的业务需求要求数据模型不断调整完整性约束的分类方式有多种按照约束的适用范围,可分为列级约束(应用于单个列)和表级约束(涉及多个列);按照约束的作用对象,可分为域完整性约束、实体完整性约束、参照完整性约束和用户定义完整性约束;按照实现方式,可分为声明性约束(通过DDL定义)和程序性约束(通过触发器、存储过程实现)实体完整性
7.2主键约束唯一性约束非空约束主键约束是实体完整性的核心,它要求关系唯一性约束要求属性或属性组合的值在关系非空约束规定属性不能取空值(NULL)中的每个元组都有一个唯一的标识符主键中必须唯一,但可以包含NULL值(除非同时NULL表示值未知或值不适用,与空字符由一个或多个属性组成,这些属性的值不能定义了NOT NULL约束)与主键不同,一串或零不同非空约束常用于必须提供值的为空,且在关系中必须唯一一个关系只能个关系可以定义多个唯一性约束唯一性约属性,如姓名、ID等主键默认包含非空约定义一个主键束常用于需要唯一标识但不作为主键的属性,束如电子邮件地址、社会保障号等在SQL中,可以在CREATE TABLE语句中使在SQL中,使用NOT NULL关键字定义非空用PRIMARY KEY关键字定义主键在SQL中,使用UNIQUE关键字定义唯一性约束约束CREATE TABLE学生CREATE TABLE课程学号CHAR10PRIMARY KEY,CREATE TABLE员工课程号CHAR8PRIMARY KEY,姓名VARCHAR20NOT NULL,工号INT PRIMARY KEY,课程名VARCHAR50NOT NULL,年龄INT身份证号CHAR18UNIQUE,学分DECIMAL3,1NOT NULL,;电子邮件VARCHAR50UNIQUE先修课程CHAR8;;参照完整性
7.3外键约束级联操作外键约束是维护参照完整性的主要机制外键是一个表中引用另一个表主键的属性或属性组合外键约束确级联操作定义了当被引用表(父表)中的主键发生变化时,引用表(子表)中相应外键的处理方式常见的保外键值要么与被引用表中的某个主键值相匹配,要么为NULL(如果允许)这种约束防止了数据库中出现级联操作包括悬浮指针,即引用不存在的实体•CASCADE(级联)自动更新或删除子表中对应的外键值在SQL中,使用FOREIGN KEY关键字定义外键约束•SET NULL将子表中对应的外键值设置为NULL•SET DEFAULT将子表中对应的外键值设置为默认值CREATE TABLE选课•RESTRICT/NO ACTION如果存在对应的外键值,则拒绝对父表的操作学号CHAR10,课程号CHAR8,在SQL中,级联操作可以在定义外键时指定成绩DECIMAL4,1,PRIMARY KEY学号,课程号,FOREIGN KEY课程号REFERENCES课程课程号FOREIGN KEY学号REFERENCES学生学号,ON DELETECASCADEFOREIGN KEY课程号REFERENCES课程课程号ON UPDATERESTRICT;用户定义完整性
7.41CHECK约束CHECK约束是一种用户定义的完整性约束,用于限制列的值范围或格式CHECK约束可以包含任何不引用其他表的布尔表达式当插入或更新数据时,系统会检查数据是否满足CHECK约束定义的条件,如果不满足,操作将被拒绝在SQL中,使用CHECK关键字定义检查约束CREATE TABLE学生学号CHAR10PRIMARYKEY,姓名VARCHAR20NOT NULL,性别CHAR1CHECK性别IN男,女,年龄INT CHECK年龄BETWEEN15AND50,电话VARCHAR15CHECK电话LIKE1[3-9]%;2触发器触发器是一种特殊的存储过程,它在特定事件(如插入、更新、删除)发生时自动执行触发器可以用来实现复杂的完整性规则,执行业务逻辑,维护数据一致性触发器可以定义为在操作前(BEFORE)或操作后(AFTER)执行,每行触发(FOR EACHROW)或一次触发(FOR EACHSTATEMENT)在SQL中,创建触发器的基本语法为CREATE TRIGGER触发器名{BEFORE|AFTER}{INSERT|UPDATE|DELETE}ON表名[FOR EACHROW]BEGIN触发器操作语句;END;3存储过程和函数存储过程和函数是数据库中预编译的SQL语句集合,它们可以接受参数,执行复杂的业务逻辑,并返回结果通过将完整性检查逻辑封装在存储过程中,可以实现集中式的数据验证和处理,确保所有应用程序都遵循相同的业务规则在操作数据前调用存储过程进行验证,可以实现比简单约束更复杂的完整性规则,如跨表检查、历史数据比对、复杂计算验证等存储过程还可以在出现错误时执行自定义的错误处理和恢复操作完整性控制机制
7.5预防性控制预防性控制是在数据操作前检查数据是否符合完整性约束,如果不符合则拒绝操作这是最常用的完整性控制方式,可以防止错误数据进入数据库在关系数据库中,预防性控制主要通过声明性约束(如主键、外键、CHECK等)和触发器实现预防性控制的优点是有效阻止不符合规则的数据,缺点是可能导致合法操作被错误拒绝,特别是在规则过于严格或业务逻辑复杂的情况下在实际应用中,预防性控制应该与用户界面验证和应用程序逻辑相结合,提供友好的错误提示和异常处理检测性控制检测性控制是在数据操作后检查数据是否符合完整性约束,如果发现违反约束的情况,则触发警报或记录日志,但不一定撤销操作这种方式适用于不便于即时检查或允许临时违反约束的场景检测性控制通常通过定期运行的检查程序、数据审计工具或AFTER触发器实现它的优点是不阻碍数据操作流程,缺点是可能导致数据库中存在不一致状态检测性控制常用于大批量数据加载、长时间事务处理或性能敏感的应用中更正性控制更正性控制是在检测到完整性问题后,自动进行修正或提供修正建议这种控制机制既不阻止操作,也不仅仅发出警报,而是主动尝试解决问题例如,当发现空值时自动填充默认值,当发现无效引用时自动创建相应记录更正性控制通常通过触发器、存储过程或专门的数据修复工具实现它的优点是能够维护数据的连续性和可用性,缺点是可能导致非预期的数据变更,需要谨慎设计和充分测试更正性控制在数据迁移、系统集成和数据仓库加载等场景中特别有用第八章并发控制并发控制是数据库系统中解决多用户同时访问共享数据时的相互干扰问题的技术当多个事务并发执行时,如果不加控制,可能导致数据不一致、丢失更新、读取脏数据等问题并发控制的目标是确保事务的正确执行,维护数据库的一致性,同时最大化系统的并发度和性能主流的并发控制技术包括基于锁的并发控制(封锁协议)、基于时间戳的并发控制、多版本并发控制(MVCC)和乐观并发控制等这些技术各有优缺点,适用于不同的应用场景在实际系统中,往往采用多种技术的组合来实现高效的并发控制并发控制与其他数据库功能如事务管理、恢复技术、完整性控制等密切相关,共同构成了数据库系统的可靠性和一致性保障机制随着分布式数据库和云数据库的发展,并发控制技术也在不断演进,以应对更大规模、更高并发的数据处理需求事务的概念
8.11事务的定义2事务的特性(ACID)事务是数据库操作的一个逻辑单位,包含一系列对事务具有四个基本特性,通常简称为ACID特性数据库的读写操作事务是数据库并发控制的基本•原子性(Atomicity)事务是不可分割的操单位,也是数据库恢复的基本单位一个事务可能作单位,要么全部执行,要么全部不执行包含一个或多个SQL语句,这些语句要么全部执行•一致性(Consistency)事务执行前后,数成功(提交),要么全部不执行(回滚),保持数据库从一个一致状态转变为另一个一致状态据库的一致性•隔离性(Isolation)事务的执行不受其他并发事务的影响,各事务间相互隔离•持久性(Durability)事务一旦提交,其结果应永久保存在数据库中,即使系统发生故障3事务的状态转换事务在生命周期中会经历多个状态•活动状态(Active)事务开始执行,但尚未完成•部分提交状态(Partially Committed)事务的最后一个操作已执行,但结果尚未写入数据库•提交状态(Committed)事务成功完成,结果已永久保存•失败状态(Failed)事务无法继续正常执行•中止状态(Aborted)事务已回滚,数据库恢复到事务执行前的状态并发操作带来的数据不一致性
8.2丢失修改丢失修改(Lost Update)问题发生在两个事务同时读取同一数据并修改它,然后其中一个事务的修改结果覆盖了另一个事务的修改结果例如,事务T1和T2同时读取账户余额100元,T1计算减去50元后写回50元,T2计算加上200元后写回300元,最终余额为300元,T1的修改被丢失不可重复读不可重复读(Non-repeatable Read)问题指的是在同一事务内,多次读取同一数据却得到不同的结果这通常是因为另一个事务在两次读取之间修改了该数据例如,事务T1读取员工工资为5000元,然后事务T2修改该员工工资为6000元并提交,之后T1再次读取同一员工工资时得到6000元,与第一次读取结果不同读脏数据读脏数据(Dirty Read)问题指的是一个事务读取了另一个事务未提交的修改如果那个事务最终回滚,则本事务读取的数据就是无效的脏数据例如,事务T1修改账户余额从1000元为2000元但未提交,事务T2读取余额得到2000元并据此做出决策,之后T1因为某种原因回滚,余额恢复为1000元,则T2的决策可能是错误的幻读幻读(Phantom Read)问题指的是在同一事务内,多次执行同一查询返回了不同的结果集这通常是因为另一个事务在两次查询之间插入或删除了满足查询条件的记录例如,事务T1查询工资大于5000元的员工有10人,然后事务T2插入一条工资为6000元的新员工记录并提交,之后T1再次执行同样的查询得到11人,似乎凭空多出了一条幻影记录封锁机制
8.3排他锁和共享锁锁的粒度活锁和死锁封锁是最常用的并发控制机制,它通过阻止其锁的粒度是指锁定的数据单位的大小常见的封锁机制可能导致的问题包括他事务访问被锁定的数据项来避免并发冲突锁粒度从小到大包括•活锁事务因无法获取所需的锁而不断重基本的锁类型包括•行锁锁定单个数据行,粒度最细,并发试,消耗系统资源但无法推进解决方案•排他锁(X锁,写锁)如果事务T对数据度高,开销大包括引入随机等待、优先级机制等项A加排他锁,则其他事务不能对A加任•页锁锁定一个数据页,通常是数据库的•死锁多个事务互相等待对方释放锁,形何锁,直到T释放锁排他锁用于修改操物理存储单位成循环等待,导致所有相关事务都无法继作•共享锁(S锁,读锁)如果事务T对数据•表锁锁定整个表,粒度粗,并发度低,续执行解决死锁的方法包括项A加共享锁,则其他事务可以对A加共开销小死锁预防通过事务请求资源的顺序限制等方享锁,但不能加排他锁,直到所有共享锁•数据库锁锁定整个数据库,极少使用式防止死锁发生释放共享锁用于读取操作锁粒度的选择是一种权衡粒度越细,并发度死锁检测系统定期检查锁依赖图是否存在环锁的兼容性规则多个事务可以同时对同一数越高,但锁开销也越大;粒度越粗,锁开销小,据项加共享锁(读-读兼容),但一旦有排他死锁解除一旦检测到死锁,选择一个牺牲但并发度也低现代数据库系统通常采用多粒锁,则不能再加其他任何锁(写-读、写-写都者事务回滚,打破循环等待度锁协议,根据操作特点自动选择合适的锁粒不兼容)度封锁协议
8.41一级封锁协议一级封锁协议要求事务T在修改数据项A前必须对A加排他锁,直到事务结束才释放它可以防止丢失修改现象,但不能避免脏读、不可重复读和幻读问题2二级封锁协议二级封锁协议在一级的基础上增加了读操作的约束事务T在读取数据项A前必须对A加共享锁,读完后即可释放共享锁它可以防止丢失修改和脏读,但不能避免不可重复读和幻读3三级封锁协议三级封锁协议在二级的基础上进一步要求事务T在读取数据项A前必须对A加共享锁,直到事务结束才释放它可以防止丢失修改、脏读和不可重复读,但仍不能完全避免幻读2PL两阶段锁协议两阶段锁协议是最常用的封锁协议,它将事务分为加锁阶段和解锁阶段,要求所有加锁操作都必须在解锁操作之前,即事务获得的锁只能在加锁结束后才能释放它可以保证可串行化封锁协议定义了事务获取和释放锁的规则,用于保证并发事务执行的正确性不同级别的封锁协议提供不同程度的隔离性和并发度,数据库系统通常允许用户根据应用需求选择合适的隔离级别在SQL标准中,定义了四种事务隔离级别,对应不同的封锁协议读未提交(Read Uncommitted)、读已提交(Read Committed,对应二级封锁协议)、可重复读(RepeatableRead,对应三级封锁协议)和可串行化(Serializable,通常使用两阶段锁协议实现)两阶段锁协议(2PL)可以进一步细分为严格两阶段锁协议(Strict2PL,所有锁都在事务结束时释放)和强两阶段锁协议(Rigorous2PL,排他锁在事务结束时释放,共享锁可以在事务执行期间释放)大多数数据库系统采用严格两阶段锁协议,它除了保证可串行化,还支持事务的回滚操作多版本并发控制
8.5MVCC的概念版本生成1MVCC通过维护数据的多个版本,使得读操作不阻塞写操每次写操作生成数据的新版本,保留旧版本,通过事务ID作,写操作不阻塞读操作2或时间戳标识不同版本垃圾回收版本可见性4定期清理不再需要的旧版本数据,回收存储空间,优化系根据事务开始时间和隔离级别,确定事务能够看到哪些版3统性能本的数据多版本并发控制(MVCC)是一种无锁并发控制机制,它通过维护数据的多个历史版本,允许并发事务同时操作同一数据项,从而提高系统的并发度和性能在MVCC中,读操作不会阻塞写操作,写操作也不会阻塞读操作,避免了传统锁机制中读写冲突导致的阻塞等待MVCC的实现原理是为每个数据项维护多个版本,每个版本都有时间戳或事务ID来标识当事务读取数据时,系统根据隔离级别和事务开始时间,返回合适的数据版本;当事务修改数据时,不覆盖原有数据,而是创建新版本这样,不同事务可以看到符合其隔离级别要求的数据快照,避免了并发冲突MVCC的优点包括提高并发度,特别是读多写少的场景;避免读写冲突,减少锁等待;支持读一致性,事务看到的是一个一致的数据快照缺点包括存储开销增加,需要维护多版本数据;实现复杂,特别是在处理事务冲突和垃圾回收方面;可能导致写-写冲突,通常需要结合其他并发控制机制使用主流数据库如Oracle、PostgreSQL、MySQL的InnoDB引擎都采用了MVCC技术第九章数据库恢复技术数据库故障恢复技术高可用性数据库系统在运行过程中可能遇到多种故障,数据库恢复技术是确保数据持久性和系统可现代数据库系统通常采用冗余设计、复制技包括事务故障、系统故障、介质故障和自然靠性的关键,主要包括日志技术、检查点技术和故障转移机制等手段,构建高可用性架灾害等不同类型的故障需要不同的恢复策术、备份恢复技术等这些技术共同构成了构,最大限度地减少故障对业务的影响,确略,从简单的事务回滚到完整的灾难恢复计数据库的安全保障体系,能够应对各种故障保系统的连续运行划场景数据库恢复概述
9.1事务故障1由于程序逻辑错误、并发控制冲突、违反完整性约束等导致事务无法正常完成系统故障2由于硬件故障、操作系统崩溃、电源故障等导致DBMS无法正常运行介质故障3由于磁盘损坏、头崩溃等导致存储介质上的数据部分或全部丢失自然灾害4由于火灾、洪水、地震等自然灾害导致整个数据中心无法正常运行数据库恢复是指在数据库遭遇故障或错误后,将数据库恢复到某个正确状态的过程数据库恢复的目标是确保数据库的一致性和完整性,避免数据丢失或损坏在发生故障时,已提交事务的结果应该得到保留,未提交事务的影响应该被消除恢复的基本原理是利用冗余信息来重建数据库的正确状态这些冗余信息主要包括日志文件(记录数据修改前后的值)和备份文件(数据库在某个时间点的完整副本)通过这些信息,数据库系统可以执行前滚操作(重做已提交的事务)和回滚操作(撤销未提交的事务)数据库恢复策略通常分为事务恢复(处理单个事务的故障)、系统恢复(处理DBMS或操作系统的故障)和介质恢复(处理存储介质的故障)不同级别的恢复需要不同的技术和操作,但都依赖于有效的日志记录和备份策略数据库备份
9.2完整备份完整备份是对整个数据库的完整复制,包括所有数据文件、日志文件和系统文件它提供了数据库在备份时刻的完整快照,是恢复过程的基础完整备份的优点是恢复简单、快速,但缺点是耗时长、占用存储空间大、频繁执行会影响系统性能完整备份通常在系统负载较低的时段进行,如晚间或周末根据数据库的重要性和变化频率,完整备份的周期可能是每天、每周或更长在实际应用中,完整备份通常与增量备份或差异备份结合使用,形成综合的备份策略增量备份增量备份只备份自上次任何类型备份以来发生变化的数据每次增量备份只包含最近一次备份(可能是完整备份或增量备份)以来的变化,所以备份速度快,占用空间小但是恢复时需要应用最近的完整备份和所有后续的增量备份,使得恢复过程较为复杂且容易受单个备份损坏的影响增量备份适合数据变化不大但需要频繁备份的场景常见的增量备份策略是每周一次完整备份,每天一次增量备份这样既保证了数据的安全性,又减少了备份的系统开销差异备份差异备份备份自上次完整备份以来发生变化的所有数据与增量备份不同,差异备份不考虑其他差异备份或增量备份,它总是相对于最近的完整备份差异备份的优点是恢复只需要最近的完整备份和最近的差异备份,恢复过程比增量备份简单;缺点是随着时间推移,差异备份会越来越大差异备份适合数据变化较大但又不需要非常频繁备份的场景常见策略是每周一次完整备份,每天一次差异备份这种策略在备份空间占用和恢复复杂度之间找到了平衡点日志文件
9.3日志的概念日志的类型日志的作用数据库日志是记录数据库所有更新操作的连续记录,它数据库系统中常见的日志类型包括日志在数据库系统中发挥多重作用包含足够的信息以重建或撤销这些操作日志是数据库•重做日志(Redo Log)记录事务对数据库的所•事务恢复通过重做和撤销操作,确保事务的原子恢复系统的核心组件,它为数据库提供了事务的原子性有更新操作,用于重建已提交事务的结果性和持久性和持久性保证在事务执行过程中,任何修改操作都会•撤销日志(Undo Log)记录事务修改前的数据•系统恢复在系统崩溃后,根据日志记录重建内存先写入日志,然后才会实际修改数据库,这种机制被称状态,用于撤销未提交事务的影响数据和恢复未完成的事务为预写日志(Write-Ahead Logging,WAL)•归档日志(Archive Log)已填满的日志文件的•介质恢复结合数据库备份和归档日志,恢复介质副本,存储在离线介质上,用于介质恢复故障后的数据库•二进制日志(Binary Log)记录所有修改数据•数据复制通过将日志发送到从服务器,实现数据库的操作,用于复制和时间点恢复复制和分布式数据库•时间点恢复允许将数据库恢复到过去任意时间点的状态检查点技术
9.4检查点的概念检查点的作用检查点的实现检查点是数据库运行过程中的一个时检查点技术主要有以下作用缩短系检查点的实现方式有多种定时检查间点,在这个点上,所有修改的缓冲统恢复时间,因为只需要处理最近一点,按照固定的时间间隔触发;事务区页面被强制写入磁盘,数据库的当个检查点之后的日志记录;减少日志数量检查点,当事务数量达到阈值时前状态信息被记录在特定的检查点记空间的使用,因为检查点之前的日志触发;日志体积检查点,当日志文件录中检查点的设置将数据库的逻辑可以被归档或删除;提高系统性能,大小达到阈值时触发;模糊检查点,状态和物理状态进行同步,确保数据通过均衡分配I/O操作,避免突发的大允许在检查点期间继续处理事务,减库的一致性量磁盘写入;简化恢复过程,使系统少系统停顿;非模糊检查点,在检查恢复更加可靠和高效点期间暂停事务处理,确保一致性检查点策略检查点策略的选择需要平衡恢复时间、系统性能和存储开销频繁的检查点可以减少恢复时间和日志空间使用,但会增加正常操作的开销;而检查点间隔过长则会导致恢复时间延长不同的数据库系统采用不同的检查点策略和优化技术,以适应特定的应用场景和性能需求课程总结实践应用1掌握数据库系统的实际应用能力,能够设计和实现数据库解决方案进阶技术2理解并发控制、安全机制和恢复技术等高级数据库概念核心操作3熟练掌握SQL语言,能够进行数据定义、查询和管理基本理论4掌握数据模型、关系理论和范式等数据库基础知识本课程系统地介绍了数据库系统的基本概念和核心技术,从数据管理技术的发展历程开始,详细讲解了数据模型、关系数据库理论、SQL语言、数据库设计方法、数据库安全性、完整性、并发控制和恢复技术等内容通过学习,你应该已经对数据库系统有了全面的认识,掌握了数据库设计和使用的基本技能在今后的学习和工作中,建议继续深入研究特定数据库管理系统的高级特性,如索引优化、查询性能调优、分布式数据库技术等同时,关注新兴的数据库技术,如NoSQL数据库、NewSQL、图数据库、时序数据库等,以适应大数据时代的技术需求实践是掌握数据库技术的关键,建议多动手实现数据库应用,解决实际问题推荐阅读的参考资料包括《数据库系统概念》(Abraham Silberschatz等著)、《数据库系统实现》(Hector Garcia-Molina等著)、《SQL必知必会》(Ben Forta著)以及各主流数据库管理系统的官方文档和技术社区资源希望本课程为你的数据库学习之旅奠定了良好的基础!。
个人认证
优秀文档
获得点赞 0