还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库技术欢迎学习数据库技术课程!本课程将系统地介绍数据库系统的基本概念、设计原理和实现技术,帮助您掌握数据库系统的核心知识和应用技能在信息技术高速发展的今天,数据库已成为组织和管理海量数据的关键工具通过本课程的学习,您将了解各类数据库模型,掌握SQL语言,学会设计和优化数据库系统,为未来的学习和工作奠定坚实基础让我们一起探索数据的世界,掌握管理和利用数据的技术与艺术!课程目标与内容概述理论学习掌握数据库系统的基本概念、原理和方法,包括数据模型、关系理论、SQL语言等核心知识点实践能力学习数据库设计方法,能够独立完成数据库的概念设计、逻辑设计和物理设计,并进行优化技术应用掌握SQL语言的应用,能够进行数据定义、数据操作和数据查询,并了解高级特性如存储过程、触发器等系统管理了解数据库安全性、完整性、并发控制和恢复技术等管理知识,具备数据库系统维护能力第一章数据库系统概述数据处理阶段1从手工文件系统、电子文件系统到数据库系统,数据处理经历了三个主要阶段,每个阶段都有其特点和局限性数据库定义2数据库是长期存储在计算机内、有组织的、可共享的大量数据集合,用于描述现实世界中的各种实体及其联系系统组成3数据库系统由数据库、数据库管理系统、应用程序和数据库管理员组成,各部分协同工作确保系统高效运行数据库系统的基本概念数据数据是数据库中存储的基本对象,是描述事物的符号记录数据可以是文字、数字、图像、声音等多种形式数据库数据库是长期存储在计算机内、有组织、可共享的大量数据集合,具有统一管理和控制的特点数据库管理系统数据库管理系统是位于用户与操作系统之间的一层数据管理软件,是用户和数据库之间的接口数据库系统数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的集合体,是一个完整的数据管理环境数据库管理系统()的DBMS功能数据定义功能1提供数据定义语言DDL,定义数据库中的数据对象(如表、视图、索引)的结构和特征,并将定义好的数据对象放入数据字典中数据操纵功能2提供数据操纵语言DML,实现对数据库中数据的基本操作,如查询、插入、删除和修改数据控制功能3提供数据控制语言DCL,进行数据库的安全性控制、完整性控制和并发控制,确保数据的安全和一致性数据库恢复功能4在数据库遭到破坏时,能够恢复数据库到正确状态,最大限度地减少数据丢失,确保数据库的可靠运行数据库系统的特点数据独立性强数据共享性高应用程序与数据的物理存储分离,减2多个用户和应用程序可以同时访问数1少了相互影响据库中的数据数据一致性好避免数据冗余和不一致,保证数据3数据完整性强的准确性5数据安全性高通过完整性约束确保数据符合预定义4的规则提供完善的安全保障机制,防止未授权访问数据库系统还具备故障恢复能力,当系统发生故障时,DBMS能够将数据库恢复到正确状态,最大限度减少数据丢失此外,良好的数据库系统还提供高效的数据查询和处理性能,满足各类应用场景的需求数据库技术的发展历程年代早期11960层次模型和网状模型数据库系统出现,如IBM的IMS和CODASYL的DBTG系统,主要应用于大型机环境年代21970关系数据库理论提出,E.F.Codd发表《关系数据库模型》论文,奠定了关系数据库的理论基础,随后出现了System R和Ingres等早期系统年代31980商用关系数据库系统广泛应用,如Oracle、DB
2、SQL Server等,SQL语言成为标准,分布式数据库技术开始发展年代至今41990面向对象数据库、NoSQL数据库、NewSQL数据库相继出现,大数据技术兴起,云数据库服务普及,数据库技术向多样化、智能化方向发展第二章数据模型用户视图1外部模式(用户视图)概念模型2概念模式(全局视图)物理存储3内部模式(存储视图)数据模型是对现实世界数据特征的抽象,是数据库系统的核心和基础它定义了数据库中数据的组织方式、操作方法和完整性约束条件通过三级模式架构,数据模型实现了数据的物理独立性和逻辑独立性不同类型的数据模型适用于不同的应用场景在本章中,我们将详细学习各种数据模型的特点、表示方法和应用场景,掌握数据抽象和建模的基本方法数据模型的概念概念数据模型逻辑数据模型物理数据模型面向用户,表示现实世界的概念和联面向DBMS,是概念模型向特定DBMS面向存储设备,描述数据在计算机中系,与具体DBMS无关,常用E-R模型的映射,如关系模型、网状模型、层的组织方式和存取方法,包括存储结表示它提供了一种抽象工具,便于次模型等它定义了数据库中数据的构和访问方法它关注数据的实际存设计人员与用户交流,描述现实世界逻辑结构,以及这些数据间的联系和储形式和高效访问机制的概念框架操作规则实体关系模型(模型)-E-R实体联系属性现实世界中可区别于其他对象的事物,如实体之间的关联,表示不同实体间的相互实体的特性或性质,如学生的姓名、年龄学生、课程、教师等每个实体由若干属作用,如选课关系联系了学生和课程联等属性可分为简单属性、复合属性、单性描述,如学生实体包含学号、姓名、性系可分为一对
一、一对多、多对多三种基值属性、多值属性、派生属性等类型别、年龄等属性本类型关系模型关系属性关系模型中的基本概念,是一个二维表格,由行(元组)和列(属关系的列,表示实体的某一特性每个属性都有一个名称和对应的性)组成例如学生关系包含多个学生记录,每条记录有学号、姓取值范围(域)属性值必须是原子的,不可再分名等属性元组关键字关系的行,表示一个实体的所有属性值的集合元组的顺序不重要能唯一标识元组的属性集合称为关键字主键是被选中用于标识元,但每个元组必须是唯一的组的关键字,外键是另一个关系的主键,用于建立关系间的联系面向对象数据模型对象与对象标识1每个对象都有唯一的标识符(OID),与对象的属性值无关,能够唯一识别对象,即使其属性值发生变化对象包含状态(属性)和行为(方法)两部分类与继承2类是具有相同属性和方法的对象的集合,定义了对象的结构和行为继承允许一个类(子类)继承另一个类(父类)的属性和方法,形成类的层次结构封装与消息传递3封装将数据和操作数据的方法绑定在一起,隐藏内部实现细节对象间通过消息传递进行通信,一个对象调用另一个对象的方法时实际上是向其发送消息多态性4多态性允许不同类的对象对同一消息作出不同的响应通过方法重载和方法覆盖实现,增强了代码的灵活性和可扩展性第三章关系数据库关系数据库的理论基础关系数据库的优势本章学习内容关系数据库基于关系代数和关系演算相比其他数据库模型,关系数据库具本章将详细介绍关系数据结构、关系等严格的数学理论,提供了系统的方有较高的数据独立性、简单统一的数的完整性约束、关系代数操作和关系法来组织和操作数据其核心理念是据结构、强大的查询能力和完善的完演算等基本概念和理论,为后续学习将数据表示为关系(二维表),通过整性约束机制这些特点使其成为主SQL语言和数据库设计奠定基础关系操作实现数据处理流的数据库系统类型关系数据结构概念数学定义数据库术语关系笛卡尔积的子集表Table元组关系中的元素行Row属性域的名称列Column码唯一标识元组的属性集键Key基数元组的数量表中的行数度属性的数量表中的列数关系数据结构基于集合论,将数据组织为表的形式每个表代表一种实体类型,表中的每一行代表一个实体实例,每一列代表实体的一个属性关系模式是关系的结构,表示为RA1,A2,...,An,其中R是关系名,A1,A2,...,An是属性集合关系的完整性约束实体完整性主键不能为空值NULL,确保每个实体有唯一标识例如,学生表中的学号作为主键,必须非空且唯一,以便准确识别每个学生参照完整性外键要么为空值,要么必须是另一个关系中存在的主键值例如,选课表中的学号必须在学生表中存在,确保选课记录对应到有效的学生用户定义完整性满足特定应用环境需求的约束条件如年龄必须为正整数,性别只能是男或女,成绩范围在0-100之间等特定业务规则关系代数操作传统的集合运算并∪、交∩、差-和笛卡尔积×等基本集合操作,用于处理完整关系例如,男学生并女学生得到所有学生,计算机系学生交数学系学生得到双学位学生专门的关系运算⋈选择σ、投影π、连接、除÷等特有操作,用于处理关系内部结构例如,选择操作选出满足条件的元组,投影操作选出特定属性列组合运算基本运算的组合可实现复杂查询如先选择后投影可获取符合条件的特定属性值,多表连接操作可从多个关系中获取关联数据关系演算元组关系演算域关系演算与关系代数的比较以元组变量作为基本处理单位,用谓以域变量作为基本处理单位,域变量关系代数是过程性语言,指定如何获词逻辑公式描述查询条件形式如的取值范围是某个属性的定义域形得结果;关系演算是非过程性语言,⟨⟩{t|Pt},表示满足谓词P的所有元组t式如{x1,x2,...,xn|Px1,x2,只指定结果的性质两种方式在表达的集合典型系统如QUEL语言基于元...,xn},表示满足谓词P的所有属性能力上是等价的,可以相互转换组演算值组合QBE查询语言基于域演算SQL语言结合了两者特点第四章语言SQL数据定义DDL1创建、修改、删除数据库对象数据操纵DML2插入、更新、删除数据数据查询DQL3查询和检索数据数据控制DCL4管理数据库访问权限SQL(Structured QueryLanguage,结构化查询语言)是关系数据库的标准语言,最初由IBM研究实验室开发,后成为ANSI和ISO标准作为一种非过程性语言,SQL允许用户指定需要的结果,而不必指定获取结果的具体步骤SQL语言的特点包括高度非过程化、面向集合的操作方式、语言简洁易学、多种使用方式(可交互使用,也可嵌入程序)以及强大的数据处理能力本章将详细介绍SQL语言的各个组成部分及其应用语言概述SQL发展历史1SQLSQL源于IBM的System R项目,最初名为SEQUEL1986年成为ANSI标准,1987年成为ISO标准,之后经历了SQL-
89、SQL-
92、SQL:
1999、SQL:
2003、SQL:
2008、SQL:2011等多个版本的发展,不断增加新特性语言特点2SQLSQL是一种非过程化语言,用户只需指定需要的结果,由系统决定如何获取它既可作为独立语言使用,也可嵌入其他程序语言SQL操作对象是集合,一次操作可处理多条记录使用方式3SQL交互式使用直接输入SQL语句获取结果;嵌入式使用SQL语句嵌入高级语言程序;动态SQL程序执行过程中动态生成SQL语句;存储过程预编译的SQL语句集合数据定义语言()DDL数据库操作表操作索引操作CREATE DATABASECREATE TABLE创建CREATE INDEX创建创建数据库,指定名表,定义列名、数据索引,提高查询效率称和特性;ALTER类型和约束;ALTER;DROP INDEX删除DATABASE修改数据TABLE修改表结构,索引;ALTER库参数;DROP如添加、修改或删除INDEX修改索引属性DATABASE删除整个列;DROP TABLE删索引是提高查询性数据库,包括其中所除表及其全部数据;能的重要手段,但会有对象和数据TRUNCATE TABLE影响数据修改的效率清空表中数据但保留表结构数据操纵语言()DML语句语句INSERT UPDATE向表中插入新行数据可以插入修改表中已有数据可以更新一单行,如INSERT INTO行或多行数据的一个或多个列值Students VALUES1,张三,20,如UPDATE Students SET age;也可以插入多行,或者插入查=age+1WHERE dept=计算机询结果,如INSERT INTO系,为计算机系所有学生年龄加Students SELECT*FROM1NewStudents语句DELETE删除表中符合条件的行如DELETE FROM Students WHEREscore60删除成绩不及格的学生记录如果不带WHERE子句,则删除表中所有行,但保留表结构数据查询语言()DQL基本查询结构1SELECT语句的基本形式SELECT列名FROM表名WHERE条件GROUP BY分组HAVING分组条件ORDER BY排序每个子句有特定功能,共同完成复杂数据查询单表查询2从单一表中检索数据,可使用各种条件约束、排序和聚合函数如SELECT name,MAXscore FROMStudents GROUP BY class能找出每个班级的最高分学生多表连接查询3连接多个表获取关联数据,包括内连接、外连接等如SELECT s.name,c.course_name FROMStudents s JOIN Courses c ON s.id=c.student_id查询学生选修的课程子查询4查询中嵌套查询,内层查询结果用于外层查询如SELECT name FROM StudentsWHEREdept_id INSELECT idFROM DepartmentsWHERE location=主校区查询主校区所有学生数据控制语言()DCL命令命令1GRANT2REVOKE授予用户或角色特定的权限,如数撤销先前授予的权限例如据库对象的查询、修改、删除权限REVOKE INSERT ON Students等例如GRANT SELECT,INSERT FROM user1撤销user1对学生表的ON Students TO user1允许user1插入权限当使用CASCADE选项查询和插入学生表数据;GRANT时,会同时撤销依赖于该权限的所也可以授予WITH GRANTOPTION有权限;使用RESTRICT选项则只选项,使被授权者能够将权限传递在没有依赖权限时才执行撤销操作给其他用户角色管理3创建角色并为角色分配权限,再将角色授予用户,简化权限管理例如CREATE ROLEteacher;GRANT SELECTON ALLTABLES TOteacher;GRANTteacher TOuser1,user2创建教师角色并赋予相应权限高级查询SQL集合操作UNION、INTERSECT和EXCEPT操作实现查询结果的并、交和差运算如SELECT idFROM StudentsUNIONSELECT idFROM Teachers获取所有学生和教师的ID集合,去除重复项UNION ALL则保留重复项嵌套查询在WHERE或HAVING子句中使用子查询,可用IN、EXISTS、ANY、ALL等操作符如SELECT nameFROMStudents WHEREscoreALL SELECTavg_score FROMClass_Stats查询成绩超过所有班级平均分的学生公共表表达式CTE使用WITH子句定义临时命名结果集,简化复杂查询如WITH HighScoresAS SELECT*FROM StudentsWHEREscore90SELECT dept,COUNT*FROM HighScoresGROUPBYdept统计各系高分学生人数窗口函数在结果集分组上执行计算,如ROW_NUMBER、RANK、DENSE_RANK等排名函数,以及窗口聚合函数如SELECT name,score,RANK OVERPARTITION BYdept ORDERBY scoreDESC ASrank FROMStudents对各系学生按分数排名存储过程和触发器存储过程函数触发器存储过程是一组预编译的SQL语句集数据库函数是一种特殊的存储过程,触发器是在表上特定事件INSERT、合,可以接收参数、执行操作并返回必须返回一个值可以在SQL语句中UPDATE、DELETE发生时自动执行结果它们存储在数据库中,可重复直接调用,如SELECT、WHERE子句的特殊存储过程可用于实现复杂的调用,减少网络传输,提高执行效率中自定义函数扩展了SQL的功能,数据完整性规则、审计跟踪、同步数典型应用包括复杂业务逻辑处理、可以实现复杂的计算和数据处理据等功能触发器可以在事件前数据验证和权限控制等BEFORE或事件后AFTER触发,作用于每行或整个语句第五章数据库设计概念设计需求分析2建立E-R模型1收集和分析用户需求逻辑设计3转换为关系模型5实施与维护物理设计系统实现和持续优化4确定物理存储结构数据库设计是创建数据库的过程,目标是建立一个既满足用户需求又具有良好性能的数据库系统良好的数据库设计能够减少数据冗余、避免数据不一致性、提高查询效率、适应需求变化和保障数据安全本章将系统介绍数据库设计的各个阶段,包括需求分析、概念结构设计、逻辑结构设计、物理结构设计以及规范化理论在数据库设计中的应用数据库设计概述设计目标1数据库设计的主要目标是创建满足用户需求的数据库,确保数据的正确性、一致性和完整性,同时提供高效的数据访问和良好的数据安全性设计应考虑当前需求,也要预见未来可能的扩展设计原则2遵循数据独立性原则,将应用程序与数据分离;确保数据冗余最小化,减少数据不一致风险;支持多用户并发访问;提供充分的数据完整性约束;考虑数据安全和恢复机制设计挑战3数据库设计面临的主要挑战包括需求不明确或经常变化;数据量大且结构复杂;性能与易用性平衡;安全与可访问性平衡;兼顾现有系统与新系统的集成等设计方法4可采用自顶向下或自底向上的设计方法自顶向下从全局视图开始,逐步细化;自底向上从基本数据项开始,逐步集成实际设计通常结合两种方法,并采用迭代式开发策略需求分析需求规格说明书功能需求分析数据需求分析将收集和分析的需求形成正式文档用户需求收集明确系统需要支持的业务功能和操,作为后续设计的依据需求规格分析系统需要处理的数据项,确定作,包括查询、报表、数据输入输说明书应清晰、完整、无歧义,并通过访谈、问卷调查、观察、文档数据的来源、结构、格式、约束条出等分析各类用户的操作频率、获得用户确认分析等方法收集用户需求需要了件、数量级和增长趋势确定数据并发量、响应时间要求等性能因素解组织的业务流程、管理规则、数实体、属性及其关系,形成初步的据处理需求以及未来发展方向,确数据字典保所设计的数据库能满足实际应用需求概念结构设计实体确定属性定义联系建模识别系统中的实体类型,如学校数据库为每个实体定义属性,确定属性的类型确定实体间的联系类型(一对
一、一对中的学生、教师、课程、班级等实体、长度、约束条件等区分简单属性和多、多对多),明确联系的约束条件和确定每个实体的关键属性和其他属性,复合属性,单值属性和多值属性,基本属性考虑联系的可选性(必要联系或明确实体间的联系属性和派生属性可选联系)和基数比逻辑结构设计概念模型转换将E-R模型转换为关系模型,制定转换规则实体转换为关系表,属性转换为表的列,一对多联系通过外键实现,多对多联系通过中间表实现关系模式重构对初步形成的关系模式进行优化和重构,消除冗余、减少空值、避免异常应用规范化理论,确保关系模式具有适当的范式级别,通常达到第三范式或BCNF完整性约束设计设计主键约束、外键约束、非空约束、唯一性约束、检查约束等,确保数据的完整性和一致性考虑参照完整性的处理策略,如级联更新、级联删除等视图设计根据用户需求设计适当的视图,简化用户操作,提高数据安全性视图可隐藏复杂的查询逻辑,也可限制用户只能看到授权的数据子集物理结构设计存储结构设计1根据DBMS特性和数据特点,选择适当的数据存储方式决定表的存储位置、存储参数、行格式、页结构等考虑数据量和访问模式,优化物理布局提高性能索引设计2确定需要建立索引的字段,选择索引类型(如B+树、哈希、全文等)索引设计需权衡查询性能与维护开销,常在高频查询条件、外键、排序字段上建立索引分区设计3对大表考虑分区策略,如范围分区、列表分区、哈希分区等分区可改善大表的管理和查询性能,便于数据的加载、备份和删除操作物理参数调优4根据系统性能需求,调整DBMS的物理参数,如缓冲区大小、排序区大小、并发连接数等通过测试和监控,不断优化参数配置规范化理论第一范式1NF关系中的所有属性都是原子的,不可再分消除重复组,确保每个属性只包含单一值例如,将地址拆分为省份、城市、街道等原子属性第二范式2NF满足1NF,且所有非主属性完全依赖于主键消除非主属性对主键的部分依赖例如,在选课表中,成绩依赖于学号和课程号的组合,而课程名仅依赖于课程号,应将课程名分离到课程表中第三范式3NF满足2NF,且所有非主属性不传递依赖于主键消除非主属性对主键的传递依赖例如,在学生表中,系主任依赖于系名,系名依赖于学号,应将系主任和系名分离到系部表中范式BC BCNF满足3NF,且所有决定因素都是候选键更严格地消除属性间的依赖关系,解决3NF中的某些异常例如,当一个表有多个候选键,且这些候选键之间存在依赖关系时,需要进一步分解第六章数据库完整性与安全性应用层安全1应用程序级别的控制机制安全机制DBMS2数据库系统提供的安全功能操作系统安全3底层系统提供的安全保障物理安全4硬件和环境的物理防护数据库完整性确保数据的准确性和一致性,防止数据被错误修改或破坏完整性约束包括实体完整性、参照完整性和用户定义完整性等,通过各种机制实现这些约束数据库安全性保护数据免受非授权访问、修改和破坏安全机制包括身份认证、访问控制、审计跟踪、数据加密等多重防护手段本章将详细介绍数据库完整性与安全性的基本概念、实现机制以及管理策略数据库完整性概述完整性的概念完整性约束分类数据库完整性是指数据的正确性、一致性和可靠性,确保数据库中存储按约束的作用对象分域完整性、实体完整性、参照完整性和用户定义的数据符合现实世界的规则和约束完整性是数据质量的基础,对数据完整性按实现方式分声明式完整性约束(通过DBMS定义)和程序库系统的正常运行至关重要式完整性约束(通过应用程序实现)完整性控制方法完整性实现机制预防性控制在数据操作前检查,阻止违反约束的操作;检测性控制通过数据类型、非空约束、默认值、主键约束、外键约束、唯一性约束定期检查数据,发现完整性问题;纠正性控制修复违反完整性的数据、检查约束、断言、触发器等多种机制实现完整性控制,保障数据的正,恢复数据一致性确性和一致性实体完整性实体完整性的概念实体完整性的实现替代键的管理实体完整性规则要求关系的主键不能在CREATE TABLE语句中通过除主键外,表中可能有其他的候选键取空值,且必须唯一这确保了每个PRIMARY KEY约束定义主键,如(替代键),如学生表中的学号和身实体实例都能被唯一标识,是数据库CREATE TABLEStudents id INT份证号都可唯一标识学生可通过完整性的基础主键可以是单个属性PRIMARY KEY,name VARCHAR50UNIQUE约束实现替代键的唯一性控,也可以是多个属性的组合(复合主DBMS会自动为主键创建唯一索引制,如ALTER TABLEStudents ADD键),并强制非空约束可以在创建表时CONSTRAINT uk_idcard UNIQUE定义主键,也可以通过ALTER TABLEidcard语句后续添加参照完整性参照完整性的概念参照完整性的实现参照完整性维护策略参照完整性规则确保关系通过FOREIGN KEY约束定之间的引用有效外键的义外键,如CREATE当被参照表的主键发生变值要么为空,要么必须是TABLE Enrollments化时,外键的处理策略包被参照表中存在的主键值student_id INT括级联更新CASCADE这保证了关系数据库中REFERENCES、设置为空SET NULL、表之间的关联一致性,防Studentsid,course_id设置为默认值SET止出现孤立的记录INT REFERENCESDEFAULT、限制操作Coursesid或者使用RESTRICT/NO ACTIONALTER TABLE语句添加外例如FOREIGN KEY键约束ALTERTABLEdept_id REFERENCESEnrollmentsADD DepartmentsidONCONSTRAINT DELETECASCADE ONfk_student FOREIGNUPDATE CASCADEKEYstudent_idREFERENCESStudentsid用户定义完整性字段约束1限制字段值的范围或格式,如CHECK约束限制年龄在合理范围CREATE TABLEStudentsidINTPRIMARY KEY,name VARCHAR50,age INTCHECK age=0ANDage=120DEFAULT约束为字段指定默认值CREATE TABLEOrders order_dateDATE DEFAULTCURRENT_DATE触发器实现2通过触发器实现复杂的完整性规则,触发器在数据变更前或后自动执行预定义的操作例如,确保学生总成绩与各科成绩之和一致CREATE TRIGGERupdate_total_scoreAFTER INSERTON ScoresFOR EACHROW UPDATEStudentsSETtotal_score=total_score+NEW.score WHEREid=NEW.student_id存储过程验证3使用存储过程集中实现数据验证逻辑,应用程序通过调用存储过程操作数据,确保数据一致性例如,创建添加学生的存储过程,其中包含各种验证规则CREATEPROCEDURE add_studentid INT,name VARCHAR50,...应用级控制4在应用程序中实现数据验证和完整性控制这种方式灵活度高,但需要在所有访问数据库的应用中一致实现,否则可能导致完整性问题通常与数据库级控制结合使用,形成多层次的完整性保障数据库安全性概述访问控制身份认证2限制用户对数据的访问权限1验证用户身份的合法性数据加密3保护敏感数据不被非法读取5备份恢复审计跟踪防止数据丢失并确保可恢复4记录和监控数据库操作数据库安全是保护数据库系统中的数据免受非授权的查看、修改或破坏的措施总和随着数据价值的不断提升和网络威胁的增加,数据库安全显得尤为重要安全威胁可能来自内部(如员工误操作、内部人员恶意行为)或外部(如黑客攻击、网络入侵)完善的数据库安全策略应综合考虑技术手段和管理措施,建立多层次的防护体系,实现深度防御访问控制自主访问控制DAC1由数据所有者控制访问权限,可授予或撤销其他用户的权限强制访问控制MAC2基于安全策略控制访问,用户和数据都有安全级别基于角色的访问控制RBAC3基于用户角色分配权限,简化权限管理访问控制是数据库安全的核心机制,确保用户只能访问其被授权的数据和执行被授权的操作在实际应用中,通常综合使用多种访问控制模型,根据系统特点和安全需求选择合适的控制策略SQL中通过GRANT和REVOKE语句实现访问控制例如,GRANT SELECT,INSERTON StudentsTOuser1WITH GRANTOPTION授予user1查询和插入学生表的权限,并允许其将权限传递给其他用户;REVOKE INSERTONStudentsFROMuser1撤销user1的插入权限视图机制数据隐藏简化查询强化安全视图可隐藏表中的敏感视图可封装复杂查询,通过创建带有WHERE列或行,只显示用户有简化用户操作对于经条件的视图,实现行级权访问的数据例如,常使用的多表连接查询安全控制例如,各部创建不包含薪资信息的,可创建视图门经理只能看到本部门员工视图CREATE CREATEVIEW员工CREATE VIEWVIEWStudent_Course ASDept_Employees ASEmployee_Public ASSELECT s.name,SELECT*FROMSELECT id,name,c.course_nameFROMEmployees WHEREdeptFROMStudentssJOINdept_id=Employees,使普通用Enrollments eONs.id USER_DEPT结合户无法看到薪资数据=e.student_id JOINGRANT语句,可精确CoursescON控制用户权限e.course_id=c.id第七章数据库恢复技术数据库恢复的意义恢复机制的基本原理恢复策略分类数据库恢复是指在系统出现故障后,数据库恢复机制基于冗余数据,主要根据恢复的范围和方式,恢复策略可将数据库恢复到某一正确状态的技术包括日志文件、数据库转储(备份)分为事务恢复(撤销或重做单个事务和过程由于硬件故障、软件错误、和检查点技术日志记录数据库的更)、系统恢复(恢复整个数据库系统人为操作失误或自然灾害等原因,数新操作,备份保存数据库的完整副本)、介质恢复(恢复损坏的存储介质据库可能发生损坏或数据丢失,需要,检查点标记数据库的一致状态点,)等不同类型的故障需要采用不同通过恢复技术保证数据库的可靠性和三者结合实现数据库的高效恢复的恢复策略可用性事务的概念与特性原子性Atomicity事务是不可分割的操作单元,要么全部执行成功,要么全部不执行例如,银行转账事务必须确保扣款和入账操作要么都成功,要么都不执行,避免出现只扣款不入账的情况一致性Consistency事务执行前后,数据库必须保持一致状态所有的完整性约束(如主键、外键、CHECK约束等)在事务完成后必须得到满足,例如库存不能为负数,账户余额必须平衡等隔离性Isolation多个事务并发执行时,一个事务的执行不应影响其他事务例如,两个用户同时修改同一条数据时,系统要确保他们的操作相互隔离,不会互相干扰持久性Durability事务一旦提交,其对数据库的修改就是永久的,即使系统发生故障也不会丢失例如,银行确认转账成功后,即使系统立即崩溃,重启后转账记录也不会丢失数据库故障分类事务故障系统故障12由于程序逻辑错误、数据输入错误、死锁等原因导致单个事务无法正常由于操作系统崩溃、断电等原因导致的数据库系统非正常停止例如,完成例如,程序中的除零错误、违反完整性约束的操作,或与其他事服务器突然断电、数据库管理系统崩溃等系统故障会导致内存中的数务发生死锁而被系统选为牺牲者事务故障通常只需撤销该事务的所有据丢失,但存储介质上的数据通常不受影响恢复时需撤销未完成事务操作并重做已提交事务介质故障计算机病毒和黑客攻击34存储介质的物理损坏导致数据库文件损坏或丢失例如,硬盘损坏、磁恶意程序或未授权访问导致的数据库损坏或数据泄露例如,勒索软件盘被误格式化、自然灾害导致的设备损毁等介质故障最为严重,通常加密数据库文件、SQL注入攻击修改或删除数据等需结合安全防护措需要利用数据库备份和归档日志进行恢复,可能导致部分数据永久丢失施和备份恢复策略应对,可能需要进行法律鉴定和安全审计恢复的基本原理数据冗余保存数据的多个副本,包括数据库转储(完整备份、增量备份、差异备份)和日志文件(记录所有更新操作的前像和后像)冗余数据存储在不同的物理位置,以防止介质故障导致的数据丢失恢复操作利用冗余数据执行撤销UNDO和重做REDO操作UNDO使用日志记录的前像将数据库恢复到事务执行前的状态;REDO使用日志记录的后像重新执行已提交事务的操作,恢复事务执行后的结果恢复策略不同故障类型采用不同恢复策略事务故障仅撤销该事务的操作;系统故障撤销未完成事务,重做已提交事务;介质故障先恢复最近的备份,再利用日志进行前滚恢复检查点技术检查点概念检查点的作用检查点类型检查点是数据库运行过程中的一个时间点,此缩小恢复范围系统发生故障时,只需从最近缓冲型检查点仅将日志缓冲区写入磁盘,不时系统将内存中的所有脏数据(已修改但未写的检查点开始恢复,而非从数据库启动时开始影响数据缓冲区,对系统性能影响小非缓冲入磁盘的数据)写入磁盘,并在日志中记录检减少日志空间检查点之前的日志记录可被型检查点将所有脏数据和日志缓冲区都写入查点标记检查点将数据库状态保存到持久存安全删除(前提是已备份)平衡系统性能磁盘,系统暂停所有事务处理,对性能影响大储介质,形成一个一致性的状态快照适当设置检查点频率可平衡正常操作性能和恢但恢复更简单模糊检查点允许在写检查点复时间期间继续处理事务,减少系统暂停时间日志文件日志的概念和作用日志的类型日志管理策略日志是记录数据库变更操作的文件,物理日志记录数据块级别的变化,写前日志WAL事务修改的数据写包含足够的信息用于恢复数据库每如在数据页X的偏移量Y处将值Z1改入磁盘前,必须先将相应的日志记录条日志记录通常包括事务标识、操为Z2,恢复速度快但体积大逻辑写入持久存储,确保系统故障时能够作类型、受影响的数据项、操作前值日志记录逻辑操作,如将表T中主恢复日志循环日志文件达到一定(前像)、操作后值(后像)、时间键为K的记录的字段F值由V1改为V2大小后开始循环使用,已归档的部分戳等日志是数据库恢复的核心机制,体积小但恢复复杂混合日志结可被覆盖日志归档定期将日志备,确保事务的原子性和持久性合两种方式的优点,是现代数据库系份到离线存储,用于介质恢复和时间统常用的方式点恢复第八章并发控制并发问题并发控制12多事务同时执行导致的数据不一致确保事务隔离性和数据一致性性能优化锁机制43平衡并发度和数据一致性控制对数据对象的访问顺序并发控制是数据库管理系统的核心功能之一,确保多个事务并发执行时不会相互干扰,保持数据的一致性没有适当的并发控制,多个用户同时操作数据库可能导致数据不一致、丢失更新、读取未提交数据等问题本章将系统介绍并发操作可能引发的问题,以及解决这些问题的各种并发控制技术,包括封锁机制、封锁协议、死锁处理和多版本并发控制等通过合理的并发控制策略,数据库系统能够在保证数据正确性的同时,提供较高的并发性能并发操作问题丢失更新脏读不可重复读幻读两个事务T1和T2先后读取同事务T1修改了数据项X,事事务T1两次读取同一数据项事务T1两次执行同一查询,一数据项,然后都基于读取务T2在T1提交或撤销前读取X,在两次读取之间,事务返回的结果集不同在两次的值进行修改,T2的更新覆了X,如果T1最终撤销,T2T2修改了X的值并提交,导查询之间,事务T2插入或删盖了T1的更新,导致T1的修读取的将是不存在的数据致T1两次读取的结果不同除了满足查询条件的行并提改丢失例如,两个银行柜例如,一个事务看到了另一例如,在生成报表的过程中交例如,事务在统计学生员同时为一个账户存款,可个未提交事务的修改,而该,同一数据被其他事务修改人数时,其他事务添加了新能导致一笔存款被忽略修改最终被回滚,导致报表数据不一致学生,导致统计结果不准确封锁机制读锁共享锁锁,S多个事务可同时持有同一数据项的读锁,允许并发读取但阻止写入事务T1对数据项X加读锁后,其他事务仍可对X加读锁,但不能加写锁,确保T1读取的数据不会被其他事务修改写锁排它锁锁,X同一时刻只允许一个事务持有数据项的写锁,排斥其他事务的读锁和写锁事务T1对数据项X加写锁后,其他事务不能对X加任何类型的锁,确保T1独占X,防止并发修改和脏读锁的粒度锁可应用于不同粒度的数据对象数据库锁、表锁、页锁、行锁、字段锁等粒度越大,系统开销越小但并发度越低;粒度越小,并发度越高但系统开销越大,需根据应用特点选择合适的锁粒度锁的兼容性不同类型锁之间的兼容关系决定了并发执行的可能性读锁与读锁兼容,读锁与写锁不兼容,写锁与任何锁都不兼容通过锁兼容性矩阵可清晰表示各类锁之间的关系,指导锁管理器的决策封锁协议一级封锁协议1事务T必须在修改数据项X前对X加写锁,并持有到事务结束防止丢失更新,但不能避免脏读、不可重复读和幻读类似于READ UNCOMMITTED隔离级别,提供最低程度的保护二级封锁协议2在一级协议基础上,事务T必须在读取数据项X前对X加读锁,读取后即可释放读锁防止丢失更新和脏读,但不能避免不可重复读和幻读类似于READCOMMITTED隔离级别,是许多系统的默认设置三级封锁协议3在二级协议基础上,事务T必须在读取数据项X前对X加读锁,并持有到事务结束防止丢失更新、脏读和不可重复读,但不能完全避免幻读类似于REPEATABLE READ隔离级别两阶段封锁协议42PL事务分为两个阶段扩展阶段(只获取锁,不释放锁)和收缩阶段(只释放锁,不获取锁)2PL是可串行化调度的充分条件,保证并发执行的正确性严格2PL要求所有锁在事务提交后才释放,是大多数系统采用的协议死锁处理死锁的概念死锁预防死锁检测与解除死锁是指多个事务循环等待对方持有通过限制事务申请资源的方式避免死系统周期性检测是否存在死锁,发现的资源,导致所有相关事务都无法继锁发生常用策略包括一次性申请死锁后选择一个或多个事务作为牺牲续执行的情况例如,事务T1持有资所有资源;按固定顺序申请资源;允者回滚,释放其持有的锁选择牺牲源A并请求资源B,同时事务T2持有资许事务抢占资源(优先级策略);超者的策略包括年龄最小的事务;已源B并请求资源A,两者互相等待形成时机制(事务等待锁的时间超过阈值完成工作量最少的事务;回滚代价最死锁死锁如不及时处理,将导致系则回滚)这些方法可能降低并发度小的事务;持有锁数量最多的事务等统资源浪费和性能下降或导致不必要的事务回滚多版本并发控制基本原理多版本并发控制MVCC为每个数据项维护多个版本,每个事务看到的是特定时间点的数据快照写操作创建数据的新版本而不直接覆盖旧版本,读操作选择适当版本读取,避免读写冲突,提高并发度版本管理每个数据版本包含创建时间戳和删除时间戳事务开始时获取时间戳,读操作读取在事务开始前已提交且未被删除的最新版本写操作创建带有当前时间戳的新版本,并标记旧版本为删除状态冲突处理当事务试图更新另一事务正在修改的数据时,可采用先来先服务策略(先提交者成功,后提交者回滚)或基于时间戳的策略(较早时间戳的事务优先)通过合适的冲突处理策略,MVCC可实现不同隔离级别垃圾回收定期清理不再需要的旧版本数据,释放存储空间垃圾回收过程需确保不删除任何活跃事务可能需要的版本清理策略可基于时间阈值、版本数量或系统负载等因素动态调整第九章数据库优化应用优化物理调优查询优化改进应用程序与数据库的交互方式,监控分析优化数据库物理结构和系统配置,包如批量处理、连接池管理、缓存策略改进SQL语句和数据库结构,提高查括存储布局、内存分配、并发参数等等,减少不必要的数据库负担收集并分析数据库性能数据,识别瓶询处理效率这涉及SQL重写、索引,使硬件资源得到充分利用颈和问题区域,建立优化基线这包设计、统计信息更新等多方面工作括查询执行时间、资源使用情况、等待事件等关键指标的监控数据库优化是提高数据库系统性能、降低资源消耗、缩短响应时间的过程随着数据量增长和用户并发访问增加,数据库优化变得日益重要本章将介绍数据库优化的各个方面,帮助你设计和维护高性能的数据库系统查询优化概述查询优化的意义查询优化直接影响数据库性能和用户体验一个高效的查询计划可以显著减少响应时间,降低系统资源消耗,提高并发处理能力对于频繁执行的查询,优化效果尤为显著,可能将执行时间从小时级缩短到秒级优化的层次查询优化可在多个层次进行逻辑优化(重写查询,选择更优的逻辑执行路径)、物理优化(选择具体的物理操作算法和执行策略)、参数优化(调整系统参数以适应特定查询模式)、数据组织优化(改变数据的存储和组织方式)优化器类型基于规则的优化器使用预定义的规则和启发式算法选择执行计划;基于成本的优化器估算不同执行计划的成本,选择成本最低的计划;混合型优化器结合两种方法的优点现代数据库系统多采用基于成本的优化方法优化的挑战统计信息不准确、参数绑定问题、复杂查询的组合爆炸、动态执行环境等因素都给查询优化带来挑战优化器可能因信息不足或算法限制选择次优计划,需通过人工干预和查询提示进行辅助查询处理步骤查询解析1将SQL查询转换为内部表示形式,检查语法正确性,验证表和列名是否存在,检查访问权限解析器生成查询树,表示查询查询重写2的结构和操作顺序,为后续优化提供基础应用等价变换规则,将查询重写为语义相同但执行效率更高的形式常见重写技术包括视图合并、子查询优化、谓词下推计划生成
3、连接顺序调整、聚合操作重排等重写阶段不考虑具体物理实现方法为重写后的查询生成可能的执行计划,考虑表访问方法(全表扫描、索引扫描)、连接算法(嵌套循环、哈希连接、排序合成本估算与选择并)、连接顺序等因素通常使用动态规划或贪心算法生成计4划估算每个执行计划的成本(CPU使用、I/O操作、内存消耗等),选择成本最低的计划成本模型基于系统统计信息,如表计划执行5的大小、列值分布、索引覆盖率等,准确的统计信息对优化器至关重要执行选定的计划,获取查询结果执行过程中可能进行动态调整,如自适应执行计划,根据实际数据特性调整操作方式系统会收集执行统计信息,用于未来优化关系代数优化选择操作下推投影操作下推连接顺序优化尽早执行选择操作,减少中尽早执行投影操作,减少处选择合适的连接顺序,减少间结果集的大小例如,将理和传输的数据量例如,中间结果集的大小例如,⋈⋈⋈⋈⋈⋈σA B转换为σA B,先将πA B转换为πAπB对于A BC,可能的连接顺⋈⋈⋈⋈过滤A表再与B表连接,可显,先投影出需要的列再进行序有A BC、A BC著减少连接操作的数据量连接,减少连接过程中的列等,不同顺序产生的中间结一般原则是谓词越严格(过数需注意保留连接和后续果大小差异可能很大一般滤比例越高)越应该优先执操作所需的所有列原则是先连接产生较小中间行结果的表分组和聚合优化尽可能提前执行分组和聚合操作,减少后续处理的数据量例如,对于⋈γcount*σA B,可转换⋈为γcount*σA B,先对A表进行过滤和聚合再连接,减少连接操作的复杂度物理优化策略表访问方法选择1根据查询条件和表特性选择合适的表访问方法全表扫描适用于需要访问表中大部分数据的情况;索引扫描适用于高选择性条件;索引覆盖查询(索引包含所有需要的列)可避免回表操作,效率最高物理优化器会评估不同访问方法的成本,选择最优方案连接算法选择2嵌套循环连接适用于小表连接或有高效索引的情况;哈希连接适用于大表等值连接,内存足够时性能最佳;排序合并连接适用于已排序数据或需要排序结果的场景优化器基于表大小、连接条件、索引可用性等因素选择最优连接算法执行并行化3利用多核处理器并行执行查询,提高处理速度可并行化的操作包括表扫描、排序、连接等并行度的选择需权衡并行加速与资源消耗,过高的并行度可能导致资源竞争和增加协调开销内存管理优化4合理分配内存资源,减少磁盘I/O优先将频繁访问的数据和索引保留在内存;为排序和哈希连接分配足够内存,避免中间结果溢出到磁盘;使用缓存预取和批处理技术减少I/O等待时间索引优化索引类型选择复合索引设计索引使用监控索引维护B+树索引适用于范围查询和复合索引涉及多个列,其列定期监控索引的使用情况,随着数据变化,索引可能变排序操作;哈希索引适用于顺序至关重要将高选择性识别未使用或低效索引使得碎片化或统计信息过时等值查询,但不支持范围查、常用于等值条件的列放在用执行计划和索引使用统计定期重建索引可减少碎片,询;位图索引适用于低基数前面;查询中的排序和分组信息分析查询是否有效利用提高查询效率;更新索引统列(取值少);全文索引适列也应考虑纳入索引复合索引对于频繁更新但很少计信息可帮助优化器做出更用于文本搜索根据数据特索引可以覆盖多个单列查询查询的表,过多索引可能降准确的决策在批量数据加性和查询模式选择合适的索,但列顺序需要与查询条件低性能,应及时删除不必要载前禁用索引、加载后重建引类型可显著提升性能匹配才能发挥最大效用的索引索引可提高加载效率数据库性能调优系统配置调优语句优化SQL优化内存分配、连接池大小、并发参数等系统12重写低效查询,添加索引,消除全表扫描设置硬件资源优化43应用层优化升级存储系统,增加内存,优化网络配置改进应用与数据库交互方式,减少网络往返数据库性能调优是一个持续的过程,需要系统化的方法和工具首先应建立性能基线,明确调优目标;然后通过监控工具识别瓶颈,找出最影响性能的因素;针对性地实施优化措施,并验证效果;最后制定长期监控和维护计划,确保性能持续保持在良好水平有效的性能调优需要全面考虑数据库系统的各个层面,从硬件到应用程序,找到最具成本效益的优化点过度优化或盲目优化可能带来额外的复杂性和维护成本,甚至产生负面影响调优应遵循先找最大瓶颈,小步快速迭代的原则课程总结与展望核心知识回顾1通过本课程的学习,我们系统掌握了数据库系统的基本概念和原理,包括数据模型、关系理论、SQL语言、数据库设计方法、完整性与安全性机制、恢复技术、并发控制以及性能优化等关键知识这些内容构成了数据库技术的核心框架技能应用2学习数据库技术不仅是理解概念,更重要的是掌握应用技能通过课程实践,我们学会了设计数据库结构、编写SQL查询、优化数据库性能、保障数据安全等实用技能,这些能力在各类信息系统开发和维护中都至关重要发展方向3数据库技术正在快速发展,分布式数据库、NoSQL数据库、NewSQL数据库、实时数据库、内存数据库、区块链数据库等新技术不断涌现人工智能与数据库的结合,如自适应优化、自动运维、智能查询等也是重要发展方向学习建议4数据库技术学习是一个持续的过程,建议在课程学习基础上,结合实际项目进行实践,深入研究特定领域的数据库应用,关注技术动态,参与开源社区,不断提升专业能力和技术视野。
个人认证
优秀文档
获得点赞 0