还剩34页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库设计与管理欢迎来到数据库设计与管理课程本课程将带您深入了解数据库系统的基本概念、设计原则与实践技巧从数据库基础知识到高级管理技术,我们将系统地学习如何构建高效、安全、可靠的数据存储和管理系统无论您是初学者还是有一定经验的开发人员,这门课程都将帮助您掌握现代数据库管理所需的关键技能,为您未来的专业发展奠定坚实基础课程概述课程目标学习内容12本课程旨在使学生掌握数据库课程内容涵盖数据库基础理论、设计的基本理论和方法,能够设计过程、SQL语言应用、事独立进行数据库的规划、设计务管理以及数据库安全等核心和实现通过学习,学生将理主题我们将结合实际案例,解数据库系统架构,掌握数据通过理论讲解和实践操作相结模型设计,并能熟练使用SQL合的方式进行教学语言进行数据库操作考核方式3学生成绩评定将包括平时作业30%、数据库设计项目30%以及期末考试40%平时作业注重基础知识掌握,项目则考察综合应用能力,期末考试则全面检验理论理解第一章数据库基础什么是数据库数据库管理系统()DBMS数据库是按照数据结构来组织、存数据库管理系统是一种操纵和管理储和管理数据的仓库它是一个长数据库的大型软件,用于建立、使期存储在计算机内的、有组织的、用和维护数据库它提供了数据定可共享的、统一管理的大量数据的义、操作、控制和共享等功能,常集合,用于满足组织多种用户信息见的DBMS包括MySQL、需求Oracle、SQL Server等数据库系统的优势与传统文件系统相比,数据库系统具有减少数据冗余、保证数据一致性、实现数据共享、提高数据独立性、增强数据安全性等显著优势,能够更高效地管理和利用数据资源数据库发展历史文件系统120世纪60年代初,数据以文件形式存储和管理,各应用程序直接操作文件,导致数据冗余、一致性差等问题这一阶段的数据管理效层次模型和网状模型率低下,难以满足日益增长的数据处理需求260年代中期至70年代,层次模型如IBM的IMS和网状模型如CODASYL先后出现这些早期数据库模型虽然提高了数据管理效关系模型3率,但结构复杂,操作不便,数据独立性不足1970年,E.F.Codd提出关系模型理论,随后关系数据库系统如Oracle、DB2等相继问世关系模型以其简单直观的表格结构和强面向对象数据库大的关系运算能力,成为主流数据库模型420世纪90年代,为支持复杂数据类型和面向对象编程,面向对象数据库系统应运而生它能够直接存储对象,支持继承与多态,但市数据库NoSQL5场占有率一直不高21世纪初至今,随着大数据时代的到来,非关系型数据库NoSQL如MongoDB、Redis、Cassandra等蓬勃发展,它们提供高可扩展性和高性能,适用于处理大规模、高并发的数据应用场景数据库系统架构单机架构单机架构是最简单的数据库部署方式,数据库服务器和应用程序运行在同一台计算机上这种架构适用于小型应用,具有部署简单、成本低的特点,但性能和可扩展性有限,不适合处理大量并发用户客户端服务器架构/客户端/服务器架构将数据库服务部署在专用服务器上,客户端通过网络连接访问数据库这种两层架构提高了系统的稳定性和安全性,支持多用户并发访问,但当用户数量增多时,服务器压力会显著增加分布式架构分布式架构将数据分散存储在多个服务器节点上,通过负载均衡和数据分片技术提高系统性能和可用性这种架构具有高可扩展性、高可用性和高性能,适合大规模应用,但也带来了事务一致性、复杂度增加等挑战数据模型概念模型数据库设计的最高层抽象1逻辑模型2特定DBMS支持的数据结构物理模型3数据实际存储方式数据模型是数据库系统的核心组成部分,它为数据库设计和实现提供了理论基础概念模型是最接近用户的高层抽象,主要表达业务需求和数据间的关系,常用E-R图表示,独立于任何特定的数据库系统逻辑模型是将概念模型转换为特定DBMS支持的数据结构,如关系模型、网状模型等物理模型则关注数据在计算机存储介质上的实际存储方式,包括索引、存储结构和访问方法等物理实现细节实体关系模型(模型)-E-R实体属性关系实体是现实世界中可区属性是实体所具有的特关系表示实体之间的联别的事物,在E-R模型性或性质,在E-R图中系或关联,在E-R图中中通常表示为矩形每通常表示为椭圆形,连通常表示为菱形,连接个实体都具有唯一的标接到其所属的实体属相关的实体关系具有识并可与其他实体区分性可分为简单属性、复类型(如一对
一、一对开来实体可以是具体合属性、单值属性、多多、多对多)和基数约的物理对象(如学生、值属性和派生属性等类束,描述了参与关系的教师、设备)或抽象的型每个实体通常都有实体实例数量关系也概念(如课程、部门、一个关键属性作为其唯可以具有自己的属性,事件)一标识符称为关系属性图示例E-R上图展示了一个学生-课程系统的E-R图示例在该图中,我们可以看到两个主要实体学生和课程,它们通过选修关系连接每个学生都有学号(主键)、姓名、性别、年龄等属性;每门课程都有课程号(主键)、课程名称、学分、教师等属性选修关系是一个多对多的关系,表示一个学生可以选修多门课程,一门课程也可以被多个学生选修该关系具有自己的属性成绩和选修时间这种E-R图清晰地展示了系统中的数据结构和各实体间的联系,为后续的逻辑设计提供了基础一对一一对多多对多关系模型关系模型是目前最流行的数据库模型,由E.F.Codd于1970年提出在关系模型中,数据以表格(即关系)的形式存储,每个关系由行(元组)和列(属性)组成每个关系必须有一个主键,用于唯一标识每一行数据外键是建立关系间联系的重要机制,它引用另一个表的主键,实现了表间的参照完整性关系模型还支持多种完整性约束,如实体完整性(主键非空且唯一)、参照完整性(外键值必须存在于被引用表的主键中)和用户自定义的域完整性(如CHECK约束)231000+主键完整性约束应用系统每个表格至少需要一个保证数据的正确性和一致性使用关系模型的商业系统第二章数据库设计过程概念设计需求分析构建E-R模型2明确系统功能和数据需求1逻辑设计转换为关系模式3实现与维护5物理设计部署系统并持续优化确定存储结构和访问方法4数据库设计是一个系统性的过程,旨在创建一个高效、准确且满足用户需求的数据库此过程从需求分析开始,通过概念设计、逻辑设计、物理设计,最终实现并维护数据库系统良好的数据库设计能够减少数据冗余、提高数据一致性,并确保系统性能和可扩展性设计过程中需考虑数据完整性约束、查询效率、安全性等多方面因素,并根据应用程序的需求进行优化需求分析用户需求收集通过访谈、问卷、观察等方式,从用户和利益相关者那里收集系统功能需求和数据需求这一阶段需要全面了解业务流程、用户角色和系统期望,以确保数据库设计能够满足实际业务需求数据流程分析分析数据在系统中的流动情况,识别数据的来源、流向、存储和处理方式通过数据流程图和数据字典等工具,可以清晰地描述系统中数据的生命周期,为后续设计提供依据业务规则定义明确业务运作的规则和约束条件,这些规则将直接影响数据库的结构和完整性约束业务规则定义了数据间的关系、有效值范围、计算规则等,是确保数据库准确反映业务逻辑的关键概念设计实体识别模型构建关系确定E-R通过分析业务需求,识别系统中的主要实体,基于识别出的实体,构建完整的实体-关系明确实体间的各种关系,如一对
一、一对多、如人、事、物、概念等实体识别需要考虑模型这包括定义每个实体的属性,确定实多对多等,并确定关系的详细特性关系确业务对象的独立性和重要性,确保所识别的体间的关系类型和基数,以及添加必要的约定需要深入理解业务规则,正确把握实体间实体能够完整地表达业务模型实体识别的束条件E-R模型应当直观地表示业务领域的联系方式和数量约束,为后续的逻辑设计准确性直接影响到整个数据库设计的质量的数据结构,便于与用户和开发人员交流阶段打下基础逻辑设计模型转换为关系模式范式化完整性约束定义E-R将概念设计阶段的E-R模型转换为具体的对初步形成的关系模式进行范式分析和重明确数据库中的各种完整性约束,包括主关系模式(表结构),包括将实体转换为构,消除数据冗余和异常范式化过程通键约束、外键约束、唯一性约束、非空约表、属性转换为字段、关系转换为外键或常会将关系模式逐步规范化至第三范式或束和检查约束等这些约束确保数据的准关系表等这个过程需要遵循一定的转换BCNF,平衡数据完整性和查询性能的需确性和一致性,防止错误数据进入数据库规则,确保语义不丢失求物理设计索引设计2为关键字段创建适当的索引,加速数据检索索引设计需要综合考虑查询频率、数据更新率存储结构选择和存储开销,选择合适的索引类型(如B树、哈希、全文等)并优化索引结构根据数据量、访问模式和性能需求,选择适当的存储结构这包括表空间配置、文件组1视图设计织方式、分区策略等,直接影响数据库的存储效率和访问性能创建必要的视图,简化复杂查询并提高数据访问的安全性视图可以隐藏底层表结构的复杂性,提供更简洁的数据访问接口,同时也可用3于实现细粒度的权限控制数据库规范化第三范式()3NF1消除传递依赖第二范式()2NF2消除部分依赖第一范式()1NF3属性不可再分数据库规范化是一种通过分解关系模式来减少数据冗余和提高数据完整性的过程第一范式1NF要求关系的每个属性都是原子的,不可再分;第二范式2NF在满足1NF的基础上,要求所有非主属性完全依赖于主键,消除部分依赖;第三范式3NF在满足2NF的基础上,要求所有非主属性都不传递依赖于主键,消除传递依赖规范化过程逐步减少了数据冗余,降低了数据异常(如更新异常、插入异常和删除异常)的风险,提高了数据结构的稳定性和可维护性然而,高度规范化的数据库可能需要更多的表连接操作,在某些情况下会影响查询性能和更高级范式BCNF范式()第四范式()第五范式()1Boyce-Codd BCNF24NF35NFBCNF是第三范式的改进版本,要求第四范式在BCNF的基础上,进一步第五范式也称为投影-连接范式所有决定因素必须是候选键在处理多值依赖问题如果关系模式R PJNF,处理连接依赖问题5NFBCNF中,如果X→Y是一个非平凡的中存在多值依赖X→→Y,则X必须是R要求如果一个关系模式可以无损地分函数依赖(Y不是X的子集),那么X的超键4NF通过分解含有多值依赖解为多个投影,那么这种分解必须依必须是关系模式的超键BCNF比的关系,消除了由多值依赖引起的数赖于关系模式的候选键5NF是目前3NF更严格,能够更好地消除数据冗据冗余关系数据库设计理论中最高的范式余反规范化反规范化的利弊反规范化的主要优势包括减少表连接、提高查询性能、简化查询复杂度和优化读取操作然而,它也带来了数据冗余增加、更新/插入/删除操作性能下降、数据一致性维护难度增加以及数据结构复杂化等问题在实际应用中,反规范化应当是一种经过慎重权衡后的决策,需要在数据完整性和查询性能之间找到平衡点通常建议先设计完全规范化的数据库,然后根据性能测试结果有选择地进行反规范何时需要反规范化化当查询性能成为关键考虑因素时,特别是在高频率读取、复杂查询或需要大量表连接的情况下,可能需要考虑反规范化此外,当数据报表生成需要聚合大量数据,或实时分析需要快速响应时,反规范化也是一种有效的优化手段第三章语言基础SQL3100+主要类别命令SQLSQL语言包含的基本命令类型标准SQL提供的命令总数1974起源年份SQL语言首次开发的时间SQL(结构化查询语言)是关系数据库标准语言,用于管理关系数据库系统中的数据SQL语言主要分为三大类DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)DDL用于定义数据库结构,包括CREATE、ALTER、DROP等命令;DML用于操作数据,包括SELECT、INSERT、UPDATE、DELETE等命令;DCL用于控制数据库访问权限,包括GRANT、REVOKE等命令此外,还有TCL(事务控制语言),包含COMMIT、ROLLBACK等命令,用于管理事务创建表CREATE TABLE学生学号CHAR10PRIMARY KEY,姓名VARCHAR20NOT NULL,性别CHAR1CHECK性别IN男,女,出生日期DATE,专业VARCHAR30DEFAULT计算机科学,CONSTRAINT学号格式CHECK学号LIKE S%;语句数据类型约束条件CREATE TABLECREATE TABLE是SQL中最基本的数据定义语句之一,用SQL支持多种数据类型,包括数值类型(INTEGER,约束是确保数据完整性的规则,包括主键约束PRIMARY于在数据库中创建新表其基本语法包括表名、列定义和约DECIMAL等)、字符串类型(CHAR,VARCHAR等)、日KEY、外键约束FOREIGN KEY、唯一约束UNIQUE、束条件,还可以指定表的存储参数、索引和外键关系等期时间类型(DATE,TIMESTAMP等)、布尔类型和特殊类非空约束NOT NULL、检查约束CHECK和默认值约束型(如XML,JSON等)选择合适的数据类型对存储效率和DEFAULT等约束可以在列级或表级定义性能至关重要修改表结构ALTER TABLE语句用于修改已有表的结构,包括添加新列、修改现有列的定义、删除列、添加或删除约束等在生产环境中,表结构的变更需要谨慎进行,因为它可能影响到现有数据和应用程序--添加列ALTER TABLE学生ADD电话VARCHAR20;--修改列定义ALTER TABLE学生MODIFY姓名VARCHAR50;--删除列ALTER TABLE学生DROP COLUMN电话;--添加约束ALTER TABLE学生ADD CONSTRAINT年龄检查CHECK年龄=15;--删除约束ALTER TABLE学生DROP CONSTRAINT年龄检查;删除表语句DROP TABLEDROP TABLE是用于删除数据库中已存在表的SQL命令其基本语法为DROPTABLE表名[CASCADE|RESTRICT]CASCADE选项会同时删除依赖于该表的所有对象(如视图、触发器等),而RESTRICT则在存在依赖对象时阻止删除操作删除表的注意事项删除表是一项不可逆操作,会永久删除表结构及其中的所有数据执行前应确认是否已备份重要数据,并检查是否有其他表通过外键引用该表某些数据库系统提供了截断表TRUNCATE TABLE命令作为替代,它只删除表中的数据而保留表结构权限与安全考虑通常只有表的所有者或具有适当权限的用户才能删除表在多用户环境中,应严格控制DROP权限的分配,防止意外或恶意的表删除操作某些关键业务表可能需要特殊的保护机制,如删除前需要多人审批或特殊授权插入数据命令语法用途单行插入INSERT INTO表名列1,列插入一条记录2,...VALUES值1,值2,...多行插入INSERT INTO表名列1,列同时插入多条记录2,...VALUES值1,值2,...,值A,值B,...基于查询插入INSERT INTO表名列1,列从其他表查询插入数据2,...SELECT列A,列B,...FROM源表INSERT语句是SQL中用于向表中添加新数据的命令插入数据时,可以为所有列指定值,也可以只为部分列指定值(其他列将使用默认值或NULL)插入的数据必须遵循表的数据类型和约束条件,否则插入操作将失败多行插入在需要一次性添加多条记录时非常有用,能显著提高插入效率基于查询的插入则适用于数据迁移、数据复制或数据聚合等场景,可以方便地将一个表或多个表的数据导入到目标表中更新数据语句子句高级更新技巧UPDATE WHEREUPDATE是SQL中用于修改表中已有数据的命WHERE子句用于指定更新操作的筛选条件,UPDATE语句中的SET子句支持使用表达式、令其基本语法为UPDATE表名SET列1=只有满足条件的行才会被更新条件表达式可函数和子查询来计算新的列值例如,可以使值1,列2=值2,...[WHERE条件]没有以使用比较运算符(如=,,)、逻辑运算符用SET salary=salary*
1.1更新工资,或使WHERE子句的UPDATE将修改表中的所有行,(AND,OR,NOT)和其他SQL条件操作(如用SET department=SELECT idFROM因此在使用时必须谨慎,确保仅更新需要修改IN,BETWEEN,LIKE)来精确定位需要更新departments WHEREname=研发部基的数据的记录于子查询更新部门某些数据库还支持多表更新,允许基于关联条件更新目标表删除数据语句语句DELETE TRUNCATEDELETE是SQL中用于从表中删除数据的基本命令其语法为DELETE FROMTRUNCATE TABLE是一种特殊的数据删除方式,语法为TRUNCATE TABLE表名[WHERE条件]DELETE操作会逐行删除满足条件的记录,并记录事务日表名相比DELETE,TRUNCATE具有以下特点删除表中所有行但不记录单个志,支持事务回滚没有WHERE子句的DELETE将删除表中所有数据,使用时行删除操作;不能使用WHERE子句;不触发删除触发器;不能回滚;操作后立即需格外小心释放存储空间;自动重置标识列由于TRUNCATE TABLE执行速度更快且资源消耗更低,当需要删除表中所有数--删除指定学生据时,它是更高效的选择但需注意,TRUNCATE是一个DDL操作,执行后无法DELETE FROM学生恢复数据,除非有外部备份WHERE学号=S1001;--清空整张表--基于关联条件删除TRUNCATE TABLE临时数据;DELETE FROM选课WHERE课程号IN SELECT课程号FROM课程WHERE学分2;查询数据SELECT语句是SQL中最常用的命令,用于从数据库中检索数据基本语法为SELECT列名列表FROM表名列表[WHERE条件][ORDER BY排序列]SELECT可以检索表中的所有列(使用*)或指定列,还可以包含派生列(如表达式和函数计算结果)WHERE子句允许根据指定条件筛选记录,支持多种条件表达式和逻辑组合ORDER BY子句则用于指定结果集的排序方式,可以按一个或多个列进行升序ASC或降序DESC排序如果不指定排序方向,默认为升序--基本查询示例SELECT学号,姓名,专业FROM学生WHERE性别=女AND出生日期2000-01-01ORDER BY专业ASC,学号DESC;高级查询子句GROUP BY2GROUP BY子句用于将结果集按一个或多个列的值分组,然后对每个组应用聚合函数分组操作对于数据分析和统计非聚合函数常有用,允许我们基于某些特征对数据进行分类汇总SQL提供了多种聚合函数用于汇总数据,包括COUNT计数、SUM求和、AVG平均值、MAX最大值和MIN最子句小值等这些函数对组内数据进行统计计算,通常与1HAVINGGROUP BY子句一起使用HAVING子句用于筛选GROUP BY子句产生的分组,类似于WHERE子句筛选行,但HAVING是对分组后的结果进行筛选HAVING子句中通常包含聚合函数,用于设置分组必须满足的条件3--高级查询示例SELECT专业,性别,COUNT*AS人数,AVG年龄AS平均年龄FROM学生GROUP BY专业,性别HAVING COUNT*5ORDER BY专业,人数DESC;连接查询连接查询是关系数据库的核心特性,用于基于公共字段组合多个表中的数据SQL支持多种连接类型,主要包括内连接、外连接和自连接内连接只返回两表中匹配的行;左外连接返回左表所有行及右表匹配行;右外连接返回右表所有行及左表匹配行;全外连接返回两表所有行--内连接示例SELECT s.学号,s.姓名,c.课程名,sc.成绩FROM学生sINNER JOIN选课sc ONs.学号=sc.学号INNER JOIN课程c ONsc.课程号=c.课程号WHERE c.学分3;--左外连接示例SELECT s.学号,s.姓名,COUNTsc.课程号AS选课数FROM学生sLEFT JOIN选课sc ONs.学号=sc.学号GROUP BYs.学号,s.姓名;--自连接示例SELECT e
1.姓名AS员工,e
2.姓名AS直接主管FROM员工e1JOIN员工e2ON e
1.主管ID=e
2.员工ID;子查询单行子查询多行子查询返回单个值的子查询,通常用于与单返回多个值的子查询,需要使用多值值比较运算符(如=、、)一起使比较运算符(如IN、ANY、ALL)用例如,查询成绩高于平均分的学例如,查询选修了所有数学课程的学生SELECT*FROM成绩生SELECT*FROM学生WHERE分数SELECT AVG分WHERE学号IN SELECT学号数FROM成绩单行子查询必须FROM选课WHERE课程号IN确保只返回一行结果,否则会导致错SELECT课程号FROM课程误WHERE类别=数学相关子查询引用外部查询列的子查询,执行时内部查询会随外部查询的每一行重复执行例如,查询每个部门薪资最高的员工SELECT*FROM员工e1WHERE薪资=SELECT MAX薪资FROM员工e2WHERE e
2.部门ID=e
1.部门ID视图创建视图更新视图删除视图使用CREATE VIEW语句创建视图,语修改视图有两种方式通过视图修改底层使用DROP VIEW语句删除视图,语法为法为CREATE VIEW视图名[列名列表数据DML操作和修改视图定义DDL DROP VIEW视图名[CASCADE|表]AS SELECT语句[WITH CHECK操作并非所有视图都支持DML操作,RESTRICT]删除视图只会删除视图定OPTION]视图定义了一个虚拟表,基只有满足特定条件的简单视图才可更新义,不会影响底层表的数据CASCADE于SELECT查询的结果集WITH使用ALTER VIEW可以修改视图定义,选项会同时删除依赖于该视图的所有对象,CHECK OPTION选项确保通过视图插入相当于重新创建视图而RESTRICT则在存在依赖对象时阻止删或更新的数据符合视图的定义条件除操作--创建视图示例CREATE VIEW优秀学生ASSELECT学号,姓名,专业FROM学生WHERE学号IN SELECT学号FROM选课GROUP BY学号HAVING AVG成绩=90;--通过视图查询SELECT*FROM优秀学生WHERE专业=计算机科学;--删除视图DROPVIEW优秀学生;索引索引类型1数据库系统支持多种索引类型,包括B树索引(最常用,适合范围查询)、哈希索引(等值查询效率高)、全文索引(文本搜索)、空间索引(地理数据)和位图索引(低基数列)等选择合适的索引类型取决于数据特性和查询模式创建索引2使用CREATE INDEX语句创建索引,语法为CREATE[UNIQUE]INDEX索引名ON表名列名1[ASC|DESC],列名
2...UNIQUE关键字创建唯一索引,确保索引列值的唯一性可以创建单列索引或多列复合索引,还可指定索引列的排序方向删除索引3使用DROP INDEX语句删除索引,语法因数据库系统而异例如,在MySQL中DROP INDEX索引名ON表名;在Oracle中DROP INDEX索引名删除表时,该表上的所有索引通常也会被自动删除需注意的是,主键和唯一约束会自动创建索引,删除这些约束也会删除相应索引--创建索引示例CREATE INDEX idx_学生_姓名ON学生姓名;CREATE UNIQUEINDEXidx_学生_邮箱ON学生邮箱;CREATE INDEXidx_学生_专业_年级ON学生专业,年级;--删除索引DROP INDEXidx_学生_姓名ON学生;第四章事务管理事务的概念事务是数据库中的一个逻辑工作单元,由一系列对数据库的读/写操作组成,这些操作要么全部成功执行,要么全部不执行,保持数据的一致性事务是数据库管理系统区别于文件系统的重要特性,为应用程序提供了数据完整性保障属性ACID事务必须满足ACID属性原子性Atomicity确保事务中的所有操作作为一个整体执行;一致性Consistency确保事务执行前后数据库从一个一致状态转变到另一个一致状态;隔离性Isolation确保并发事务之间不会相互影响;持久性Durability确保事务一旦提交,其结果将永久保存事务控制语句SQL提供了一系列事务控制语句BEGIN TRANSACTION或STARTTRANSACTION开始一个事务;COMMIT提交事务,使变更永久生效;ROLLBACK回滚事务,撤销所有未提交的变更;SAVEPOINT创建事务保存点;ROLLBACK TOSAVEPOINT回滚到指定保存点并发控制锁机制锁是数据库系统用于控制并发访问的基本机制数据库支持多种锁类型,包括共享锁读锁和排他锁写锁共享锁允许多个事务同时读取数据,但阻止写入;排他锁则阻止其他事务的读写操作多版本并发控制()锁的粒度可以是表级、页级或行级表级锁锁定整张表,并发度低但开销小;行级MVCC锁只锁定单行数据,并发度高但开销大锁机制通过两阶段锁定协议实现,先获取MVCC是一种并发控制技术,通过为数据维护多个版本来实现并发读写当事务修所有需要的锁,执行操作后再统一释放改数据时,不会覆盖原数据,而是创建新版本;读取操作则根据事务开始时间选择可见的版本MVCC的主要优势是读不阻塞写,写不阻塞读,提高了并发性能大多数现代数据库系统(如PostgreSQL、Oracle、MySQL InnoDB)都采用MVCC机制MVCC通常与锁机制结合使用,提供不同的事务隔离级别读未提交、读已提交、可重复读和串行化死锁死锁产生的原因死锁检测1资源竞争与循环等待依赖图或超时机制2死锁处理死锁预防4选择牺牲一个事务3资源有序分配策略死锁是指两个或多个事务互相持有对方需要的锁,导致所有事务都无法继续执行的情况例如,事务A持有资源1的锁并请求资源2的锁,而事务B持有资源2的锁并请求资源1的锁,形成循环等待死锁是并发数据库系统中难以完全避免的问题数据库系统通常采用死锁检测或死锁预防机制来处理死锁死锁检测通过构建等待图或设置超时检测死锁;一旦发现死锁,系统会选择一个牺牲者事务进行回滚死锁预防则通过事务提前声明所需资源、资源有序分配或乐观并发控制等方式,从根本上避免死锁条件的形成第五章数据库安全访问控制数据加密审计访问控制是保护数据库安全的第一道防线,数据加密用于保护敏感数据的机密性,包括数据库审计跟踪记录用户活动和系统事件,通过身份验证和授权机制控制用户对数据库传输中加密TLS/SSL和存储加密TDE对安全违规行为进行检测和追责审计可以对象的访问权限数据库系统通常提供基于数据库支持多种加密级别,从整个数据库加监控谁在何时访问了哪些数据并执行了什么角色的访问控制RBAC,允许管理员为用密到特定列加密加密方案需要平衡安全性操作,是合规要求的重要组成部分高级审户分配角色,再为角色授予权限,简化权限和性能,合理管理加密密钥是关键计功能还包括实时警报和安全分析,对异常管理行为进行快速响应用户管理创建用户使用CREATE USER语句创建数据库用户账户,语法因数据库系统而异创建用户时需指定身份验证方式如密码、证书和默认数据库等属性数据库管理员应遵循最小权限原则,初始只分配必要的权限--MySQL创建用户示例CREATE USERzhang_san@localhostIDENTIFIED BYcomplex_password;授权使用GRANT语句为用户或角色授予权限,语法为GRANT权限列表ON对象TO用户/角色[WITH GRANTOPTION]权限可以是系统权限如CREATETABLE或对象权限如SELECT,INSERTWITH GRANTOPTION允许被授权者将权限转授给其他用户--授权示例GRANT SELECT,INSERT ON学生表TO zhang_san;GRANT ALLPRIVILEGES ON课程数据库.*TO li_si;撤销权限使用REVOKE语句撤销已授予的权限,语法为REVOKE权限列表ON对象FROM用户/角色撤销权限是权限管理的重要环节,尤其是当用户职责变更或离职时,应及时调整其权限以确保系统安全--撤销权限示例REVOKE INSERTON学生表FROM zhang_san;REVOKE ALLPRIVILEGES ON*.*FROM li_si;备份与恢复完整备份增量备份差异备份完整备份是对整个数据库的增量备份只备份自上次备份差异备份备份自上次完整备完整拷贝,包含所有数据和(完整或增量)以来发生变份以来所有变化的数据与对象定义它是独立的,不化的数据它执行速度快、增量备份相比,差异备份的依赖于其他备份,恢复时只占用空间小,但恢复时需要恢复过程更简单,只需最近需要最新的完整备份虽然最近的完整备份和所有后续的完整备份和最近的差异备完整备份提供了最简单的恢增量备份,恢复过程较复杂份;但占用空间随时间增长复方式,但备份时间长、占增量备份适合数据变化不大差异备份是完整备份和增量用空间大,通常定期(如每但需要频繁备份的环境备份的折中方案周)执行制定合理的备份策略需考虑恢复点目标(RPO,可接受的数据丢失量)和恢复时间目标(RTO,可接受的恢复时长)常见的混合策略是定期执行完整备份,每天执行差异备份,每小时执行事务日志备份此外,还应进行备份验证和恢复演练,确保备份可用。
个人认证
优秀文档
获得点赞 0