数据库原理及应用-孙浩军 第4章数据库的完整性与安全性新.pptVIP

  • 10
  • 0
  • 约 72页
  • 2015-12-24 发布于广东
  • 举报

数据库原理及应用-孙浩军 第4章数据库的完整性与安全性新.ppt

An Introduction to Database System 第四章数据库的完整性与安全性 4-1 数据库的完整性 4-2 SQL Server 2000的完整性 4-3 数据库的安全性 4-4 SQL Server的安全体系结构和安全认证模式 4-5 SQL Server 2000数据库安全性管理 4-1 数据库的完整性 1.完整性约束的分类 2.完整性控制 3.触发器 完整性约束的分类 关系模型中有3类完整性约束 实体完整性 参照完整性 用户定义的完整性 为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中数据的完整性 保证完整性的方法之一是设置完整性检验 完整性约束的分类(续) 数据库完整性约束条件 加在数据库数据上的语义约束条件 一般是对数据库中数据本身的某些语义、语义限制、数据间的逻辑约束以及数据变化时所应遵循的规则 一般在数据模式中给出,作为模式的一部分存入数据字典中 在运行时由DBMS自动检查 完整性约束的分类(续) 完整性约束条件的作用对象 可分为列、元组和关系三种级别 对列的约束主要指对其取值类型、范围、精度、排序等的约束条件 对元组的约束是指对记录中各个属性之间的联系的约束条件。 对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。 在一个数据库管理系统中,完整性约束功能一般包括完整性约束条件设置和它的检查两部分一般通过完整性约束语句给出。 完整性约束的分类(续) 完整性约束条件的作用状态分为静态约束、动态约束 静态约束 数据库中数据的语法、语义限制与数据间的逻辑约束,它反映了数据及数据间的固有的逻辑特性。 如国家公务员的年龄约束为18~60岁,工资约束为300~5000元等,它们可分别用逻辑公式表示为: Age≤60 AND Age≥18 Salary≤5000 AND Salary≥300 动态约束 不是对数据库状态的约束,而是数据库从一个状态变为另一个状态时应遵守的约束,例如在更新职工表时,工资、工龄这些属性值一般只会增加,不会减少。动态约束一般也是显式说明的。 静态约束 静态约束是对数据库状态的约束, 固有约束(Inherent Constraints)指数据模型固有的约束,例如关系的属性应是原子的,即满足第一范式的约束。固有约束主要在DBMS实现时加以考虑,不必特别说明。 隐含约束(Implicit Constraints)指隐含于数据模式中的约束,一般用DDL语句说明,并存于数据目录中,例如域完整性约束、实体完整性约束以及引用完整性约束,它们都用相应的DDL语句说明。 固有约束、隐含约束是最基本的约束,但概括不了所有的约束。数据完整性约束是多种多样的,且依赖于数据的语义和应用,这些约束只能显式地说明,故称显式约束(Explicit Constraints)。 2.完整性控制 完整性控制 DBMS如何定义、检查并保证这些约束条件得到满足 一个完善的完整性控制机制应该允许用户定义所有这些完整性约束条件 DBMS应具备的完整性控制功能 定义功能: 为用户提供定义完整性约束条件的命令或工具。 检查功能: 能够自动检查用户发出的操作请求是否违背了完整性约束条件。 保护功能: 当发现用户的操作请求使数据违背了完整性约束条件时,能够自动采取一定的措施确保数据的完整性不遭破坏。 完整性控制(续) 实体完整性和参照完整性是最重要的两个约束。 RDBMS都应该自动支持并控制管理这两个完整性约束,而把其他的完整性约束条件原则上都归入用户定义的完整性之中。 目前许多商品化RDBMS都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能。 对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。 实现参照完整性需要考虑的几个问题 (1)外键的空值问题 根据实际情况的不同,一个关系的外码有时可以取空值,有时又不能取空值,这是数据库设计人员必须考虑的外码空值问题。 如在学生-选课数据库中,关系Students为被参照关系,其主键为Sno。关系Reports为参照关系,外键为Sno。若关系Reports的外键Sno为空值,则表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade列中。这显然与学校的实际管理是不相符的,因此,关系Reports的外键Sno列值不能取空值。 在实现参照完整性时,DBMS除了应该提供定义外键的机制以外,还应提供定义外键列值是否允许为空值的机制。 (2)被参照关系中删除元组的问题 当用户将被参照关系中的一个元组删除,如何处理参照关系中对应的元组,称为被参照

文档评论(0)

1亿VIP精品文档

相关文档