《数据库系统概论PPT教程第九章数据库的安全性和完整性》由会员分享,可在线阅读,更多相关《数据库系统概论PPT教程第九章数据库的安全性和完整性(52页珍藏版)》请在金锄头文库上搜索。
1、第九章第九章数据库的安全性和完整性数据库的安全性和完整性计算机系统的安全性计算机系统的安全性4计算机系统的安全性是指为计算机系统计算机系统的安全性是指为计算机系统建立和采取的各种安全保护措施,以保建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件和数据,护计算机系统中的硬件、软件和数据,防止其因偶然或恶意的原因使系统遭到防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄漏等。破坏,数据遭到更改或泄漏等。计算机系统安全问题的分类计算机系统安全问题的分类4技术安全类技术安全类技术安全是指计算机系统中采用具有一定安全性的技术安全是指计算机系统中采用具有一定安全性的硬件、软件来实现对计
2、算机系统及其所存数据的安硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机受到有意的或无意的攻击时仍能全保护,当计算机受到有意的或无意的攻击时仍能保证系统的正常运行,保证系统内的数据不增加、保证系统的正常运行,保证系统内的数据不增加、不丢失、不泄露。不丢失、不泄露。4管理安全类管理安全类技术安全之外的,诸如软硬件意外故障、场地的意技术安全之外的,诸如软硬件意外故障、场地的意外事故、管理不善导致的计算机设备和数据介质的外事故、管理不善导致的计算机设备和数据介质的物理破坏、丢失等安全问题视为管理安全。物理破坏、丢失等安全问题视为管理安全。4政策法律类政策法律类指政府部门建立的有关计算机犯
3、罪、数据安全保密指政府部门建立的有关计算机犯罪、数据安全保密的法律道德准则和政策法规、法令。的法律道德准则和政策法规、法令。可信计算机评测标准可信计算机评测标准41985年,美国国防部制定了可信计算机评估标年,美国国防部制定了可信计算机评估标准准TCSEC(Trusted Computer System Evaluation Criteria)。1991年年4月,美国国家计月,美国国家计算机安全中心算机安全中心NCSC发布发布可信计算机系统评可信计算机系统评估标准关于数据库系统的解释估标准关于数据库系统的解释TDI(Trusted Database Interpretation),将将TCSE
4、C扩展到数扩展到数据库管理系统。它们从安全策略、责任、保证、据库管理系统。它们从安全策略、责任、保证、文档四个方面描述了安全级别划分的指标。文档四个方面描述了安全级别划分的指标。可信计算机评测标准(续可信计算机评测标准(续I)安全级别安全级别定定 义义A1验证设计(验证设计(Verified Design)B3安全域(安全域(Security Domain)B2结构化保护(结构化保护(Structural Protection)B1标记安全保护(标记安全保护(Labeled Security Protection)C2受控存取保护(受控存取保护(Controlled Access Protec
5、tion)C1自主安全保护(自主安全保护(Discretionary Security Protection)D最小保护(最小保护(Minimal Protection)对对数据库的安全威胁数据库的安全威胁4原则上,凡是造成对数据库内存储数据原则上,凡是造成对数据库内存储数据的非授权访问的非授权访问读取,或非授权的写入读取,或非授权的写入增加、删除、修改等,都属于对数据库增加、删除、修改等,都属于对数据库的数据安全造成了威胁或破坏。另一方的数据安全造成了威胁或破坏。另一方面,凡是影响授权用户以正常方式使用面,凡是影响授权用户以正常方式使用数据库系统的数据服务的,也称之为造数据库系统的数据服务的
6、,也称之为造成侵犯,对数据库的安全形成了威胁或成侵犯,对数据库的安全形成了威胁或破坏。破坏。对数据库的安全威胁的分类对数据库的安全威胁的分类4偶然地、无意地接触或修改偶然地、无意地接触或修改DBMS管理管理下的数据下的数据自然的或意外的事故自然的或意外的事故硬件或软件的故障硬件或软件的故障/错误导致数据丢失错误导致数据丢失人为的失误,如错误的输入和应用系统的不人为的失误,如错误的输入和应用系统的不正常使用。正常使用。对数据库的安全威胁的分类对数据库的安全威胁的分类(I)4蓄意的侵犯和敌意的攻击蓄意的侵犯和敌意的攻击授权用户可能滥用其权力授权用户可能滥用其权力信息的非正常扩散信息的非正常扩散-泄
7、密泄密由授权读取的数据推论出不应访问的数据由授权读取的数据推论出不应访问的数据对信息的非正常修改对信息的非正常修改敌对方的攻击,内部的或外部的非授权用户从不同敌对方的攻击,内部的或外部的非授权用户从不同渠道进行攻击。渠道进行攻击。敌对方对软件和硬件的蛮力破坏敌对方对软件和硬件的蛮力破坏绕过绕过DBMS直接对数据进行读写直接对数据进行读写病毒、特洛伊木马、天窗病毒、特洛伊木马、天窗通过各种途径干扰通过各种途径干扰DBMS的正常工作状态,使之在的正常工作状态,使之在正当用户提出数据请求时,不能正常提供服务。正当用户提出数据请求时,不能正常提供服务。数据库的安全性数据库的安全性4数据库的安全性是指保
8、护数据库以防止数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改不合法的使用所造成的数据泄漏、更改和破坏。它包括两个方面的含义:和破坏。它包括两个方面的含义:向授权用户提供可靠的信息服务。向授权用户提供可靠的信息服务。同时,拒绝非授权的对数据的存取访问请求,同时,拒绝非授权的对数据的存取访问请求,保证数据库管理下的数据的可用性、完整性保证数据库管理下的数据的可用性、完整性和一致性,进而保护数据库所有者和使用者和一致性,进而保护数据库所有者和使用者的合法权益。的合法权益。数据库安全性控制数据库安全性控制管理、技术、操作 多个方面物理、网络、系统、应用 多个层次设计、构建、运行、
9、维护 整个周期安全数据库安全性控制数据库安全性控制4数据库安全控制涉及多个方面,它可分数据库安全控制涉及多个方面,它可分为内部安全控制和外部安全控制。为内部安全控制和外部安全控制。内部安全控制由计算机系统的软硬件实现。内部安全控制由计算机系统的软硬件实现。它必须与管理系统物理存取的适当的外部安它必须与管理系统物理存取的适当的外部安全控制相配合。全控制相配合。外部安全控制解决内部安全控制不能解决的外部安全控制解决内部安全控制不能解决的问题问题外部安全控制外部安全控制4实体安全控制实体安全控制划定安全区域,设置安全屏障和建立安全控制划定安全区域,设置安全屏障和建立安全控制评估安全风险,将涉密设备和
10、材料放置在不同的安评估安全风险,将涉密设备和材料放置在不同的安全区域全区域4人员、组织安全控制人员、组织安全控制建立安全管理机构和相应安全评估、管理制度建立安全管理机构和相应安全评估、管理制度明确组织间的访问安全关系明确组织间的访问安全关系明确组织内的安全角色和责任明确组织内的安全角色和责任建立人员聘用和考察制度,通过合同条款和保密协建立人员聘用和考察制度,通过合同条款和保密协议,明确每个人的安全保密责任议,明确每个人的安全保密责任建立责任追究制度建立责任追究制度外部安全控制外部安全控制4过程安全控制过程安全控制确定业务操作过程的安全需求确定业务操作过程的安全需求制订访问控制规则,并明确个人用
11、户(或组制订访问控制规则,并明确个人用户(或组用户)的权限用户)的权限 建立访问管理制度,确定用户、特权、密码建立访问管理制度,确定用户、特权、密码等的管理措施和操作过程规定等的管理措施和操作过程规定明确用户在密码使用和设备安全等方面的责明确用户在密码使用和设备安全等方面的责任任 建立监测和审查制度建立监测和审查制度建立安全事故管理制度建立安全事故管理制度数据库安全性控制数据库安全性控制4数据库系统的安全保护是由多个层次的数据库系统的安全保护是由多个层次的构成的。构成的。本章只涉及由数据库本身提供的安全机制。本章只涉及由数据库本身提供的安全机制。网络DBMSOSDB用户标识和鉴别网络系统安全保
12、护存取控制操作系统安全保护数据加密用户标识与鉴别用户标识与鉴别4用户标识和鉴别是系统提供的最外层安用户标识和鉴别是系统提供的最外层安全保护措施。标识是指系统采用一定的全保护措施。标识是指系统采用一定的方式标识其用户或应用程序的名字或身方式标识其用户或应用程序的名字或身份。鉴别是指系统在用户或应用程序登份。鉴别是指系统在用户或应用程序登录时判断其是否为合法的授权用户。应录时判断其是否为合法的授权用户。应用系统、网络系统、操作系统、用系统、网络系统、操作系统、DBMS都都可以进行用户标识和鉴别,通常的做可以进行用户标识和鉴别,通常的做法是采用用户名和口令。法是采用用户名和口令。存取控制存取控制4存
13、取控制确保合法用户按照指定的权限使用存取控制确保合法用户按照指定的权限使用DBMS和访问数据,而非法用户或不具有相关和访问数据,而非法用户或不具有相关权限的用户则不能。权限的用户则不能。4存取控制机制主要包括两个部分:存取控制机制主要包括两个部分:定义用户权限,并将用户权限记录到数据字典中,定义用户权限,并将用户权限记录到数据字典中,形成安全规则或授权规则。其中,用户权限是指不形成安全规则或授权规则。其中,用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。同的用户对于不同的数据对象允许执行的操作权限。合法权限检查,每当用户发出数据库操作请求后,合法权限检查,每当用户发出数据库操作请求
14、后,DBMSDBMS根据数据字典中的安全规则进行合法权限检查,根据数据字典中的安全规则进行合法权限检查,决定是否接受用户的操作请求。决定是否接受用户的操作请求。用户权限定义和合法权限检查机制一起组成了用户权限定义和合法权限检查机制一起组成了DBMSDBMS的安全子系统。的安全子系统。DAC与与MAC4存取控制可以分为:存取控制可以分为:自自主主存存取取控控制制(discretionary access control,简简称称DAC)。用用户户对对于于不不同同的的数数据据对对象象拥拥有有不不同同的的存存取取权权限限,不不同同的的用用户户对对同同一一对对象象也也有有不不同同的的权权限限,而而且且
15、用用户户还还可可以以将将其其拥拥有有的权限转授给其他用户。的权限转授给其他用户。强强制制存存取取控控制制(mandatory access control,简简称称MAC)。每每一一个个数数据据对对象象被被标标以以一一定定的的密密级级,每每一一个个用用户户也也被被授授予予某某一一个个级级别别的的许许可可证证。对对于于任任一一个个对对象象,只只有有具具有有合合法法许许可可证证的用户才可以存取。的用户才可以存取。自主存取控制方法自主存取控制方法4用户权限由两个要素组成,数据对象和操作类用户权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个型。定义一个用户的存取权限就是要定
16、义这个用户可以在哪些数据对象上进行哪些类型的操用户可以在哪些数据对象上进行哪些类型的操作,在数据库系统中称之为授权。作,在数据库系统中称之为授权。数据对象数据对象操作类型操作类型模式模式概念模式概念模式外模式外模式内模式内模式建立、修改、检索建立、修改、检索建立、修改、检索建立、修改、检索建立、修改、检索建立、修改、检索数据数据表表属性列属性列查找、插入、删除、修改查找、插入、删除、修改查找、插入、删除、修改查找、插入、删除、修改SQL的数据控制的数据控制4当数据库管理员建立了一个新用户之后当数据库管理员建立了一个新用户之后,必须必须授予它一定的权限授予它一定的权限,该用户才能使用数据库。该用
17、户才能使用数据库。在数据库系统中可以授予用户两类权限:在数据库系统中可以授予用户两类权限:用户级权限用户级权限 用户级权限是数据库管理员为每个用户用户级权限是数据库管理员为每个用户授予的特定权限。这种权限与整个数据库相关,与授予的特定权限。这种权限与整个数据库相关,与数据库中具体的关系无关。这种权限是对用户使用数据库中具体的关系无关。这种权限是对用户使用整个数据库的权限的限定。整个数据库的权限的限定。关系级权限关系级权限 关系级权限是数据库管理员或数据库对关系级权限是数据库管理员或数据库对象的拥有者为用户授予的与关系或视图有关的权限。象的拥有者为用户授予的与关系或视图有关的权限。这种权限是对用
18、户使用关系和视图的权限的限定。这种权限是对用户使用关系和视图的权限的限定。角色与用户组角色与用户组4为了管理数据库特权的方便,数据库还为了管理数据库特权的方便,数据库还支持角色和用户组的概念。支持角色和用户组的概念。角色是一组权限的集合,可以把它授予用户角色是一组权限的集合,可以把它授予用户或其他角色。当把某个角色授予用户(或角或其他角色。当把某个角色授予用户(或角色)或从用户(或角色)处收回时,就同时色)或从用户(或角色)处收回时,就同时授予或收回了该角色代表的全部权限。授予或收回了该角色代表的全部权限。用户组是一组具有相同特性用户的集合。在用户组是一组具有相同特性用户的集合。在授权或收回权
19、限时,可以以用户组为单位进授权或收回权限时,可以以用户组为单位进行。行。用户级权限与角色的授予与收回用户级权限与角色的授予与收回4在在SQL语言中,通过语言中,通过Grant语句为用户授予用语句为用户授予用户级权限或角色,其语法格式为:户级权限或角色,其语法格式为:Grant | ,| To |public ,| With Grant Option4其中,其中,public指数据库中的全部用户。指数据库中的全部用户。With Grant Option则允许被授权的用户将指定的用则允许被授权的用户将指定的用户级权限或角色授予其他用户。户级权限或角色授予其他用户。用户级权限与角色的授予与收回用户级
20、权限与角色的授予与收回4为用户授予用户级权限为用户授予用户级权限Grant Create Session to SCOTT;4为用户授予角色为用户授予角色Grant Connect to SCOTT;4将将权限授予角色权限授予角色Grant Create table to Student_role;4将角色授予角色将角色授予角色Grant Resource to Student_role;4将角色授予用户组将角色授予用户组Grant Student_role to PUBLIC;用户级权限与角色的授予与收回用户级权限与角色的授予与收回4当要取消一个用户或角色的权限时,可当要取消一个用户或角色的
21、权限时,可以使用以使用REVOKEREVOKE语句将其收回:语句将其收回:Revoke | ,| From |public ,|4例:取消用户例:取消用户SCOTTSCOTT的的Create TableCreate Table权限。权限。Revoke Create Table From SCOTT;Revoke Create Table From SCOTT;关系级权限的授予与收回关系级权限的授予与收回4每一个用户都拥有自己定义的数据库对象如每一个用户都拥有自己定义的数据库对象如(基本表、视图等),除了他自己和拥有(基本表、视图等),除了他自己和拥有DBA权限的用户以外,其他用户都不能访问这些
22、数权限的用户以外,其他用户都不能访问这些数据库对象。如果想和其他用户共享其中一部分据库对象。如果想和其他用户共享其中一部分数据库对象,就必须将这些数据库对象上的部数据库对象,就必须将这些数据库对象上的部分或全部权限授予其他用户。其语法格式为:分或全部权限授予其他用户。其语法格式为:4Grant ALL| , On | , | To , | public With Grant Option关系级权限的授予与收回关系级权限的授予与收回4授予用户授予用户Liming在在Student表上的表上的Select和和Insert权限。权限。 Grant Select , Update On Student
23、 To Liming With Grant Option;4Liming授授予予用用户户SCOTT在在Student表表的的Sno列列上的上的Update权限。权限。 Grant Update(Sno) On Student To SCOTT;4将将Student表上的全部权限授予全体用户。表上的全部权限授予全体用户。 Grant ALL On Student To PUBLIC;关系级权限的授予与收回关系级权限的授予与收回4回收权限回收权限Revoke ALL|Revoke ALL| , , On On | , | From From ,|PUBLIC|PUBLIC例:收回例:收回Limin
24、gLiming对对StudentStudent表的全部权限表的全部权限Revoke ALL On Student From Liming;Revoke ALL On Student From Liming;收回权限时,若该用户已将权限授予其它用收回权限时,若该用户已将权限授予其它用户,则也一并收回。户,则也一并收回。用户权限定义表用户权限定义表用户名用户名数据对象名数据对象名允许的操作类型允许的操作类型王平王平关系关系StudentSELECT张张明霞明霞关系关系StudentUPDATE张明霞张明霞关系关系CourseALL张明霞张明霞Sc.GradeUPDATE张明霞张明霞Sc.SnoSE
25、LECT张明霞张明霞Sc.CnoSELECT利用视图实现安全控制利用视图实现安全控制4为不同的用户定义不同的视图,可以将为不同的用户定义不同的视图,可以将用户对数据的访问限制在一定的范围内。用户对数据的访问限制在一定的范围内。4例:限制王平只能检索例:限制王平只能检索Student表中计算表中计算机系学生的学号和姓名。机系学生的学号和姓名。Create View CS_Student As Select Sno, Sname From Student Where Sdept = CS;Grant Select On CS_Student To Wangping;强制存取方法强制存取方法4主体主
26、体 是系统中的活动实体,既包括是系统中的活动实体,既包括DBMS所管所管理的实际用户,也包括代表用户的各进程。理的实际用户,也包括代表用户的各进程。4客体客体 是系统中的被动实体,是受主体操纵的,是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等包括文件、基本表、索引、视图等4对于主体和客体,对于主体和客体,DBMS为他们每个实例(值)为他们每个实例(值)指定一个敏感度标记。敏感度表被分为若干级指定一个敏感度标记。敏感度表被分为若干级别,如绝密、机密、可信、公开等。主体的敏别,如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记感度标记称为许可证级别,客
27、体的敏感度标记称为密级。称为密级。强制存取方法强制存取方法4当当某一主体以某一许可证级别注册入系某一主体以某一许可证级别注册入系统时,系统要求他对任何客体的存取必统时,系统要求他对任何客体的存取必须遵循如下规则:须遵循如下规则:仅当主体的许可证级别大于或等于客体的密仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;级时,该主体才能读取相应的客体;仅当主体的许可证级别等于客体的密级时,仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体;该主体才能写相应的客体;审计和数据加密审计和数据加密4审计功能把用户对数据库的所有操作都自动记审计功能把用户对数据库的所有操作都自动
28、记录下来放入审计日志中。录下来放入审计日志中。DBA可以利用审计跟可以利用审计跟踪的信息,重现导致数据库现有状况的一系列踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。事件,找出非法存取数据的人、时间和内容等。4数据加密数据加密 是防止数据库中数据在存储和传输中是防止数据库中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定失密的有效手段。加密的基本思想是根据一定的算法将原始数据(明文)变换为不可识别的的算法将原始数据(明文)变换为不可识别的格式(密文),从而使得不知道解密算法的人格式(密文),从而使得不知道解密算法的人无法获知数据的内容。无法获知数据
29、的内容。统计数据库安全性统计数据库安全性4统计数据库中的数据分为两类,一类是统计数据库中的数据分为两类,一类是微数据描述现实世界的实体、概念或事微数据描述现实世界的实体、概念或事件的数据;另一类是统计或综合数据,件的数据;另一类是统计或综合数据,时对微数据进行综合处理而得到的结果时对微数据进行综合处理而得到的结果数据。统计数据库只为用户提供统计数数据。统计数据库只为用户提供统计数据,不允许用户访问微数据。但微数据据,不允许用户访问微数据。但微数据有时可以通过一组统计数据推导出来。有时可以通过一组统计数据推导出来。统计数据库安全性的目的就是防止用户统计数据库安全性的目的就是防止用户访问或推导出统
30、计数据库的微数据。访问或推导出统计数据库的微数据。统计数据库安全性统计数据库安全性4例:例:关系关系PERSON(NAME, SSN, INCOME, ADDRESS, CITY, STATE, ZIP, SEX, LAST_DEGREE)为人口为人口统计数据库中的一个关系。统计数据库中的一个关系。假设已知王兰获博士学位,居住在黑龙江省哈尔滨假设已知王兰获博士学位,居住在黑龙江省哈尔滨市,现要查询其收入,首先执行:市,现要查询其收入,首先执行: SELECT COUNT(*) FROM PERSON WHERE LAST_DEGREE = PH.D AND SEX = F AND CITY =
31、 哈尔滨哈尔滨 AND STATE = 黑龙江黑龙江;统计数据库安全性统计数据库安全性若若返回结果为返回结果为1,则在执行以下查询:,则在执行以下查询:SELECT AVG(INCOME) FROM PERSON WHERE LAST_DEGREE = PH.D AND SEX = F AND CITY = 哈尔滨哈尔滨 AND STATE = 黑龙江黑龙江; 就可获得王兰的收入。就可获得王兰的收入。统计数据库安全性统计数据库安全性4为防止用户推导出统计数据库的微数据,为防止用户推导出统计数据库的微数据,可以采取以下方法:可以采取以下方法:对统计结果的大小加以控制,将其限制在某对统计结果的大小
32、加以控制,将其限制在某一范围之内。这样可以减小使用统计查询推一范围之内。这样可以减小使用统计查询推导微数据的可能性。导微数据的可能性。禁止在相同元组集合上重复执行一系列统计禁止在相同元组集合上重复执行一系列统计查询。查询。在统计查询结果中加入噪声,为推导微数据在统计查询结果中加入噪声,为推导微数据制造困难制造困难。完整性完整性4数据库的完整性是指数据的正确性和相容性。数据库的完整性是指数据的正确性和相容性。其中,正确性是指数据应具有合法的类型,如其中,正确性是指数据应具有合法的类型,如数值型的字段只能含有数值型的字段只能含有09,不能包含其它符,不能包含其它符号;更进一步,数据还应在有效的取值
33、范围之号;更进一步,数据还应在有效的取值范围之内,如一年最多只有内,如一年最多只有12个月,不能出现个月,不能出现13个月。个月。相容性是指表示同一个事实的两个数据应该相相容性是指表示同一个事实的两个数据应该相同,如一个人不应当存在两个年龄。数据库能同,如一个人不应当存在两个年龄。数据库能否保持完整性关系到数据库系统是否能够真实否保持完整性关系到数据库系统是否能够真实的反映现实世界,因此维护数据库的完整性十的反映现实世界,因此维护数据库的完整性十分重要。分重要。完整性与安全性完整性与安全性4数据库的完整性与安全性是两个不同的数据库的完整性与安全性是两个不同的概念。前者是为了防止数据库中存在不概
34、念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入符合语义的数据,防止错误信息的输入和输出,即所谓的垃圾进垃圾出所造成和输出,即所谓的垃圾进垃圾出所造成的无效操作和错误结果。而后者是保护的无效操作和错误结果。而后者是保护数据库防止恶意的破坏和非法存取。也数据库防止恶意的破坏和非法存取。也就是说,安全性防范的是非法用户和非就是说,安全性防范的是非法用户和非法操作,完整性措施的防范对象是不合法操作,完整性措施的防范对象是不合语义的数据。语义的数据。完整性约束条件完整性约束条件4施加在数据库数据之上的语义约束条件称为数施加在数据库数据之上的语义约束条件称为数据库完整性约束条件。数据库
35、系统依据完整性据库完整性约束条件。数据库系统依据完整性约束条件进行完整性检查。约束条件进行完整性检查。4完整性约束条件作用的对象可以是关系、元组、完整性约束条件作用的对象可以是关系、元组、列三种。其中列约束主要是列的类型、取值范列三种。其中列约束主要是列的类型、取值范围、精度等约束条件。元组的约束是元组中各围、精度等约束条件。元组的约束是元组中各个字段间联系的约束。关系的约束是若干元组个字段间联系的约束。关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。间、关系集合上以及关系之间的联系的约束。完整性约束条件完整性约束条件4涉及这三类对象的完整性约束又可分为涉及这三类对象的完整性约束又
36、可分为静态约束和动态约束。静态约束和动态约束。静态约束是指数据库每一确定状态(在某一静态约束是指数据库每一确定状态(在某一时刻数据库中的所有数据实例构成了数据库时刻数据库中的所有数据实例构成了数据库的一个状态)时,数据对象所应满足的约束的一个状态)时,数据对象所应满足的约束条件,它是反映数据库状态合理性的约束。条件,它是反映数据库状态合理性的约束。动态约束是指数据库从一种状态转变为另一动态约束是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条种状态时,新、旧值之间所应满足的约束条件,它是反映数据库状态变迁的约束。件,它是反映数据库状态变迁的约束。静态约束静态约束4固有约束固有
37、约束指数据模型固有的约束,如关系的属性应当是原子指数据模型固有的约束,如关系的属性应当是原子的。的。4隐含约束隐含约束指隐含于数据模式的约束,一般用指隐含于数据模式的约束,一般用DDL语句说明,语句说明,并存于数据字典中。如实体完整性约束。并存于数据字典中。如实体完整性约束。4显式约束显式约束指固有约束,隐含约束之外,依赖于数据的语义和指固有约束,隐含约束之外,依赖于数据的语义和应用,需要显式定义的完整性约束。应用,需要显式定义的完整性约束。静态约束静态约束4静态列级约束是对一个列的取值域的说静态列级约束是对一个列的取值域的说明,包括:明,包括:对数据类型的约束(包括数据的类型、长度、对数据类
38、型的约束(包括数据的类型、长度、单位、精度等)单位、精度等)对数据格式的约束对数据格式的约束对取值范围或取值集合的约束对取值范围或取值集合的约束对空值的约束对空值的约束其他约束其他约束静态约束静态约束4静态元组约束规定了组成一个元组的各个列之静态元组约束规定了组成一个元组的各个列之间的约束关系。间的约束关系。4静态关系约束规定了一个关系的若干元组或者静态关系约束规定了一个关系的若干元组或者若干关系之间常常存在的各种联系或约束。包若干关系之间常常存在的各种联系或约束。包括:括:实体完整性约束实体完整性约束参照完整性约束参照完整性约束函数依赖函数依赖统计约束统计约束动态约束动态约束4动态列级约束是
39、修改列定义或列值时应动态列级约束是修改列定义或列值时应满足的约束条件,包括:满足的约束条件,包括:修改列定义时的约束修改列定义时的约束修改列值时的约束修改列值时的约束4动态元组约束指修改元组值时元组中各动态元组约束指修改元组值时元组中各个字段间需要满足的约束。个字段间需要满足的约束。4动态关系约束是加在关系变化前后状态动态关系约束是加在关系变化前后状态上的限制条件。上的限制条件。数据库的完整性控制机制数据库的完整性控制机制4为保护数据库的完整性,防止错误的数为保护数据库的完整性,防止错误的数据进入数据库,数据库提供了完整性控据进入数据库,数据库提供了完整性控制机制。它包括三个方面的功能:制机制
40、。它包括三个方面的功能:定义功能,提供定义完整性约束条件的机制。定义功能,提供定义完整性约束条件的机制。检查功能,检查用户发出的操作请求是否违检查功能,检查用户发出的操作请求是否违背了完整性约束条件。背了完整性约束条件。违约响应,若违背了完整性约束条件,则采违约响应,若违背了完整性约束条件,则采取一定措施来保证数据的完整性。取一定措施来保证数据的完整性。完整性检查的时机完整性检查的时机4立即执行约束是指在执行用户事务的过立即执行约束是指在执行用户事务的过程中,在一条语句执行完后立即进行完程中,在一条语句执行完后立即进行完整性约束的检查。若违背了完整性约束,整性约束的检查。若违背了完整性约束,系
41、统将拒绝该操作。系统将拒绝该操作。4延迟执行约束是指在整个用户事务执行延迟执行约束是指在整个用户事务执行完毕后,再进行完整性约束的检查,若完毕后,再进行完整性约束的检查,若正确方允许提交事务。若违背了完整性正确方允许提交事务。若违背了完整性约束,系统将拒绝整个事务。约束,系统将拒绝整个事务。完整性规则完整性规则4一条完整性规则可以用一个五元组(一条完整性规则可以用一个五元组(D D,O O,A A,C C,P P)来描述,其中:来描述,其中:D D(DataData)约束所作用的数据对象约束所作用的数据对象O O(OperationOperation)触发完整性检查的数据库操作,即触发完整性检
42、查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,当用户发出什么操作请求时需要检查该完整性规则,是立即检查还是延迟检查。是立即检查还是延迟检查。A A(AssertionAssertion)数据对象必须满足的断言或语义约数据对象必须满足的断言或语义约束。束。C C(ConditionCondition)选择选择A A作用的数据对象值的谓词。作用的数据对象值的谓词。P P(ProcedureProcedure)违反完整性规则时触发的过程。违反完整性规则时触发的过程。完整性规则完整性规则4教授的工资不得低于教授的工资不得低于1000元。元。D 约束作用的对象为工资约束作用的对象为工资
43、Sal属性属性O 插入或修改职工元组时插入或修改职工元组时A Sal不能小于不能小于1000C 职称职称=教授教授P 拒绝执行该操作拒绝执行该操作完整性约束的说明完整性约束的说明4固有约束固有约束在在DBMSDBMS实现时已经考虑,不必实现时已经考虑,不必特殊说明。特殊说明。4隐含约束的说明可以通过隐含约束的说明可以通过DDLDDL语句来定义语句来定义实现。实现。4显式完整性约束的说明一般有过程说明显式完整性约束的说明一般有过程说明方式,断言说明方式,触发器说明方式方式,断言说明方式,触发器说明方式等几种。等几种。显式完整性约束的说明显式完整性约束的说明4用过程说明约束用过程说明约束把约束的说
44、明和检验作为一个过程,由程序员编码把约束的说明和检验作为一个过程,由程序员编码到每个更新数据库的事务中。用以检验数据库更新到每个更新数据库的事务中。用以检验数据库更新是否违反了给定约束。使用这种方法,为程序员利是否违反了给定约束。使用这种方法,为程序员利用通用程序设计语言编制高效率完整性验证程序提用通用程序设计语言编制高效率完整性验证程序提供了有利条件。然而,这种方法也为程序员增加了供了有利条件。然而,这种方法也为程序员增加了负担。程序员必须清楚他所编码的事务所涉及的所负担。程序员必须清楚他所编码的事务所涉及的所有完整性约束,为每个约束编制一个验证过程。程有完整性约束,为每个约束编制一个验证过
45、程。程序员的任何误解、遗漏,疏忽都将导致数据库不正序员的任何误解、遗漏,疏忽都将导致数据库不正确。同时,一旦完整性约束发生变化,应用程序就确。同时,一旦完整性约束发生变化,应用程序就必须作相应的修改。必须作相应的修改。显式完整性约束的说明显式完整性约束的说明4用断言说明约束用断言说明约束断言指数据库必须满足的逻辑条件,数据库完整性断言指数据库必须满足的逻辑条件,数据库完整性约束可以看成一系列断言的集合。使用这种方法约束可以看成一系列断言的集合。使用这种方法DBMSDBMS需要提供断言说明语言,用以定义断言。并提需要提供断言说明语言,用以定义断言。并提供完整性验证子系统将其编译和存储到约束库,对
46、供完整性验证子系统将其编译和存储到约束库,对于每个更新事务,完整性检查子系统利用约束库中于每个更新事务,完整性检查子系统利用约束库中的定义进行检查,判断是否违背了完整性约束。利的定义进行检查,判断是否违背了完整性约束。利用这种方法可以将约束集中在约束库中,免除了程用这种方法可以将约束集中在约束库中,免除了程序员在应用程序中分散定义和维护完整性约束的问序员在应用程序中分散定义和维护完整性约束的问题,减少了编程的麻烦,方便了应用程序和约束的题,减少了编程的麻烦,方便了应用程序和约束的维护。但其实现比较复杂,开销也大,降低了数据维护。但其实现比较复杂,开销也大,降低了数据库更新的性能。库更新的性能。
47、ASSERT ASSERT 余额约束余额约束 ON ON 储蓄表:余额储蓄表:余额=0=0;显式完整性约束的说明显式完整性约束的说明4用触发器表示约束用触发器表示约束所谓触发器就是一类事件驱动的特殊过程,所谓触发器就是一类事件驱动的特殊过程,一旦定义,当发生预定义的事件时,系统自一旦定义,当发生预定义的事件时,系统自动执行相应的触发器。定义触发器时,需要动执行相应的触发器。定义触发器时,需要定义:触发器的触发条件以及触发器应当完定义:触发器的触发条件以及触发器应当完成的操作。注意:断言表示数据库状态应当成的操作。注意:断言表示数据库状态应当满足的条件,而触发器中的条件却是违反约满足的条件,而触发器中的条件却是违反约束的条件,二者正好相反。束的条件,二者正好相反。显式完整性约束的说明显式完整性约束的说明例:教授的工资不得低于例:教授的工资不得低于1000元,若低于元,若低于1000元,元,自动改为自动改为1000元。元。Create Trigger Update_Sal Before Insert Or Update Of Sal, Pos On Teacher For Each Row When (:new.pos = Professor) Begin If :new.sal 1000 Then :new.sal = 1000; End If End;