




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章
数据库设计新疆大学软件学院本章重点第5章数据库设计概念结构设计逻辑结构设计已经介绍了数据库基本概念,操作方法,规范化的方法。如何根据客户需求,完成软件系统的数据库设计是软件开发的关键性工作。本章将系统的讨论数据库设计步骤。5.1数据库设计概述5.2系统需求分析5.3概念结构分析5.4逻辑结构设计5.5物理结构设计5.6数据库实施5.7数据库运行和维护5.8小结5.1数据库设计概述第5章数据库设计的任务、内容和特点5.1.1数据库设计的任务数据库设计是指根据用户需求研制数据库结构和行为的过程。数据库设计的内容结构设计行为设计概念设计、逻辑设计和物理设计应用程序使用数据库的方法5.1数据库设计概述第5章数据库设计的任务、内容和特点5.1.1数据库设计的特点结构源于行为——强调结构设计与行为设计相结合行为总是变化——“反复探寻,逐步求精”5.1数据库设计概述
第5章数据库设计方法简述5.1.2直观设计规范设计法人工分析软件工程语言基于E-R模型的数据库设计方法——基于图构造基于3NF的数据库设计方法——基于属性和属性依赖基于视图的数据库设计方法——基于各类应用模式自动化方法5.1数据库设计概述第5章数据库设计的步骤5.1.3按规范设计法可将数据库设计分为六个阶段1.系统需求分析阶段——确定边界,数据字典2.概念结构设计阶段——表达用户需求的概念模型3.逻辑结构设计阶段——由概念模型得出的数据模型4.物理结构设计阶段——存储结构和存取方法5.数据库实施阶段——数据入库,转存到用户系统中6.数据库运行与维护阶段——保持数据完整性5.1数据库设计概述第5章数据库系统设计案例5.1.4为便于读者理解具体数据库系统的设计过程,本章将使用案例驱动模式,介绍数据库设计的操作过程。案例将围绕本科教学环节中的核心业务——任课和选课。5.2系统需求分析第5章需求分析的任务5.2.1需求分析的任务:1.调查分析用户活动2.收集和分析需求数据,确定系统边界3.编写需求分析说明书5.2系统需求分析第5章需求分析的方法5.2.2数据流图(行为)用命名的箭头表示数据流用圆圈表示处理方块表示数据来源和去向双画线表示需要数据存储数据流数据流数据源数据处理数据输出业务需求数据需求图5.4数据流图数据存储5.2系统需求分析第5章需求分析的方法5.2.2付款凭证报销单报销人审查分录数据流数据流数据源数据处理数据输出业务需求数据需求数据流图示例数据存储报销登记5.2系统需求分析第5章需求分析的方法5.2.2数据字典(结构)数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。在需求分析阶段,它通常包含以下四部分内容:数据项最终形成的数据流图和数据字典为系统分析报告的主要内容,这是下一步进行概念结构设计的基础。数据存储数据流
处理过程5.2系统需求分析第5章需求分析应用案例5.2.3案例的数据流图图5-5任课业务的DFD5.2系统需求分析第5章需求分析应用案例5.2.3案例的数据流图图5-6选课业务的DFD5.2系统需求分析第5章需求分析应用案例5.2.3案例的数据字典在进行数据项的定义过程中,有两方面注意事项:一方面是每一个数据结构在实际生活中都存在诸多数据项,不会将所有内容都定义为数据项,仅会根据业务需求,选择适量的数据项。另一方面,除定义数据结构和数据项外,还需定义数据流、数据存储和数据处理过程。5.3概念结构设计第5章概念结构设计的必要性5.3.1概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模型。(1)从逻辑设计中分离出概念设计以后,各阶段的任务相对单一化,设计复杂程度大大降低,便于组织管理。(2)概念模型不受特定的DBMS的限制,也独立于存储安排和效率方面的考虑,因而比逻辑模型更为稳定。(3)概念模型不含具体的DBMS所附加的技术细节,更容易为用户所理解,因而更有可能准确反映用户的信息需求。5.3概念结构设计第5章概念结构设计的必要性5.3.1图5-7数据库各级模型的形成(a)(b)5.3概念结构设计第5章概念模型的特点及表示5.3.2真实充分地反映现实世界易于交流和理解易于修改和扩充易于向各种数据模型转换概念模型特点5.3概念结构设计第5章概念模型的特点及表示5.3.2学生学号选修(a)实体型(b)属性(c)联系1:11:nm:n
E-R图的基本成分E-R模型是最著名、最实用的一种是概念模型。5.3概念结构设计第5章概念模型的特点及表示5.3.2实体之间的联系,有一对一(1:1),一对多(1:n)和多对多(m:n)三种联系类型。系主任成绩领导系学生属于系学生选修课程111nnmE-R图的几种关系(a)两个实体型之间的联系5.3概念结构设计第5章概念模型的特点及表示5.3.2E-R图的两个以上实体间的联系数量供应商供应零件n1项目n领导职工1n(b)多个实体型之间的联系(c)同一实体集内部的联系5.3概念结构设计第5章概念模型的特点及表示5.3.2举例说明图5-18学生与课程联系的完整的E-R图5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3概念结构设计的方法自底向上——由精细到整体自顶向下——逐步求细逐步扩张——由核心逐渐向外扩充混合策略——自顶向下+自底向上5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3概念结构设计的步骤需求分析DFD,DD数据抽象,局部视图设计视图集成局部E-R图全局E-R图逻辑结构设计征求意见用户参与图5-15自底向上方法的设计步骤5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3数据抽象与局部E-R模型设计E-R方法
描述现实世界概念结构模型的有效方法。
用E-R方法建立的概念结构模型称为E-R模型,或称为E-R图。数据抽象分类聚集将一组具有某些共同特性和行为的对象抽象为一个实体将对象类型的组成成分抽象为实体的属性5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3数据抽象与局部E-R模型设计局部E-R模型设计①属性必须是不可分的数据项,不能再由另一些属性组成。②属性不能与其他实体具有联系,联系只能发生在实体之间。5.3概念结构设计概念结构设计的方法与步骤5.3.3局部E-R模型设计
例如,教师实体有工号、姓名、性别、出生日期、职称、院系等属性,如不需对院系再进行更详细的分析,则“系别”作为教师实体的一个属性存在就够了,但如果还需要对“系别”进行进一步的分析,如需要记录或分析系编号、系名称、系主任、联系电话等,那么“系别”需要升级为实体5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3图5-16系别作为一个属性或实体局部E-R模型设计5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3每名学生只属于一个院系,一个院系可以有多名学生;每名教师只属于一个院系,一个院系可以有多名教师。每名学生可选修多门课程,每门课程可被多名学生选修。每门课程可以由多位教师教授,每位教师可以教授多门课程。每个学生每门课程学完后会考试,并需记录考试成绩。局部E-R模型设计5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3
对每名学生需要记录学号、姓名、性别、出生日期和系别;教师需要记录工号、姓名、性别、职称、工资、出生日期和系别;授课课程需要记录课程号、课程名和先修课;选修课程需记录课程号、课程名和学分;授课关系需要记录课程号、教师号;课程成绩需要记录学号、课程号和成绩。局部E-R模型设计5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3图5-17教师和授课课程的局部E-R图局部E-R模型设计5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3全局E-R模型设计视图集成的方法:多元集成法,一次性将多个局部E-R图合并。二元集成法,首两个重要的局部E-R图合并。5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3局部E-R图合并(消除冲突)优化(消除不必要的冗余)基本E-R图初步E-R图分析规范化理论5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3合并合并局部E-R图,消除局部E-R图之间的冲突,生成初步E-R图冲突属性冲突命名冲突结构冲突属性域冲突属性取值单位冲突同名异义异名同义同一对象在不同应用中有不同的抽象同一实体在不同应用中属性组成不同同一联系在不同应用中呈现不同类型5.3概念结构设计第5章概念结构设计的方法与步骤5.3.3优化消除不必要的冗余,生成基本E-R图。所谓冗余,在这里指冗余的数据和实体之间冗余的联系。冗余的数据是指可由基本的数据导出的数据,冗余的联系是由其他的联系导出的联系。通常采用分析的方法消除冗余。5.3概念结构设计第5章概念结构设计案例5.3.4概念结构设计案例
以前面的学校教务管理系统为例,将学生和选修课程、教师和授课课程两个局部E-R图合并为一个全局E-R图,进行合并操作时,发现这两个局部E-R图中都有“课程”实体,但在两个局部E-R图中的名称不一,即存在命名冲突,所包含的属性不完全相同,即存在结构冲突。消除该冲突的方法是:合并后,统一为“课程”实体名,两个局部E-R图中的“课程”实体属性并集。在局部E-R模型设计基础上,进行局部E-R模型的合并,生成全局E-R图。5.3概念结构设计第5章概念结构设计案例5.3.4图5-19合并后的全局E-R图5.4逻辑结构设计第5章逻辑结构设计的任务和步骤5.4.1初构关系模式设计E—R图关系模式规范化模式评价是否改进以DBMS语法描述模式改进是否网状模型、层次模型和关系模型概念结构设计逻辑结构设计物理结构实现设计阶段5.4逻辑结构设计第5章初构关系模式设计5.4.2转换原则E—R图实体属性联系关系模式5.4逻辑结构设计第5章初构关系模式设计5.4.2总体原则:一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的标识符就是关系的码,实体的主码为关系的主码。联系的处理:一个联系转换为一个关系模式,有三种情况:如果联系为1:1,则每个实体的主码都是关系的候选码;如果联系为1:n,则n端实体的主码是关系的主码;如果联系为n:m,则每个实体的主码的组合是关系的主码。
转换原则5.4逻辑结构设计第5章初构关系模式设计5.4.2具体做法(1)把每一个实体转换为一个关系。(2)把每一个联系转换为关系模式。(3)特殊情况的处理。图5-23三个及三个以上实体间的联系转换为关系模式5.4逻辑结构设计第5章关系模式规范化5.4.3确定范式级别实施规范化处理需求分析阶段概念结构设计阶段逻辑结构设计阶段
用函数依赖的概念分析和表示各个数据项之间的联系
以规范化理论为指导,确定关系主码,消除初步E-R图中冗余的联系
从E-R图向数据模型转换过程中,用模式合并与分解方法达到指定的数据库规范化级别
根据需求分析阶段得到的处理要求,分析这些模式对于应用环境是否合适,确定是否要对某些模式进行分解或合并。5.4逻辑结构设计第5章模式评价和优化5.4.4模式评价功能评价(出现问题,回溯分析)对照需求分析的结果,检查规范化后的关系模式集合是否支持用户所有的应用要求。性能评价(执行效果)对实际性能进行估计,包括逻辑记录的存取数、传送量以及物理结构设计算法的模型等。5.4逻辑结构设计第5章模式评价和优化5.4.4模式优化如果因为系统需求分析、概念结构设计的疏漏导致某些应用不能得到支持,则应该增加新的关系模式或属性。如果因为性能考虑而要求改进,则可采用合并或分解的方法。
(1)合并:减少连接操作,提高查询效率。
(2)分解:提高数据操作的效率和存储空间的利用率。5.4逻辑结构设计第5章逻辑结构设计案例5.4.5案例的初始关系模式设计根据5.4.2节的转换规则,将全局E-R图转化为4个实体和4个联系,分别转化成关系模式。案例关系模式的规范化由于上述转换基于的是全局E-R模型,因此,上述转换得到的模式满足3NF。5.4逻辑结构设计第5章逻辑结构设计案例5.4.5案例关系模式的评价及改进对关系模式进行合并处理,合并具有相同主码的关系模式。5.5物理结构设计第5章确定物理结构5.5.1存储方法的选择确定物理结构:在关系数据库中主要指存取方法和存储结构。评价物理结构:评价的重点是时间和空间效率。聚集——针对重复的存储和高频的查询。索引——保证数据的完整性,提高查询效率,但注意维护成本。5.5物理结构设计第5章确定物理结构5.5.1确定数据的存储结构存储结构:限定了可能访问的路径和存储记录一般的存储方式有顺序存储、散列存储和聚集存储。顺序存储的平均查找次数为表中记录数的一半;散列存储的平均查找次数由散列算法决定;聚集存储可提高某个属性(或属性组)的查询速度。可以把这个或这些属性(称为聚集码)上具有相同值的元组集中存放在连续的物理块上,聚集存储可以极大提高针对聚集码的查询效率。5.5物理结构设计第5章确定物理结构5.5.1数据存放位置的设计为了提高系统性能,应该根据应用情况将数据的易变部分、稳定部分、经常存取部分和存取频率较低部分分开存放多磁盘下:将表和索引、日志和数据库对象分开存储。系统配置的设计DBMS产品一般都提供了一些系统配置变量、存储分配参数,供设计人员和DBA对数据库进行物理优化。5.5物理结构设计第5章物理结构设计的评价5.5.2物理结构设计过程中要重点对时间效率、空间效率、维护代价和各种用户要求进行权衡,选择一个较优的方案作为数据库的物理结构。方案应用于具体的数据库管理系统时,主要考虑操作开销,即为使用户获得及时、准确的数据所需的开销和计算机资源的开销。5.6数据库实施第5章建立实际数据库结构5.6.1用数据库管理系统提供的数据描述逻辑设计和物理设计的结果,得到模式和子模式,经编译和运行后,形成目标模式,建立实际数据库结构。DBMS提供的数据定义语言(DDL)可以定义数据库结构。5.6数据库实施第5章加载数据5.6.21、加载数据是数据库实施阶段的主要工作。加载前有大量的数据准备工作要做。为了保证装入数据库中数据的正确无误,必须高度重视数据的校验工作。2、如果在数据库设计时,原来的数据库系统仍在使用,那么数据的转换工作是将原来旧系统中的数据转换成新系统中的数据结构,再将旧的数据导入新的数据库。3、数据的清洗、分类、综合和转换通常需要多次才能完成,因而输入子系统的设计和实施是很复杂的,需要编写应用程序。5.6数据库实施第5章应用程序编码与调试5.6.3数据库应用程序编码属于程序设计范畴,包括开发技术与开发环境的选择、系统设计、编码、调试的等工作,同时数据库应用程序有自己的一些特点。为了加快应用系统的开发速度,一般选择集成开发环境,利用代码辅助生成、可视化设计、代码错误检测和代码优化技术,实现高效的应用程序编写和调试,可使用开发工具数据库访问插件,在统一开发环境中进行程序编码和数据库调试工作。5.6数据库实施第5章数据库试运行5.6.4(1)功能测试。实际运行应用程序,测试它们能否完成各种预定的功能。(2)性能测试。测试系统的性能指标,分析是否符合设计目标。应用程序编写完成,并有了一小部分数据加载后,应该按照系统支持的各种应用分别运行应用程序在数据库上的操作情况,对系统的功能和性能进行测试,检查是否满足设计目标,这就是数据库的试运行阶段,或者称为联合调试阶段。5.6数据库实施第5章整理文档5.6.5在程序的编码调试和试运行中,应该记录所发现的问题和解决方法,整理存档作为资料,为正式运行和改进时提供参考。全部的调试工作完成后,应该编写应用系统的技术说明书和使用说明书,在正式运行时随系统一起交给用户。完整的文件资料是应用系统的重要组成部分,但这一点常被忽视。必须强调这一工作的重要性,引起用户与设计人员的充分注意。5.6数据库实施第5章建立实际数据库结构(DDL—Table&View)装入数据-耗时(筛选、转换、校验)应用程序编码与调试(借助开发工具)数据库试运行(功能和性能的测试)整理文档逻辑设计结果物理设计结果可在物理阶段设计子系统部分测试原则注意备份工作编写使用说明书编写技术说明书5.7数据库运行和维护第5章数据库经过试运行符合设计目标就能进入正式运行和维护阶段,在数据库运行阶段,对数据库的经常性维护工作主要由数据库系统管理员完成,主要任务包括以下内容:数据库的备份和恢复:对数据库进行定期备份,出现故障,及时恢复。维护数据库的安全性和完整性:监管权限,调整转储计划。监测并改善数据库性能:按照性能监控调整功能,最小化的影响现有业务。重新组织和重新构造数据库:存储位置,回收垃圾,减少指针等。5.8小结第5章数据库设计的六个阶段包括:系统需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行与维护对于每一阶段,要求掌握其相应的任务、方法和步骤。第6章
数据库安全保护6.1数据库的安全性6.2完整性控制6.3事务的并发控制和封锁6.4数据库的备份和还原本章引言随着社会信息化的不断深化,各种数据库的使用也越来越广泛。例如,一个企业管理信息系统的全部数据、国家机构的事务管理信息、国防情报机密信息、基于Web动态发布的网上购物信息等等,它们都集中或分布地存放在大大小小的数据库中。数据库系统中的数据是由DBMS统一进行管理和控制的。为了适应和满足数据共享的环境和要求,DBMS要保证整个系统的正常运转,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后能迅速地恢复正常,这就是数据库的安全保护。新疆大学软件学院DBMS对数据安全的保护功能安全性控制完整性控制并发性控制数据库恢复第6章6.1数据库的安全性安全性问题新疆大学软件学院黑客公开CSDN网站数据库600余万用户资料泄密(2011)第6章新疆大学软件学院如家汉庭酒店2000万开房数据1.71G/BAK,792M/CSV(2013)6.1数据库的安全性安全性问题第6章新疆大学软件学院携程网全面瘫痪疑似数据库物理删除(2015)6.1数据库的安全性安全性问题第6章新疆大学软件学院6.1数据库的安全性问题的提出第6章数据库的主要特点是数据共享数据共享必然带来数据库的安全性问题数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验数据、市场需求分析、
市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据新疆大学软件学院6.1数据库的安全性问题的提出第6章数据库的主要特点是数据共享数据共享必然带来数据库的安全性问题数据共享不能是无条件的共享数据库中数据的共享是在DBMS统一严格的控制之下的共享,即只允许有合法使用权限的用户访问允许他存取的数据数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一。新疆大学软件学院6.1数据库的安全性数据库安全性的含义第6章安全性问题有许多方面:(1)法律、社会和伦理方面时问题。例如请求查询信息的人是不是有合法的权力(2)物理控制方面的问题。例如计算机机房或终端是否应该加锁或用其他方法加以保护(3)政策方面的问题。确定存取原则,允许哪些用户存取哪些数据(4)运行方面的问题。使用口令时,如何使口令保持秘密(5)硬件控制方面的问题。
CPU是否提供任何安全性方面的功能,诸如存储保护键或特权工作方式(6)操作系统安全性方面的问题。在主存储器和数据文件用过以后,操作系统是否把它们的内容清除掉(7)数据库系统本身的安全性方面的问题。数据库的安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。数据库安全性回顾什么是数据库的安全性?保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。什么是数据的保密?数据保密是指用户合法地访问到机密数据后能否对这些数据保证不泄密。通过制订法律道德准则和政策法规来保证。计算机系统安全性保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。立体防御:进不来、看不见、搞不掉、跑不了三类安全性问题技术安全类管理安全类政策法律类第6章
可信计算机系统评测标准TCSEC(桔皮书)1985年美国国防部(DoD)正式颁布《DoD可信计算机系统评估标准》,简称TCSEC或DoD85。TDI(紫皮书)1991年4月美国NCSC(国家计算机安全中心)颁布了《可信计算机系统评估标准关于可信数据库系统的解释》,简称TDI。将TCSEC扩展到数据库管理系统。定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
数据库的安全标准可信计算机系统6.1数据库的安全性第6章6.1.16.1.1数据库的安全标准第6章安全标准发展历程
TCSEC/TDI安全级别划分四组七个等级。按系统可靠或可信程度逐渐增高。各安全级别之间具有一种偏序向下兼容的关系。
安全级别安全级别
定义A1验证设计(VerifiedDesign)B3安全域(SecurityDomains)
B2结构化保护(StructuralProtection)
B1标记安全保护(LabeledSecurityProtection)
C2受控的存取保护(ControlledAccessProtection)
C1自主安全保护(DiscretionarySecurityProtection)
D最小保护(MinimalProtection)6.1.1数据库的安全标准第6章
D级将一切不符合更高标准的系统均归于D组典型例子:DOS是安全标准为D的操作系统,DOS在安全性方面几乎没有什么专门的机制来保障C1级非常初级的自主安全保护,能够实现对用户和数据的分离,进行自主存取控制(DAC),保护或限制用户权限的传播。C2级安全产品的最低档次;提供受控的存取保护(MAC),将C1级的DAC进一步细化,以个人身份注册负责,并实施审计和资源隔离;达到C2级的产品在其名称中往往不突出“安全”(Security)这一特色。典型例子操作系统:Microsoft的WindowsNT3.5数据库:Oracle公司的Oracle7,Sybase公司的SQLServer11.0.6 安全级别(D级、C级)第6章
安全级别(B1级、B2级)第6章B1级标记安全保护。“安全”(Security)或“可信的”(Trusted)产品。对系统的数据加以标记,对标记的主体和客体实施强制存取控制(MAC)、审计等安全机制。典型例子操作系统:数字设备公司的SEVMSVAXVersion6.0,HP-UXBLSrelease9.0.9+数据库:Oracle公司的TrustedOracle7,Sybase公司的SecureSQLServerversion11.0.6,Informix公司的IncorporatedINFORMIX-OnLine/Secure5.0B2级结构化保护建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC和MAC。经过认证的B2级以上的安全系统非常稀少典型例子操作系统:TrustedInformationSystems公司的TrustedXENIX一种产品网络产品:CryptekSecureCommunications公司的LLCVSLAN一种产品数据库:没有符合B2标准的产品
安全级别(B3级、A1级)第6章B3级安全域该级的TCB必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。A1级验证设计:即提供B3级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现说明:B2以上的系统还处于理论研究阶段;应用多限于一些特殊的部门如军队等;美国正在大力发展安全产品,试图将目前仅限于少数领域应用的B2安全级别下放到商业应用中来,并逐步成为新的商业标准。自主可控的必要性思政插入第六章课程思政视频数据库安全等级——GB/T20273-2019第6章【国家标准】GB/T20273-2019:信息安全技术-数据库管理系统安全技术要求D第一级第二级第三级第四级第五级A1最小保护用户自主保护级系统审计保护级安全标记保护级结构化保护级访问验证保护级验证设计C1C2B1B2B3可靠性、可信程度逐渐增高向下兼容高等级包含低等级的所有保护机制CC评估保证级划分第6章评估保证级定义TCSEC安全级别(近似)EAL1功能测试(functionallytested)EAL2结构测试(structurallytested)C1EAL3系统地测试和检查(methodicallytestedandchecked)C2EAL4系统地设计、测试和复查(methodicallydesigned,testedandreviewed)(semiformallydesignedandtested)B1EAL5半形式化设计和测试(semiformallydesignedandtested)B2EAL6半形式化验证的设计和测试(semiformallyverifieddesignandtested)B3EAL7形式化验证的设计和测试(formallyverifieddesignandtested)A1
数据库安全性控制存在的问题6.1数据库的安全性第6章用户非法使用数据库可以有很多种情况。例如:用户编写一段合法的程序绕过DBMS及其授权机制,通过操作系统直接存取、修改或备份数据库中的数据;直接或编写应用程序执行非授权操作;破坏安全性的行为可能是无意的,故意的,恶意的,都应该严格加以控制。因此,系统还要考虑数据信息的流动问题并加以控制,否则有潜在的危险性。因为数据的流动可能使无权访问的用户获得访问权利。6.1.26.1.2数据库安全性控制
第6章安全性控制的一般方法新疆大学软件学院安全性控制模型不安全因素众多:火灾、停电、密码泄露、人员变更、设计缺陷等物理位置人员操作系统网络数据库系统6.1.2数据库安全性控制
第6章安全性控制的一般方法1、当用户进入计算机系统时,系统首先根据输入的用户标识进行身份的鉴定,只有合法的用户才准许进入系统。4、数据最后可以通过密码的形式存储到数据库中。3、DBMS是建立在操作系统之上的,操作系统应能保证数据库中的数据必须由DBMS访问,而不允许用户越过DBMS,直接通过操作系统访问。2、对已进入系统的用户,DBMS还要进行存取控制,只允许用户进行合法的操作。6.1.2数据库安全性控制
第6章安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密审计(Audit)6.1.2数据库安全性控制
第6章用户标识和鉴定数据库系统是不允许一个未经授权的用户对数据库进行操作的。用户标识和鉴定是系统提供的最外层的安全保护措施,其方法是由系统提供一定的方式让用户标识自己的名字或身份,系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供机器的使用权。常见方法用户名或用户标识符用户名和口令口令鉴别(静态/动态)生物特征、智能卡等鉴别方式16.1.2数据库安全性控制
第6章用户标识和鉴定的常见方法1.用一个用户名或用户标识符来标明用户的身份,系统以此来鉴别用户的合法性。如果正确,则可进入下一步的核实,否则,不能使用计算机。2.用户标识符是用户公开的标识,它不足以成为鉴别用户身份的凭证。为了进一步核实用户身份,常采用用户名与口令(Password)相结合的方法,系统通过核对口令判别用户身份的真伪。系统有一张用户口令表,为每个用户保持一个记录,包括用户名和口令两部分数据。用户先输入用户名,然后系统要求用户输入口令。为了保密,用户在终端上输入的口令不显示在屏幕上。系统核对口令以鉴别用户身份。3.通过用户名和口令来鉴定用户的方法简单易行,但该方法在使用时,由于用户名和口令的产生和使用比较简单,也容易被窃取,因此还可采用更复杂的方法。
用户标识和鉴定的方法有多种,为了获得更强的安全性,往往是多种方法并举,常用方法有:16.1.2数据库安全性控制
第6章用户标识和鉴定的常见方法(续)(1).静态口令鉴别静态口令一般由用户自己设定,这些口令是静态不变的(2).动态口令鉴别口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法(3).生物特征鉴别通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等(4).智能卡鉴别智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能16.1.2数据库安全性控制
第6章安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密审计(Audit)6.1.2数据库安全性控制
第6章用户存取权限控制在数据库系统中,每个用户只能访问他有权存取的数据并执行有权使用的操作。因此,必须预先定义用户的存取权限。对于合法的用户,系统根据其存取权限的定义对其各种操作请求进行控制,确保合法操作。存取权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。用户存取权限指的是不同的用户对于不同的数据对象允许执行的操作权限。26.1.2数据库安全性控制
第6章用户存取权限控制在数据库系统中,定义用户存取权限称为授权(Authorization)。用户的存取权限有两种:系统特权和对象特权。系统特权是由DBA授予某些数据库用户,只有得到系统特权,才能成为数据库用户。对象特权可以由DBA授予,也可以由数据对象的创建者授予,使数据库用户具有对某些数据对象进行某些操作的特权。在系统初始化时,系统中至少有一个具有DBA特权的用户,DBA可以通过GRANT语句将系统特权或对象特权授予其他用户。对于已授权的用户可以通过REVOKE语句收回所授予的特权。26.1.2数据库安全性控制
第6章用户存取权限控制新疆大学软件学院这些授权定义经过编译后以一张授权表的形式存放在数据字典中。授权表主要有三个属性,用户标识、数据对象和操作类型。用户标识不但可以是用户个人,也可以是团体、程序和终端。在非关系系统中,存取控制的数据对象仅限于数据本身。而关系系统中,存取控制的数据对象不仅有基本表、属性列等数据本身,还有内模式、外模式、模式等数据字典中的内容。授权表用户标识数据对象操作类型对于授权表,衡量授权机制的一个重要指标就是授权粒度,即可以定义的数据对象的范围,在关系数据库中,授权粒度包括关系、记录或属性。授权粒度越细,授权子系统就越灵活,能够提供的安全性就越完善。不同的用户对于不同的数据对象允许执行的操作权限不同。用户只能访问其有权限存取的数据,执行其有权限进行的操作。26.1.2数据库安全性控制
第6章安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密审计(Audit)6.1.2数据库安全性控制
第6章定义视图3为不同的用户定义不同的视图,可以限制各个用户的访问范围。通过视图机制把要保密的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。例如,USER1只能对计算机系的学生进行操作一种方法是通过授权机制对USER1授权另一种简单的方法就是定义一个计算机系的视图但视图机制的安全保护功能太不精细,往往不能达到应用系统的要求,其主要功能在于提供了数据库的逻辑独立性。6.1.2数据库安全性控制
第6章定义视图3视图的作用
(1)对数据提供一定程度的安全保护;(2)提供数据独立性。在实际应用中,通常将视图机制与授权机制配合使用:(1)首先用视图机制屏蔽掉一部分保密数据(2)对视图再进一步定义存取权限(3)间接实现了支持存取谓词的用户权限定义6.1.2数据库安全性控制
第6章定义视图--例题3例6-1:设置王平只能检索计算机系学生的信息的权限先建立计算机系学生的视图CS_StudentCREATEVIEWCS_StudentASSELECT*FROMSWHEREDp='计算机';在视图上进一步定义存取权限
GRANTSELECTONCS_StudentTO‘王平’;6.1.2数据库安全性控制
第6章安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密
审计(Audit)6.1.2数据库安全性控制
第6章数据加密4前面介绍的几种数据库安全措施,都是防止从数据库系统窃取保密数据,不能防止通过不正常渠道非法访问数据。例如:偷取存储数据的磁盘,或在通信线路上窃取数据,为了防止这些窃密活动,比较好的办法是对数据加密。数据加密是防止数据库中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(术语为明文,Plaintext)加密成为不可直接识别的格式(术语为密文,Ciphertext),数据以密码的形式存储和传输。6.1.2数据库安全性控制
第6章数据加密--加密方法4加密方法有两种:一种是替换方法,该方法使用密钥(EncryptionKey)将明文中的每一个字符转换为密文中的一个字符。另一种是转换方法,该方法将明文中的字符按不同的顺序重新排列。通常将这两种方法结合起来使用,就可以达到相当高的安全程度。例如美国1977年制定的官方加密标准,数据加密标准(DataEncryptionStandard,简称DES)就是使用这种算法的例子。数据加密后,对于不知道解密算法的人,即使利用系统安全措施的漏洞非法访问数据,也只能看到一些无法辨认的二进制代码。合法的用户检索数据时,首先提供密码钥匙,由系统进行译码后,才能得到可识别的数据。
6.1.2数据库安全性控制
第6章数据加密--加密方法4目前不少数据库产品提供了数据加密例行程序,用户可根据要求自行进行加密处理,还有一些未提供加密程序的产品也提供了相应的接口,用户用其他厂商的加密程序对数据加密。用密码存储数据,在存入时需加密,在查询时需解密,这个过程会占用大量系统资源,降低了数据库的性能。因此,数据加密功能通常允许用户自由选择,只对那些保密要求特别高的数据,才值得采用此方法。6.1.2数据库安全性控制
第6章安全性控制的一般方法用户标识和鉴定用户存取权限控制定义视图数据加密审计(Audit)
6.1.2数据库安全性控制
第6章审计5对于某些高度敏感的保密数据,必须以审计作为预防手段。审计功能是一种监视措施,跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在一个特殊文件上中,即审计日志(AuditLog)中。前面介绍的各种数据库安全性措施,都可将用户操作限制在规定的安全范围内。但实际上任何系统的安全性措施都不是绝对可靠的,窃密者总有办法打破这些控制。6.1.2数据库安全性控制
第6章审计5记录的内容一般包括:操作类型,如修改、查询等;操作终端标识与操作者标识;操作日期和时间;操作所涉及到的相关数据,如基本表、视图、记录、属性等。利用这些信息,可以重现导致数据库现有状况的一系列事件,以进一步找出非法存取数据的人、时间和内容等。6.1.2数据库安全性控制
第6章审计5KingbaseES中,以SYSSAO连接数据库开启审计功能,执行下面的语句:
ALTERSYSTEMSETENABLE_AUDIT=1;
CALLsys_reload_conf();如若要关闭审计功能,执行下面语句:
ALTERSYSTEMSETENABLE_AUDIT=0;
CALLsys_reload_conf();
使用审计功能会大大增加系统的开销,所以DBMS通常将其作为可选特征,提供相应的操作语句可灵活地打开或关闭审计功能。
KingbaseES数据安全管理三员管理、三权分立6.1数据库的安全性第6章6.1.3TCSEC(可信计算机系统评估准则)安全等级:TCSECB2(四组七个等级。A1,B3,B2,B1,C2,C1,D)三权分立(行政、立法、司法),特权用户:系统管理员(SYSTEM)主要负责执行数据库日常管理的各种操作和自主存取控制。安全管理员(SYSSSO)主要负责强制存取控制规则的制定和管理,且不能创建和操作普通对象。审计管理员(SYSSAO)主要负责数据库的审计,监督前两类用户的操作。且不能创建和操作普通对象。6.1.3KingbaseES数据安全管理机制第6章用户身份鉴别KingbaseES:支持强化口令的身份认证模式(双向可信认证)、外部统一身份认证模式、集中化身份认证模式基于强化口令的身份认证:对数据库用户施加口令复杂度检查、帐户和口令有效期限设置、帐户锁定等安全策略管理等机制;其他身份认证:KingbaseES还支持基于Kerberos、Radius、LDAP认证协议和CA等技术在内的与第三方身份认证产品相结合的外部统一身份鉴别或集中化身份认证方式。6.1.3KingbaseES数据安全管理机制第6章用户身份鉴别KingbaseES数据库连接:支持强化口令的身份认证截图
6.1.3KingbaseES数据安全管理机制第6章数据访问控制与保护在访问控制模型中包括主体、客体和控制策略三个要素。主体指主动对其它实体施加动作的实体;客体是被动接受其他实体访问的实体;控制策略为主体对客体的操作行为和约束条件。这三者之间需要满足基本的安全策略:(1)最小特权原则
(2)最小泄漏原则
(3)多级安全策略6.1.3KingbaseES数据安全管理机制第6章数据访问控制与保护(1)最小特权原则。给主体分配权限时要遵循权限最小化原则,能最大限度地限制主体实施授权行为,可以避免来自突发事件、错误和未授权使用主体的危险。(2)最小泄漏原则。主体执行任务时,按照主体所需要知道的信息最小化的原则分配给主体权利。也就是要保护敏感信息不要被无关人员知道。(3)多级安全策略。主体和客体间的数据流向和权限控制按照安全级别的绝密(TS)、秘密(S)、机密(C)、限制(RS)和无级别(U)五级来划分。可以避免敏感信息的扩散,只有安全级别更高的主体才能够访问。6.1.3KingbaseES数据安全管理机制第6章金仓的数据访问控制与保护KingbaseES支持自主访问控制(DAC)和强制访问控制(MAC)。用户只有同时具有数据库管理员的自主存取控制(DAC)授权和安全管理员的强制存取控制(MAC)授权,才能查看到某些敏感数据。自主访问控制作用是对主体(如用户)操作客体(如表)进行授权管理,它主要包括权限授予、回收及传播。KingbaseESDAC采用存取控制列表(ACL)技术实现。
权限和角色6.1数据库的安全性第6章6.1.4只有当用户被授予适当系统权限或对象权限时,才能执行相应操作。授权方法有:直接授权:利用GRANT命令直接为用户授权。间接授权:先将权限授予角色,然后再将角色授予用户。KingbaseES使用角色的概念来管理数据库的访问权限。一个角色可以被看成是一个数据库“用户”或“用户组”,这取决于角色被怎样设置。角色可以拥有数据库对象(例如,表和函数),并且能够把数据库对象上的权限赋予其他角色。6.1.4权限和角色第6章角色管理(数据库对象管理工具)1在“数据库对象管理工具”中,在数据库导航标签下,通过“数据库->安全性->用户/角色”,右键选择“新建角色”或者“新建用户”。KingbaseES中可通过“数据库对象管理工具”和SQL语句两种方式实现角色的管理。6.1.4权限和角色第6章角色管理(SQL语句)1KingbaseES中用户/角色的创建:CREATEUSER/CREATEROLESUPERUSER|NOSUPERUSER:角色是否是“超级用户”,默认值为NOSUPERUSER。CREATEDB|NOCREATDB:定义新角色创建数据库的能力,默认值为NOCREATEDB。CREATEROLE|NOCREATROLE:定义新角色创建角色的能力,默认值为NOCREATEROLE。LOGIN|NOLOGIN:新角色是否被允许登陆。设置LOGIN的角色被认为是用户,可在客户端登陆数据库。PASSWORD:设置角色的口令。【例6-2】创建用户名为user1、登陆口令为“123456”的用户。CREATEUSERuser1withPASSWORD‘123456’;【例6-3】创建角色名为role1、没有登陆口令的角色。CREATEROLErole1withLOGIN;6.1.4权限和角色第6章角色管理(例题)16.1.4权限和角色第6章权限管理2KingbaseES中用户操作权限分为系统权限、对象权限和列级权限。系统权限:指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。例如,CREATEDB、CREATEROLE、SUPERUSER、SSO、SAO系统权限。(5种)对象权限:指对某个特定的数据库对象执行某种操作的权限。例如,对特定表的插入、删除、修改、查询的权限。
列级权限:对给定的用户授予在给定表或视图上某些列执行操作集。此动作只能为INSERT、UPDATE和REFERENCES。权限管理就是用户登录后只能进行权限范围内的操作,所谓权限就是执行特定类型的SQL命令或访问其他用户的对象的权利。用户在数据库中可以执行什么样的操作,以及可以对哪些对象进行操作,完全取决于该用户所拥有的权限。6.1.4权限和角色第6章权限管理2KingbaseES中的操作权限:系统权限、对象权限和列级权限授权GRANTGRANT<权限>,[,<权限>][ON<对象类型><对象名>]TO<用户>[,<用户>]…[WITHGRANTOPTION];6.1.4权限和角色第6章回收REVOKEREVOKE<权限>,[,<权限>]ON<对象类型><对象名>FROM<用户>[,<用户>]…[CASCADE|RESTRICT];【例6-4】把表S的插入权限授予给用户user1。GRANTINSERTONSTOuser1;【例6-5】把视图S_VIEW的所有可用权限授予用户user2。GRANTALLONS_VIEWTOuser2;6.1.4权限和角色第6章权限管理(对象权限-例题)2【例6-6】从用户user1收回表S的插入权限。REVOKEINSERTONSFROMuser1;【例6-7】从用户user2收回视图S_VIEW的所有权限。GRANTALLONS_VIEWFROMuser2;授权GRANT回收REVOKE6.1.4权限和角色第6章权限管理-对象权限-列级权限2列级权限是对给定的用户授予在给定表或视图上某些列执行操作集。此动作只能为INSERT、UPDATE和REFERENCES。6.1.4权限和角色第6章示例练习-126.1.4权限和角色第6章示例练习-226.1.4权限和角色第6章示例练习-326.1.4权限和角色第6章删除角色2由于角色可以拥有数据库对象并且能持有访问其他对象的特权,删除一个角色常常并非一次DROPROLE就能解决。任何被该用户所拥有的对象必须首先被删除或者转移给其他拥有者,并且任何已被授予给该角色的权限必须被收回。对象的拥有关系可以使用ALTER命令一次转移出去,格式如下:ALTER<对象类型><对象名>OWNERTO<对象类型><对象名>;REASSIGNOWNED命令可以把要被删除的角色old_role拥有的所有对象权限转移给另一个角色new_role,格式如下:REASSINGOWNEDBYold_roleTOnew_role;ALTERREASSIGN
数据库完整性的含义6.2完整性控制第6章6.2.1广义的完整性泛指所有可能引发错误的范畴,包含语义完整性、并发控制、安全控制、DB故障恢复等。狭义的完整性特指语义完整性。通常来说,DBMS具有专门的完整性管理机制与程序来处理语义完整性问题。接下来讨论的也主要是语义完整性。6.2.1数据库完整性的含义第6章关系完整性的分类1与关系的完整性不同,数据库完整性是DBMS内的范畴,从更宏观的角度对数据库的操作进行约束与规范。行的完整性、行的唯一标识、主键约束等;实体完整性EntityIntegrity表的外键需要与其他表的主键对应;参照完整性ReferentialIntegrity允许用户自己对不同粒度的对象添加不同约束;用户自定义完整性User-definedIntegrity6.2.1数据库完整性的含义第6章数据库完整性的定义2数据库的完整性是指保护数据库中数据的正确性、一致性和相容性,防止错误的数据进入数据库造成无效操作。数据库的完整性是指防止合法用户使用数据库时向数据库中加入不符合语义的数据。完整性措施的防范对象是不合语义的数据。只有符合语义约束的合法数据才能进入数据库正确性保证数据之间的逻辑关系是正确的,对数据库更新时,数据库从一个一致状态到另一个一致状态一致性同一个事实的两个数据应当是相同或存在引用制约的,这两个数据可能存放在不同的关系之中。相容性6.2.1数据库完整性的含义第6章完整性与安全性3数据库的完整性与安全性是数据库保护的两个不同方面。完整性措施防范的对象是不合语义的数据,维护的是数据的正确性、一致性、相容性;安全性措施防范的对象是非法用户与非法操作,保证数据不被非法使用、更改、泄密和破坏。完整性控制机制6.2.2完整性规则的组成第6章完整性规则的构成1完整性规则主要由以下三部分构成。触发条件:规定系统什么时候使用完整性规则来检查数据。约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。6.2.2完整性规则的组成第6章规则的执行时间2完整性规则从执行时间上可分为立即执行约束(ImmediateConstraints)和延迟执行约束(DeferredConstraints)。立即执行约束是指在执行用户事务过程中,某一条语句执行完成后,系统立即对此数据进行完整性约束条件检查;延迟执行约束是指在整个事务执行结束后,再对约束条件进行完整性检查,结果正确后才能提交。6.2.2完整性规则的组成第6章规则的构成元素3D(Data):代表约束作用的数据对象,可以是关系、元组和列三种对象;O(Operation):代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行;A(Assertion):代表数据对象必须满足的语义约束,这是规则的主体;C(Condition):代表选择A作用的数据对象值的谓词;P(Procedure):代表违反完整性规则时触发执行的操作过程。一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示【例6-8】对于“学号(SNo)不能为空”的这条完整性约束中,(D,O,A,C,P)的含义分别如下:D:代表约束作用的数据对象为SNo属性;O:当用户插入或修改数据时需要检查该完整性规则,属于立即执行约束;A:SNo不能为空;C:A可作用于所有记录的SNo属性;P:拒绝执行用户请求。6.2.2完整性规则的组成第6章规则的构成元素-例题3完整性约束条件是完整性控制机制的核心。
完整性约束条件的分类6.2完整性控制第6章6.2.3广义的完整性泛指所有可能引发错误的范畴,包含语义完整性、并发控制、安全控制、DB故障恢复等。狭义的完整性特指语义完整性。通常来说,DBMS具有专门的完整性管理机制与程序来处理语义完整性问题。接下来讨论的也主要是语义完整性。6.2.3完整性约束条件的分类第6章从约束条件使用的对象划分1值的约束即对数据类型、数据格式、取值范围和空值等进行规定。(1)对数据类型的约束,包括数据的类型、长度、单位和精度等。(2)对数据格式的约束。(3)对取值范围的约束。(4)对空值的约束。从约束条件使用的对象来划分,可以分为值的约束和结构的约束。6.2.3完整性约束条件的分类第6章从约束条件使用的对象划分1结构的约束即对数据之间联系的约束。(1)函数依赖约束(2NF、3NF、BCNF)。(2)实体完整性约束。
(3)参照完整性约束。(4)统计约束。规定某个属性值与关系多个元组的统计值之间必须满足某种约束条件。例如,规定系主任的奖金不得高于该系的平均奖金的50%,不得低于该系的平均奖金的15%。这里该系平均奖金的值就是一个统计计算值。从约束条件使用的对象来划分,可以分为值的约束和结构的约束。实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变性。注:统计约束实现起来开销很大。6.2.3完整性约束条件的分类第6章从约束对象的状态划分2从约束对象的状态来划分,可以分为静态约束和动态约束。静态约束静态约束是指对数据库每一个确定状态所应满足的约束条件,是反映数据库状态合理性的约束,这是最重要的一类完整性约束。上面介绍的值的约束和结构的约束均属于静态约束。动态约束动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如,学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。
数据完整性的实施6.2完整性控制第6章6.2.4数据完整性的两种实施形式:声明式数据完整性和程序化数据完整性声明式数据完整性
--是实施数据完整性的首选声明式数据完整性是将数据所需符合的条件融入到对象的定义中,这样DBMS会自动确保数据符合事先制定的条件。声明式数据完整性的特点是:①通过针对表和字段定义声明的约束,可使声明式数据完整性成为数据定义的一部分。②使用约束、默认值与规则实施声明式数据完整性。6.2.4数据完整性的实施第6章实施的形式-程序化数据完整性1程序化数据完整性如果所需符合的条件以及该条件的实施均通过所编写的程序代码完成,则这种形式的数据完整性称为程序化数据完整性。程序化数据完整性的特点是:程序化数据完整性可以通过相关的程序语言及工具在客户端或服务器端实施。常用的类型是:存储过程、触发器等形式实施程序化数据完整性。6.2.4数据完整性的实施第6章实施的形式1综上,实施数据完整性的方法有五种:约束(Constraint)、默认值(Default)、规则(Rule)、存储过程(StoredProcedure)和触发器(Trigger)。在选用实施数据完整性的方法时,应优先选用约束,因为约束在SQLServer的可执行部分有一段代码,执行速度比默认值和规则要快。
有关约束的定义和使用方法参见3.4.3小节,有关存储过程和触发器的内容参见7.2和7.3节。下面介绍规则和默认。6.2.4数据完整性的实施第6章规则2规则(Rule)就是数据库对存储在表中的列或用户自定义数据类型中的值的规定和限制。规则系统非常有效,KingbaseES中,视图(VIEW)系统就是利用规则实现的。
CREATE[ORREPLACE]RULEnameASONevent
TOtable[WHEREcondition]
DO[ALSO|INSTEAD]{NOTHING|command|(command;command...)}其中,WHEREcondition是规则条件,它是一个限制,告诉规则动作什么时候做、什么时候不做。这个条件只能引用NEW和/或OLD伪关系,它们基本上代表作为对象给定的关系(但是有着特殊含义)。6.2.4数据完整性的实施第6章规则-示例2CREATETABLEshoelace_log(
sl_nametext,--改变的鞋带
sl_availinteger,--新的可用值
log_whotext,--谁做的
log_whentimestamp--何时做的
);【例6-9】跟踪shoelace_data关系中的sl_avail列。建立一个日志表和一条规则,这条规则每次在shoelace_data上执行UPDATE时有条件地写入一个日志项。CREATERULElog_shoelaceASONUPDATETOshoelace_data
WHERENEW.sl_avail<>OLD.sl_avail
DOINSERTINTOshoelace_logVALUES(
NEW.sl_name,
NEW.sl_avail,
current_user,
current_timestamp
);
事务存在的问题6.3事务的并发控制和封锁第6章为了充分利用数据库资源,很多时候数据库用户都是对数据库系统并行存取数据,这样就会发生多个用户并发存取同一数据的情况,如果对并发操作不加控制可能会产生不正确的数据,破坏数据的完整性。并发控制就是解决这类问题,以保持数据库中数据的一致性,即在任何一个时刻数据库都将以相同的形式给用户提供数据。6.3.1
事务(定义、相关语句)6.3事务的并发控制和封锁第6章6.3.1
事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。定义事务的相关语句有三条:BEGIN
事务的开始COMMIT
事务的提交ROLLBACK
事务的回滚
事务(特征:ACID)6.3事务的并发控制和封锁第6章6.3.1事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。一致性(Consistency)如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。即一个事务内部的操作及数据对其他事务是隔离的。隔离性(Isolation)持久性指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。持续性(Durability)
一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(NothingorAll)的原则,即不允许完成部分的事务。原子性(Atomicity)事务(并发的示例)6.3事务的并发控制和封锁第6章6.3.1在银行业务中,“从帐号A转移资金额R到帐号B”是一个典型的事务,这个事务包括两个操作,从帐号A中减去资金额R和在帐号B中增加资金额R,如果只执行其中一个操作,则数据库处于不一致状态,帐务会出现问题。也就是说,两个操作要么全做,要么全不做,否则就不能成为事务。事务的一致性与原子性是密切相关的ACID事务(并发的示例)6.3事务的并发控制和封锁第6章6.3.1BEGINTRANSACTIONREADAA←A-RIFA<0/*A款不足*/THENBEGINDISPLAY“A款不足”
ROLLBACKENDELSE/*拨款*/BEGINB←B+RDISPLAY“拨款完成”
COMMITEND并发执行与数据的不一致性6.3事务的并发控制和封锁第6章6.3.2(1)提高系统的资源利用率(2)减少事务的等待时间并发执行的必要性(1)读脏数据(DirtyRead)(2)不可重复读(UnrepeatableRead)(3)丢失更新(LostUpdate)并发执行的问题当同一数据库系统中有多个事务并发运行时,如果不加以适当控制,可能产生数据的不一致性。[例5-9]并发取款操作。假设存款余额R=1000元,甲事务T1取走存款100元,乙事务T2取走存款200元,如果正常操作,即甲事务T1执行完毕再执行乙事务T2,存款余额更新后应该是700元。但是如果按照如下顺序操作,则会有不同的结果:(1)甲事务T1读取存款余额R=1000元;(2)乙事务T2读取存款余额R=1000元;(3)甲事务T1取走存款100元,修改存款余额R=R-100=900,把R=900写回到数据库;(4)乙事务T2取走存款200元,修改存款余额R=R-200=800,把R=800写回到数据库;结果两个事务共取走存款300元,而数据库中的存款却只少了200元。得到这种错误的结果是由甲乙两个事务并发操作引起的。6.2.4并发执行与数据的不一致性第6章并发执行的问题-读脏数据2
事务T1更新了数据R,事务T2读取了更新后的数据R,事务T1由于某种原因被撤销,修改无效,数据R恢复原值。事务T2得到的数据与数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州工程职业技术学院《办公空间室内设计》2023-2024学年第二学期期末试卷
- 马鞍山职业技术学院《新型光纤通信系统》2023-2024学年第二学期期末试卷
- 信阳学院《中国传统建筑设计研究》2023-2024学年第二学期期末试卷
- 武汉体育学院《软件设计模式》2023-2024学年第二学期期末试卷
- 齐齐哈尔工程学院《电力拖动与运动控制》2023-2024学年第二学期期末试卷
- 泰安2025年山东泰安市属事业单位初级综合类岗位招聘127人笔试历年参考题库附带答案详解-1
- 内蒙古建筑职业技术学院《普通化学原理》2023-2024学年第二学期期末试卷
- 山东协和学院《文艺节目策划与创作》2023-2024学年第二学期期末试卷
- 芜湖职业技术学院《现代教育技术理论及应用》2023-2024学年第二学期期末试卷
- 河南2025年河南郑州大学第一附属医院招聘博士302人笔试历年参考题库附带答案详解
- 郑州2025年河南郑州市公安机关招聘辅警1200人笔试历年参考题库附带答案详解
- 2025年语文高考复习计划解析
- 微电网运行与控制策略-深度研究
- 中职高教版(2023)语文职业模块-第五单元:走近大国工匠(一)展示国家工程-了解工匠贡献【课件】
- 物业管理车辆出入管理制度
- 家庭康复服务的商业价值与发展趋势
- 2025年施工项目部《春节节后复工复产》工作实施方案 (3份)-75
- 矿山安全生产工作总结
- 小学教师培训课件:做有品位的小学数学教师
- U8UAP开发手册资料
- 监护人考试20241208练习试题附答案
评论
0/150
提交评论