还剩58页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库技术欢迎学习数据库技术课程在当今信息爆炸的时代,数据已成为各行各业的核心资产本课程将系统地介绍数据库的基本概念、设计方法、实现技术以及应用开发,帮助大家掌握这一关键技术作为计算机科学与技术的重要分支,数据库技术在企业信息系统、互联网应用以及大数据处理中扮演着不可替代的角色希望通过本课程的学习,能够为您打开数据管理的大门,培养解决实际问题的能力课程目标和学习要求知识目标掌握数据库系统的基本概念、原理和方法,理解数据模型、关系代数、语SQL言等核心内容能力目标具备数据库设计、实现和管理的基本技能,能够运用语言进行数据操作和SQL应用开发素质目标培养严谨的逻辑思维能力、数据安全意识和团队协作精神,为将来从事相关工作奠定基础学习要求按时完成作业和实验,积极参与课堂讨论,期末完成数据库应用开发项目数据库系统的基本概念用户层直接与数据库交互的最终用户和应用程序数据库管理系统控制和管理数据库的软件系统数据库按照数据模型组织的相关数据的集合物理存储实际存储数据的物理设备数据库系统是集中管理和存储数据的计算机系统,它由数据库、数据库管理系统、应用程序和用户组成通过分层架构,数据库系统实现了数据的统一管理、共享和安全控制,大大提高了数据处理的效率和可靠性数据、数据库与数据库管理系统数据数据库数据库管理系统数据是描述事物的符号记录,是信息的载数据库是长期存储在计算机内的、有组织数据库管理系统是一种操纵和管DBMS体在数据库中,数据可以是数字、文本、的、可共享的数据集合它以一定的数据理数据库的大型软件,用于建立、使用和图像、音频或视频等多种形式模型组织数据,描述实体及其关系维护数据库数据是数据库的基本对象,经过处理后可主要功能包括数据定义、数据操纵、数据以转化为有价值的信息数据库具有永久存储、结构化存储、共享控制、数据库恢复和安全保护等性等特点数据库系统的特点数据共享性高数据独立性强数据库系统能够为多个用户和应用程序提供对相同数据的并发访问能力,实现数数据库系统将数据的逻辑结构与物理存储分离,使应用程序不依赖于数据的物理据资源的充分利用表示和存储方式通过统一的数据管理,不同部门和用户可以根据各自的权限访问相同的数据资源当数据存储结构改变时,应用程序无需修改,大大提高了系统的可维护性数据一致性高数据安全性好数据库系统通过完整性约束机制保证数据的正确性、有效性和相容性,避免数据数据库系统提供了完善的安全保护机制,包括用户身份认证、访问权限控制、加冗余和不一致密等多重手段当数据发生变化时,相关的所有数据都会同步更新,确保数据的一致性只有经过授权的用户才能访问数据库中的特定数据,防止数据泄露和未授权访问数据库系统的发展历程文件系统阶段1世纪年代,数据以文件形式存储,每个应用程序维护2050-60自己的数据文件,存在数据冗余、不一致等问题早期数据库系统2年代末至年代初,出现了层次模型和网状模型6070IMS的数据库系统,但数据结构复杂,程序依赖性强CODASYL关系数据库时代3年代后期至年代,关系数据库模型占据主导地位,语7090SQL言成为标准,商业产品如、、兴起Oracle DB2SQL Server对象关系数据库4年代至年代,融合面向对象技术与关系模型,支持复杂数9000据类型和用户定义类型,增强了数据表达能力与大数据时代NoSQL5世纪以来,面对互联网海量数据,出现了键值存储、文档数21据库、列存储、图数据库等多种数据库NoSQL数据模型概述概念数据模型逻辑数据模型从用户观点出发,描述数据库概念结构的模描述数据库逻辑结构的模型,如关系模型、型,如实体联系模型模型层次模型、网状模型-E-R主要用于数据库设计的概念设计阶段,便于是数据库管理系统支持的数据模型,独立于用户理解具体的计算机系统物理数据模型数据模型的作用描述数据在计算机存储设备上的组织方式,提供了描述数据库的工具,实现了从现实世如索引、聚簇等界到机器世界的映射与特定的数据库管理系统和操作系统密切相促进了数据库设计的规范化和标准化关层次模型和网状模型层次模型网状模型层次模型采用树形结构表示实体及其关系,一个节点可以有多个网状模型使用网络结构表示实体及其关系,允许一个节点有多个子节点,但每个子节点只能有一个父节点父节点,能够表示更复杂的关系特点特点结构简单,查询效率高表达能力强,可表示多对多关系••只能表示一对多关系数据结构复杂,不直观••存在数据冗余问题程序的数据独立性差••数据完整性维护复杂操作复杂,用户负担重••代表系统的信息管理系统代表系统数据库任务组IBM IMSCODASYL DBTG关系模型基础关系二维表格形式,由行元组和列属性组成,对应实体集合关系模式表示为•RA₁,A₂,...,Aₙ属性值来自域可取值的集合•键用于标识元组的属性或属性集合超键唯一标识元组的属性集•候选键最小的超键•主键被选中的候选键•外键参照另一个关系主键的属性•完整性约束保证数据正确性和一致性的规则实体完整性主键非空且唯一•参照完整性外键要么为空,要么对应主键值•用户定义完整性特定应用的约束条件•关系代数操作集合操作专门的关系操作处理关系作为集合的操作,要求操作关系具有相利用关系特性的操作,是关系代数的核心同的属性数量和类型选择根据条件筛选元组•σ并集∪合并两个关系的元组,去除重复•投影选取特定的属性列•π连接⋈根据相关属性组合两个关系•交集获取同时存在于两个关系中的元•∩除法特殊操作,用于对所有类型的•÷组查询差集获取存在于第一个关系但不存在于•-第二个关系的元组笛卡尔积两个关系的所有可能组合•×扩展操作由基本操作组合而成,提供更强大的查询能力外连接保留未匹配的元组•半连接连接后再投影回第一个关系•聚集函数计算统计值如平均值、总和•重命名改变关系或属性的名称•ρ模型概念E-R实体属性联系现实世界中可区分的事物,描述实体特征的数据项,如实体之间的相互关联,如学如学生、课程、部门学生的姓名、年龄、学号生选修课程、员工隶属部门实体集是具有相同属性的实属性可分为简单属性、复合联系可分为一对
一、一1:1体的集合,对应于关系模型属性、单值属性、多值属性对多、多对多三1:N M:N中的表和派生属性种基本类型弱实体集不能独立存在,依赖于其他实体集的实体集合弱实体集通过标识性联系与其所依赖的实体集相关联图的绘制方法E-R确定实体集识别系统中的主要对象,确定实体集并用矩形表示例如学生、教师、课程、系部等确定属性为每个实体确定其属性,并用椭圆表示标识主键属性下划线、多值属性双线椭圆、派生属性虚线椭圆确定联系分析实体间的关系,用菱形表示联系标明联系的类型、或,用连线上的数字或符号表示1:11:N M:N确定弱实体集识别依赖于其他实体的弱实体集,用双线矩形表示将弱实体集与其所依赖的实体集用双线菱形标识性联系连接细化图E-R检查并优化图,确保它准确反映系统需求E-R考虑是否需要添加联系的属性,用连接到菱形的椭圆表示数据库管理系统的功能数据操纵数据定义实现数据查询、插入、更新和删除等基本创建、修改和删除数据库对象,如表、视操作图、索引等数据控制保障数据安全性、完整性和并发控制数据管理数据恢复维护数据字典、性能监控和系统调优在系统故障时保证数据不丢失并能够恢复数据库管理系统通过这些功能实现对数据的集中管理和控制,简化了应用程序开发,提高了数据访问效率,确保了数据的安全可靠将底层复杂性对用户透明,使用户专注于业务逻辑而非数据存储细节DBMS数据库系统的体系结构外部级用户视图层,不同用户看到的数据库部分视图概念级2逻辑结构层,数据库的整体逻辑结构内部级3物理存储层,数据在存储介质上的组织方式美国标准局提出的三级模式架构是数据库系统的标准体系结构这种结构实现了数据的物理独立性和逻辑独立性,使得数ANSI/SPARC据库的物理存储结构可以改变而不影响用户的逻辑视图,同时用户视图的变化也不会影响整体的逻辑结构三级之间通过两级映射实现转换外模式模式映射和模式内模式映射这种分层设计大大提高了数据库系统的灵活性和可维护性//语言简介SQL定义分类SQL SQL是一种专门用于管理关系数语句分为数据定义语言、数据操纵语言、数据控SQLStructured QueryLanguage SQL DDL DML据库的标准化语言它最初由研发,后成为国际标准,几乎制语言和事务控制语言四大类,分别用于不同的数据IBM DCLTCL所有主流关系数据库系统都支持库操作场景SQL特点标准SQL SQL具有非过程性、统一性、标准化、独立性和完备性等特点,标准经历了多次更新,从到,不断扩展其SQL SQLSQL-86SQL:2019既可以交互使用,也可以嵌入到应用程序中,支持动态构建查询功能不过各数据库厂商在实现上有所差异,形成了多种方SQL言数据定义语言SQLDDL命令功能语法示例创建数据库对象CREATE CREATE TABLEStudentSID CHAR8,SName VARCHAR20,...;修改数据库对象ALTER ALTERTABLE StudentADDCOLUMN Age INT;删除数据库对象DROP DROPTABLE Student;清空表数据TRUNCATE TRUNCATETABLEStudent;添加注释COMMENT COMMENTON TABLE学生信息表Student IS;数据定义语言用于定义和管理数据库及其对象的结构通过语句,可以创建、修改和删除DDL DDL数据库、表、索引、视图等对象,还可以定义完整性约束条件,如主键、外键、唯一约束等语句执行后会立即生效,无需额外的提交操作在实际应用中,谨慎使用和DDL DROPTRUNCATE命令,因为它们会导致数据不可恢复的丢失数据操纵语言查询SQL DML-SELECT[DISTINCT]列名1,列名2,...FROM表名1[别名1],表名2[别名2],...[WHERE条件表达式][GROUP BY列名[HAVING条件表达式]][ORDER BY列名[ASC|DESC]][LIMIT起始位置,返回记录数];语句是中最常用、最复杂的语句,用于从数据库中检索数据基本语SELECT SQL SELECT句包括和子句,用于指定要检索的列和数据来源的表SELECT FROM子句用于筛选满足条件的记录,支持各种比较运算符和逻辑运算符子WHERE GROUP BY句用于对结果集进行分组,通常与聚合函数一起使用COUNT,SUM,AVG,MAX,MIN子句用于对分组后的结果进行筛选HAVING子句用于对结果集进行排序,可以指定升序或降序子句用ORDER BYASC DESCLIMIT于限制返回记录的数量,适用于分页查询数据操纵语言插入、更新、删除SQL DML-语句语句语句INSERT UPDATEDELETEINSERT INTO表名[列名1,列名UPDATE表名DELETE FROM表名2,...]SET列名1=表达式1,列名2=表[WHERE条件表达式];VALUES值1,值2,...;达式2,...[WHERE条件表达式];INSERT INTO表名[列名1,列名语句用于删除表中的记录如果DELETE2,...]省略子句,会删除表中的所有记WHERESELECT语句;语句用于修改表中的现有记录,录,但表结构保留UPDATE可以同时更新多个列的值如果省略子句,会更新表中的所有记录WHERE语句用于向表中插入新记录,可INSERT以一次插入一行或多行数据,也可以通过语句从其他表中获取数据插入SELECT视图操作SQL视图概念视图是基于一个或多个表的逻辑表,本身不存储数据,只存储查询定义可以隐藏底层表的复杂性,限制对敏感数据的访问,简化复杂查询创建视图使用CREATE VIEW语句创建视图CREATE VIEW视图名AS SELECT语句;查询视图可以像查询表一样查询视图SELECT*FROM视图名WHERE条件;修改视图使用CREATE ORREPLACE VIEW或ALTER VIEW修改视图定义CREATE ORREPLACE VIEW视图名AS新SELECT语句;删除视图使用DROP VIEW语句删除视图DROP VIEW[IF EXISTS]视图名;函数和聚合操作SQL5常用聚合函数SQL提供了5个标准聚合函数,用于计算列值的统计信息10+字符串函数提供字符串处理能力,如连接、截取、替换等8+日期时间函数处理日期和时间数据,支持计算和格式化12+数学函数执行数学计算,如四舍五入、平方根、随机数等SQL中的聚合函数包括COUNT计数、SUM求和、AVG平均值、MAX最大值和MIN最小值这些函数通常与GROUP BY子句一起使用,对数据进行分组统计SQL还提供了丰富的字符串函数如CONCAT、SUBSTRING、REPLACE、数值函数如ROUND、CEIL、FLOOR、日期函数如NOW、DATEPART、DATEADD和转换函数如CAST、CONVERT等,大大增强了数据处理能力不同数据库管理系统在函数支持上有所差异,某些函数可能是特定数据库的扩展功能子查询SQL子查询基础子查询是嵌套在另一个语句内部的查询SQLSELECT子查询类型按结果形式分为标量子查询、行子查询、表子查询子查询位置3可出现在、、、等子句中SELECT FROMWHERE HAVING相关与非相关相关子查询引用外部查询的列,非相关子查询独立执行子查询是的强大特性,使复杂查询得以分解为更小、更易管理的部分非相关子查询先执行内部查询,然后将结果用于外部查询;相关子查询则对外部查询的每一行SQL执行一次内部查询子查询通常与、、、等操作符一起使用例如,查找选修了数据库课程的学生IN EXISTSANY ALLSELECT*FROM StudentWHERE SIDIN SELECTSID FROM子查询的灵活使用能够显著提高查询的表达能力SC WHERECID=001SQL连接查询SQL内连接左外连接右外连接全外连接INNER JOINLEFT JOINRIGHT JOINFULL JOIN返回两个表中满足连接条件的返回左表的所有记录及右表中返回两个表中的所有记录,不记录匹配的记录返回右表的所有记录及左表中管是否匹配匹配的记录SELECT*FROM ASELECT*FROM ALEFT SELECT*FROM AFULLINNER JOINB JOINB SELECT*FROM AJOIN BON A.key=B.key;ON A.key=B.key;RIGHT JOINB ONA.key=B.key;ONA.key=B.key;只包含在两个表中都存在的匹包含左表所有行,右表不匹配包含两表所有行,不匹配时填配数据时填充包含右表所有行,左表不匹配充NULL NULL时填充NULL数据完整性约束实体完整性参照完整性保证表中的每一行都是唯一可标识的,通常通过主保证表之间引用关系的有效性,通过外键约束实现键约束实现主键不允许为NULL,且值必须唯一外键值必须是被参照表中的值,或为NULLCREATE TABLEStudentCREATE TABLESC SID CHAR8PRIMARY KEY,SIDCHAR8,SName VARCHAR20NOT NULL,CID CHAR4,...FOREIGN KEYSID REFERENCES;StudentSID,...;域完整性保证列数据符合预定义的类型、格式或值域,通过数据类型、CHECK约束、DEFAULT约束和NOT NULL约束实现CREATE TABLEStudent SIDCHAR8,Age INTCHECK Age=0AND Age=150,Gender CHAR1DEFAULT M,...;触发器的概念和应用条件触发器执行的条件可选事件触发器定义的操作事件、、INSERT UPDATEDELETE动作满足条件时执行的操作触发器是一种特殊的存储过程,在满足定义条件时自动执行,不能由用户直接调用触发器可以在数据修改前或修改后触发,针对每一行BEFORE AFTERFOR EACH或整个语句执行ROW FOREACH STATEMENT常见应用场景包括实现复杂的数据完整性约束、自动更新冗余数据、审计跟踪记录变化、实现业务规则等例如,可以创建触发器在学生成绩插入或更新时,自动计算平均分并更新到学生表中需要注意触发器可能引起性能问题,特别是在大批量操作时,应谨慎使用并避免触发器链一个触发器激活另一个触发器存储过程的创建和使用存储过程定义存储过程是一组预编译的SQL语句集合,可以接受参数、执行操作并返回结果创建存储过程CREATE PROCEDUREproc_nameparam1type,param2typeBEGIN--SQL语句END;调用存储过程CALL proc_nameparam1,param2;修改存储过程ALTER PROCEDUREproc_name--新的特性或属性删除存储过程DROP PROCEDURE[IF EXISTS]proc_name;数据库设计概述需求分析收集和分析用户需求,确定系统功能和数据需求概念设计建立模型,描述实体、属性和联系E-R逻辑设计将概念模型转换为特定数据库模型的逻辑结构物理设计4确定数据库的物理存储结构和访问方法实现与维护5创建数据库,加载数据,并进行持续维护和优化需求分析阶段信息收集方法数据需求分析处理需求分析用户访谈确定主要数据实体识别系统功能•••问卷调查分析实体间的关系分析数据操作类型•••现有系统分析定义数据属性和类型确定查询频率•••业务文档审查确定数据约束条件分析批处理要求•••用户观察估计数据量和增长趋势确定响应时间要求•••联合需求规划会议分析数据安全需求分析并发访问需求•JRP••需求分析是数据库设计的第一阶段,也是最关键的阶段之一充分、准确的需求分析是成功设计数据库的基础在此阶段,设计人员需要与用户密切沟通,全面了解业务流程和数据需求,为后续设计工作奠定坚实基础概念设计阶段建模步骤避免的常见问题E-R•识别实体类型•混淆实体和属性•确定实体间的关系•关系定义不清•定义实体的属性•不必要的多值属性•确定实体的主键•冗余关系•检查冗余•主键选择不当•绘制E-R图•实体粒度不合理验证模型E-R是否捕获所有数据需求•实体和关系是否定义准确•是否有缺失或冗余的实体•复杂关系是否处理合理•模型是否清晰易懂•是否能满足查询需求•逻辑设计阶段模型转换关系模式优化定义完整性约束设计评估E-R将模型转换为关系模型应用规范化理论优化表结构设计各类完整性约束验证逻辑设计的质量E-R实体转换为关系表消除数据冗余主键和唯一约束检查查询支持••••属性转换为列避免更新异常外键约束评估性能影响••••关系转换为外键或新表满足至少要求非空和默认值约束验证需求覆盖••3NF••检查约束和触发器•物理设计阶段存储结构设计1根据数据特性和访问模式,设计表的物理存储结构,选择适当的文件组织方式和数据页分配策略包括行存储、列存储或混合存储的选择,以及数据压缩策略的确定索引设计基于查询分析结果,为频繁访问的列创建适当的索引,平衡查询性能和维护成本包括聚集索引、非聚集索引、唯一索引、复合索引等类型的选择和优化分区策略对大型表实施表分区,提高查询效率和管理便捷性根据时间、范围或哈希值等不ID同策略划分数据,使查询可以只访问相关分区而非整表系统参数配置优化数据库系统参数,如缓冲池大小、排序区内存、最大连接数等,以适应特定应用场景的性能需求不同的工作负载类型需要不同的参数优化方案数据库设计规范化理论更高范式等5NF,DKNF多值依赖与4NF2消除非平凡且非函数依赖的多值依赖BCNF所有函数依赖的决定因素必须是候选键第三范式3NF消除非主属性对候选键的传递依赖第二范式2NF消除非主属性对候选键的部分依赖第一范式1NF属性值不可再分函数依赖依赖类型定义示例完全函数依赖,且依赖于的全部学号课程号成绩X→Y Y X{,}→属性部分函数依赖,但只依赖于的部学号课程号姓名只依X→Y Y X{,}→分属性赖学号传递函数依赖,,且不能决定学号系号系主任X→Y Y→Z Y→→,则是传递依赖X X→Z平凡函数依赖是的子集,则是平学号姓名学号Y X X→Y{,}→凡的非平凡函数依赖不是的子集,则是学号姓名Y XX→Y→非平凡的函数依赖是关系数据库设计的基础理论,表示属性之间的确定性关系如果关系中属性的值确定,X则属性的值也唯一确定,则称函数依赖于,记作Y Y XX→Y函数依赖分析是规范化过程的核心,通过识别和分解不良的函数依赖,可以设计出更好的关系模式,避免数据冗余和更新异常第一范式到第三范式第一范式1NF关系的每个属性都是不可再分的原子值要求消除重复组和多值属性,确保每个属性只包含单一的、不可分割的值例如将地址拆分为省份、城市、街道等第二范式2NF满足,且所有非主属性完全函数依赖于候选键1NF要求消除非主属性对候选键的部分依赖例如将学号课程号姓名拆分,因为姓名只依赖于学号{,}→第三范式3NF满足,且所有非主属性不传递依赖于候选键2NF要求消除非主属性对候选键的传递依赖例如将学号系号系主任拆分,消除系主任对学号的传递依赖→→数据库规范化是一个逐步消除数据冗余的过程从第一范式到第三范式,每一步都进一步减少了数据冗余和潜在的数据不一致性大多数实际应用中,将关系模式规范化到第三范式通常已经足够,能够满足大部分业务需求范式BCNF定义与的区别分解到BCNF BCNF3NF BCNF范式是的改进,要求只要求非主属性不传递依赖于候选键,而识别违反的函数依赖,将关系分解BCNFBoyce-Codd3NF3NF BCNFX→Y关系模式中如果是非平凡函数依赖不则要求所有属性包括主属性都不传递为两个投影和其余属性X→Y YBCNFX,YX,是的子集,则必须是候选键依赖于候选键XX重复此过程直到所有关系都满足需注BCNF简单来说,要求所有决定因素必须是候当一个关系有多个候选键,并且这些候选键有意分解过程中保持函数依赖和无损连接性BCNF选键公共属性时,可能满足但不满足3NF BCNF是实际数据库设计中常用的规范化标准,它消除了更多的数据冗余,提高了数据的一致性然而,并非所有关系都能无损地分解为关系,有时为BCNF BCNF了保持函数依赖,可能需要接受一些冗余多值依赖与第四范式多值依赖第四范式4NF如果关系中,对于的每一个值,存在一组的值与一组如果关系模式中,对于每个非平凡的多值依赖,都是RX,Y,Z XY ZR X→→YXR的值,且这两组值相互独立,则称多值依赖于,记作的超键,则满足第四范式YXX→→Y R要求消除非平凡且非函数依赖的多值依赖4NF多值依赖是函数依赖的扩展,函数依赖是一种特殊的多值依赖分解方法对于非平凡多值依赖,将关系分解为和X→→Y R₁X,Y,其中是剩余属性R₂X,Z Z例如在学生课程爱好中,学生课程,学生爱好,R,,→→→→例如将学生课程爱好分解为学生课程和学生爱好R,,R₁,R₂,因为学生选择的课程与他的爱好无关数据库安全性概述安全性问题安全保护措施数据库面临的主要安全威胁数据库安全控制的多层防御未授权访问身份认证••数据泄露访问控制••数据篡改视图机制••拒绝服务攻击2数据加密••内部人员威胁审计跟踪••安全规范安全管理相关的安全标准和法规数据库安全的管理策略最小权限原则•ISO/IEC27001•职责分离•GDPR•定期安全评估•PCI DSS•安全补丁管理•HIPAA•国家数据安全法安全培训••用户身份认证基于密码的认证最常见的认证方式,用户提供用户名和密码进行身份验证需要强制使用强密码、定期更换密码,并防范暴力破解和密码嗅探攻击生物特征认证基于用户独有的生物特征进行认证,如指纹、虹膜、面部特征等提供更高的安全性,但实施成本较高,且需要考虑生物数据的安全存储问题双因素认证结合两种不同类型的认证因素,通常是所知信息密码和所持物品手机验证码显著提高安全性,即使一种因素被攻破,仍然需要另一种因素才能通过认证证书认证使用数字证书和公钥基础设施进行身份验证通过验证证书的有效性和数字签PKI名来确认用户身份,适合企业环境和高安全性要求的场景访问控制自主访问控制强制访问控制基于角色的访问控制DAC MACRBAC基于用户身份和授权规则控制对数据的访问基于系统强制实施的安全策略控制用户对数基于用户的角色控制对数据的访问权限与数据对象的所有者可以决定谁能访问该对象据的访问每个数据对象和用户都被分配安角色关联,用户通过被分配角色获得相应权并指定允许的操作全级别和类别限实现方式通过和语句管理用户只能访问其安全级别允许的数据对象,实现方式GRANT REVOKE用户权限遵循不读上级和不写下级原则CREATE ROLEManager;特点安全性高,适用于军事和政府系统,GRANT SELECT,INSERT ON Students GRANTSELECT,INSERT,UPDATE ON但灵活性低,管理复杂TO UserAWITH GRANTOPTION;AllTables TOManager;GRANT ManagerTO UserC;REVOKE INSERTONStudentsFROMUserB;特点管理简便,易于权限维护,适合大型组织特点灵活性高,管理简单,但安全性较弱视图机制视图的安全作用视图作为数据库安全控制的重要机制,能够在不改变基本表结构的情况下提供数据访问限制数据列限制通过视图隐藏敏感列,只允许用户访问其工作所需的数据列CREATE VIEWStudentBasicInfo ASSELECTID,Name,DepartmentFROM Students;数据行限制通过WHERE子句限制视图中的行,只允许用户访问符合条件的数据CREATE VIEWDeptStudents ASSELECT*FROM StudentsWHEREDepartment=计算机科学;数据聚合保护使用统计函数和分组操作,只提供汇总信息而非原始数据CREATE VIEWDeptStatistics ASSELECTDepartment,COUNT*as StudentCount,AVGScore asAvgScoreFROM StudentsGROUPBYDepartment;数据加密传输加密静态数据加密保护数据在网络传输过程中的安全,防保护存储在数据库中的敏感数据,即使止数据被窃听或篡改数据文件被盗也无法读取协议加密客户端与数据库透明数据加密加密整个数据•SSL/TLS•TDE服务器间的通信库文件支持数据传输过程中的身份验证和列级加密选择性地只加密特定敏••数据完整性检查感列实施方法配置数据库服务器证书,哈希算法存储密码等敏感信息的••强制使用加密连接单向哈希值密钥管理加密系统的核心组件,负责密钥的生成、存储、分发和更新密钥分层主密钥、数据加密密钥的层次结构•安全密钥存储硬件安全模块或安全密钥库•HSM密钥轮换策略定期更新密钥以增强安全性•数据库审计审计对象审计实现审计策略审计分析数据库审计可以跟踪和记数据库审计可通过多种方制定有效的审计策略需考审计日志的分析是审计过录多种类型的数据库活动,式实现,包括数据库内置虑审计范围、审计级别、程的关键环节,可通过统包括用户登录注销、数据审计功能、触发器审计机审计日志存储与保护、审计分析、异常检测和行为/定义操作、数据修制、第三方审计工具以及计日志分析方法以及审计模式识别等技术发现潜在DDL改操作、数据查询操作系统级审计不同方报告生成等因素过度审的安全威胁现代审计系DML操作、特权使法各有优缺点,应根据具计会影响系统性能,审计统通常集成和机器学习SELECT AI用情况以及系统管理操作体需求选择合适的审计策不足则可能留下安全漏洞算法以提高分析效率等略数据库完整性控制完整性概念数据的完整性是指数据的正确性、一致性和可靠性,是数据库质量的重要保障完整性类型数据库系统支持多种完整性约束机制•实体完整性保证记录的唯一性•参照完整性保证表间引用关系的有效性•域完整性保证数据满足预定义的类型和规则•用户定义完整性满足特定业务规则实现机制使用多种技术手段实现完整性约束•声明性约束PRIMARY KEY,FOREIGN KEY,CHECK等•触发器针对复杂完整性规则•存储过程集中处理数据修改操作•应用层验证在数据提交前进行检查完整性与性能完整性约束虽然保障数据质量,但可能影响系统性能,需要权衡•选择合适的约束级别•优化约束实现方式•考虑批量操作的特殊处理实体完整性和参照完整性实体完整性参照完整性实体完整性规则要求关系的主键值不能为空,且必须唯一,确保每个实体都能被唯一标识参照完整性规则要求外键的值必须是被参照表中主键的现有值,或者为如果允许NULL实现方式实现方式约束创建表时定义主键约束定义外键及其参照关系•PRIMARY KEY•FOREIGN KEY约束组合•UNIQUE+NOT NULLCREATE TABLE EnrollmentsStudentID CHAR10,CREATETABLEStudents CourseIDCHAR8,StudentID CHAR10PRIMARY KEY,FOREIGN KEYStudentIDName VARCHAR50NOT NULL,REFERENCES StudentsStudentID...;;违反处理策略维护策略拒绝任何违反主键约束的操作,如插入重复主键或空主键值级联更新或删除•CASCADE设置为•SET NULLNULL设置为默认值•SET DEFAULT拒绝操作•RESTRICT类似•NO ACTIONRESTRICT用户自定义完整性CHECK约束触发器1定义列值必须满足的条件表达式自动响应数据变化的存储过程4应用逻辑存储过程在应用程序中实现的数据验证集中处理数据修改的预编译程序用户自定义完整性是指根据特定业务规则定义的数据约束,用于确保数据符合业务逻辑要求与实体完整性和参照完整性不同,它不是关系模型固有的,而是根据具体应用需求定制的CHECK约束是最简单的实现方式,可直接在表定义中指定列值必须满足的条件,如CREATETABLEStudent SIDCHAR8,AgeINTCHECK Age=16AND Age=60,Gender CHAR1CHECK GenderIN M,F,...;并发控制概念并发操作并发问题控制方法数据库系统允许多个用户同时访问不加控制的并发访问可能导致多种并发控制的主要方法包括锁机制和修改数据,提高资源利用率和响异常情况,包括丢失更新两个事基于互斥访问控制、时间戳序基应时间多个事务并发执行时,可务先后读取同一数据并修改,后者于事务开始时间排序、多版本并能导致数据不一致问题,需要实施覆盖前者、读脏数据读取未提交发控制,基于数据多版本MVCC并发控制机制保证数据正确性的修改、不可重复读同一事务两管理和乐观并发控制假设冲突较次读取的数据不一致和幻读同一少,提交时检查等不同方法各查询条件下,两次检索结果集不有优缺点,适用于不同场景同性能考量设计并发控制策略时需考虑系统吞吐量、响应时间、资源消耗和死锁风险等因素过于严格的控制会限制并发度,而过于宽松的控制可能导致数据不一致需根据应用特点选择合适的隔离级别和并发控制方法事务的特性ACID原子性Atomicity事务是不可分割的工作单位,要么全部执行成功,要么全部回滚,不会出现部分完成的状态原子性由数据库的恢复子系统实现,通过日志记录和撤销重做操作来保证/一致性Consistency事务执行前后,数据库必须保持一致状态,不违反任何完整性约束事务将数据库从一个一致状态转变为另一个一致状态,这需要原子性、隔离性和持久性的支持,同时也依赖应用程序的正确设计隔离性Isolation并发执行的事务之间不会相互干扰,就像它们是串行执行一样数据库系统通过并发控制机制如锁或实现不同级别的隔离性,从读未提交到可串行化,隔离级别越高,并发性能越MVCC低持久性Durability一旦事务提交,其对数据库的修改就是永久的,即使系统崩溃也不会丢失持久性由数据库的恢复子系统实现,通过预写日志等技术确保变更永久保存到非易失性存储介质中WAL锁机制锁类型定义兼容性应用场景共享锁读锁,允许多个事可与其他锁共存,操作S SSELECT务同时读取数据不与锁共存X排他锁写锁,禁止其他事不与任何其他锁共X UPDATE,DELETE务读取或修改数据存操作意向共享锁表示打算在表的行可与锁共存层次锁定中使用IS IS,IX上加锁S意向排他锁表示打算在表的行可与锁共存层次锁定中使用IX IS,IX上加锁X更新锁防止死锁的特殊锁可读但不可写先读后写的操作U锁机制是数据库并发控制的基本方法,通过限制并发事务对同一数据的访问,防止数据不一致问题锁可以在不同粒度级别实施,如行锁、页锁、表锁等,粒度越细,并发度越高,但系统开销也越大数据库系统自动管理锁的申请和释放,开发者通常只需指定事务的隔离级别在特殊情况下,可以使用显式锁定语句如增强控制SELECT...FOR UPDATE两阶段锁协议锁定阶段解锁阶段协议变体事务只能获取锁,不能释放锁事务只能释放锁,不能获取锁两阶段锁协议的几种变体随着事务的执行,逐步申请所需的锁事务开始释放不再需要的锁严格两阶段锁所有锁在事务结束时释放•••如果无法获取所需的锁,事务将等待锁的释放通常在事务提交或回滚时进行强两阶段锁排他锁在事务结束时释放•••一旦事务开始释放锁,就不能再获取新的锁某些实现中可以提前释放不再需要的锁保守两阶段锁事务开始时获取所有锁•••两阶段锁协议是一种保证事务可串行化的并发控制方法,它将事务的执行分为两个阶段锁定阶段和解锁阶段确保了事务间的冲突操作顺序与其执行的串行顺2PL2PL序一致,从而避免非串行化执行导致的数据不一致虽然能保证可串行化,但可能导致死锁问题大多数数据库系统采用死锁检测或死锁预防机制来解决这一问题2PL死锁问题及其处理死锁概念死锁处理方法死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一死锁预防破坏死锁形成的必要条件种互相等待的现象每个事务都持有其他事务所需的资源,同时一次性锁定事务开始时获取所有需要的锁•又等待其他事务释放资源,导致所有事务都无法继续执行资源有序分配按固定顺序申请资源•使用锁超时锁请求超时自动回滚•形成死锁的四个必要条件死锁检测与解除互斥条件资源不能同时被多个事务访问•等待图检测定期构建并检查资源等待图是否有环保持和等待事务持有资源的同时等待其他资源••选择牺牲者基于事务持续时间、已完成工作量等因素不可抢占资源只能由持有者自愿释放••部分或完全回滚撤销选中事务的操作,释放锁循环等待事务之间形成等待环路••数据库恢复技术故障类型分析根据不同故障类型采取相应恢复策略•事务故障单个事务执行失败,需回滚该事务•系统故障数据库软件崩溃,内存数据丢失,需重做已提交事务•介质故障存储介质损坏,数据永久丢失,需从备份恢复日志机制记录数据变更的历史,是恢复的基础•物理日志记录数据页的实际变化•逻辑日志记录执行的SQL操作•预写日志WAL保证修改先写入日志再写入数据库检查点技术定期将内存数据写入磁盘,缩短恢复时间•静态检查点暂停所有事务处理•准静态检查点仅允许读操作继续•模糊检查点不阻塞事务处理恢复算法ARIES算法的三个阶段恢复流程•分析阶段确定活动事务和脏页•重做阶段重演所有操作保证持久性•撤销阶段回滚未完成事务数据库备份策略备份类型备份计划根据数据覆盖范围划分制定合理的备份计划需考虑•完全备份备份整个数据库•备份窗口执行备份的时间段•差异备份备份自上次完全备份后变化的数据•备份频率多久进行一次备份•增量备份备份自上次备份完全或增量后变化•保留策略备份数据保存多长时间的数据•恢复点目标RPO可接受的数据丢失量•日志备份备份事务日志•恢复时间目标RTO可接受的恢复时间根据数据库状态划分常见备份策略•热备份在线备份,数据库正常运行时进行•每周一次完全备份,每日增量备份•冷备份离线备份,数据库停止服务时进行•每周一次完全备份,每日差异备份•温备份数据库只读状态下进行•每日完全备份,频繁的日志备份备份管理有效的备份管理包括•备份验证定期测试备份的完整性•恢复演练模拟故障场景测试恢复流程•异地存储将备份存储在不同地理位置•备份自动化使用工具实现备份过程自动化•备份监控及时发现备份失败情况数据库性能优化基础查询优化语句层面的优化SQL设计优化语句重写•SQL数据库设计层面的优化避免全表扫描•合理的表结构设计•减少数据传输量•恰当的范式应用•合理使用连接•适当的反范式化•索引优化分区表设计•1索引设计和使用优化选择合适的索引列•复合索引设计•索引维护•硬件优化索引覆盖•服务器硬件层面的优化系统配置存储系统选择•数据库系统参数调优配置•CPU内存分配•网络带宽•并发连接管理•级别•RAID子系统配置•I/O日志设置优化•索引优化索引选择策略为高选择性、经常在子句、条件和子句中使用的列创建索引避免WHERE JOINORDER BY在频繁更新或经常为的列上创建索引考虑列的数据分布特性,选择基数高的列作为索NULL引复合索引设计依据查询条件的使用频率和选择性排列复合索引中的列顺序遵循左前缀原则,最常用和最具选择性的列放在最左侧合理设计复合索引可以减少索引数量,同时满足多种查询需求索引覆盖设计能够覆盖常见查询的索引,使查询只需要从索引中获取数据,而无需访问表数据这种查询称为索引覆盖查询,可以显著提高查询性能,尤其是对大表的查询索引维护定期分析索引使用情况,删除未使用或很少使用的索引监控索引碎片化程度,在适当时机重建或重组索引在大批量数据加载前禁用索引,加载完成后重建索引,可提高数据加载性能查询优化查询分析使用执行计划工具分析查询性能•EXPLAIN/EXECUTION PLAN命令•识别全表扫描和低效连接•分析索引使用情况•查找潜在瓶颈SQL重写优化SQL语句结构和逻辑•只检索需要的列,避免SELECT*•使用WHERE子句限制结果集•避免在WHERE子句中使用函数•使用参数化查询代替动态SQL•适当使用子查询、联合和临时表连接优化提高表连接操作的效率•选择合适的连接类型•连接顺序优化•确保连接列上有索引•限制连接表的数量•使用表别名简化SQL高级优化技术应对复杂查询和大数据量•查询分区•物化视图•并行查询执行•查询提示Hints•统计信息维护分布式数据库简介分布式数据库概念分布式数据库类型关键技术与挑战分布式数据库是物理上分散但逻辑上统一的主要类型核心技术数据库,数据存储在网络上的多个计算机节同构分布式数据库所有节点使用相同分布式查询优化••点,由分布式数据库管理系统管理DDBMSDBMS分布式事务协议如•2PC异构分布式数据库节点使用不同•DBMS复制一致性协议•基本特征主从模式一个主节点多个从节点•分布式锁管理••数据分片数据水平或垂直划分•对等模式所有节点地位相同主要挑战•数据复制提高可用性和查询性能•联邦数据库多个自治数据库组成定理约束位置透明性用户无需知道数据具体位置•CAP•按一致性模型分类网络延迟与分区•强一致性系统保证全局一致分布式查询处理跨节点执行查询•复杂的故障处理••最终一致性系统短期内允许不一致分布式事务管理保证全局一致性•跨节点性能优化••系统弱一致性但高可用•BASE数据库概述NoSQL概念与特点NoSQL是一类非关系型数据库,设计用于解决关系数据库在特定场景下的限制NoSQLNot OnlySQL数据库类型NoSQL2根据数据存储模型划分为键值存储、文档存储、列族存储和图数据库四种主要类型定理CAP分布式系统不能同时满足一致性、可用性和分区容忍性三个特性C AP应用场景NoSQL4大数据存储、高并发应用、实时数据分析、社交网络关系存储等领域Web数据库具有水平可扩展性强、灵活的数据模型、高性能和高可用性等特点,适合处理大规模、结构多变的数据不同类型的数据库各有优势键值存储如NoSQL NoSQL适合缓存和会话管理;文档存储如适合存储半结构化数据;列族存储如适合大规模写入和时序数据;图数据库如适合复杂关系分析RedisMongoDBCassandraNeo4j在实际应用中,通常与关系型数据库共存,形成多模型数据管理方案,根据不同数据和业务需求选择合适的存储技术NoSQL大数据处理技术大数据处理技术是处理超出传统数据库能力范围的数据集的专门技术体系这些技术通常基于分布式计算原理,能够横向扩展以处理级甚至级数据PB EB核心技术包括分布式文件系统如提供可靠的大规模数据存储;批处理框架如、支持复杂计算任务;流处理引擎如、实HDFSMapReduce SparkKafka StreamsFlink现实时数据处理;资源管理系统如、统一调度计算资源;和数据库提供灵活高效的数据存储方案YARN KubernetesNoSQL NewSQL这些技术共同构成了现代大数据处理生态系统,为数据挖掘、机器学习和人工智能应用提供了基础支持数据仓库与数据挖掘商业智能应用决策支持与预测分析数据挖掘从数据中发现模式和知识OLAP分析3多维度交互式数据分析数据仓库4面向主题的集成数据环境ETL过程数据抽取、转换和加载业务数据源各类运营数据库和外部数据数据仓库是一个面向主题的、集成的、随时间变化的、不可更新的数据集合,用于支持管理决策与操作型数据库不同,数据仓库专注于分析而非事务处理,采用星型或雪花模型组织数据,支持复杂的查询和报表需求数据挖掘是从大量数据中提取潜在有用信息和知识的过程,常用技术包括分类、聚类、关联规则、序列模式和异常检测等数据挖掘与机器学习紧密结合,广泛应用于市场营销、风险管理、欺诈检测和科学研究等领域数据库应用开发实例数据库设计开发应用程序开发SQL根据业务需求设计数据库模式,确定实体关编写高效的语句实现各种数据操作功能,使用编程语言如、、开SQLJava PythonPHP系,进行规范化处理,并定义完整性约束包括复杂查询、事务处理和存储过程我们发与数据库交互的应用程序,处理数据访问在实例中,我们将设计一个包含用户、商品、将开发订单处理、库存管理、用户账户管理逻辑,实现业务功能我们将构建一个支持订单等表的电子商务数据库等核心功能的代码用户注册、商品浏览、购物车和订单管理的SQL应用Web在这个综合实例中,我们将完整展示从需求分析、数据库设计到应用程序开发的整个过程,重点关注数据库技术在实际系统中的应用通过实践,我们将应用本课程学习的各种概念和技术,体验数据库系统的开发流程课程总结与展望5核心理论模块数据模型、关系代数、规范化理论等基础知识10+实用技术SQL、索引设计、性能优化等实际应用技能3新兴方向NoSQL、大数据处理、分布式数据库等前沿技术∞学习价值数据库技术是IT领域最具价值的永恒知识通过本课程的学习,我们系统掌握了数据库的基本概念、设计方法和实现技术,从关系数据库理论到实际应用开发,建立了完整的知识体系数据库技术作为信息系统的核心组件,具有广泛的应用前景未来数据库技术的发展趋势包括云原生数据库的普及、多模型数据库的融合、AI驱动的自治数据库、实时分析处理的增强以及区块链与数据库的结合等希望同学们在课程结束后能够继续关注这一领域的发展,将所学知识应用到实践中,成为数据管理的专业人才。
个人认证
优秀文档
获得点赞 0