资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
1实验八:数据库完整性1.1实验背景“存储在数据库中的所有数据值均是止确的状态。如果数据库中存储有不止确的数 据值,则该数据库称为已丧失数据完整性。”这是SQL Server2000中给出数据库完整性的解释,但是我们要问两个问题:什么是数据正确的状态?如何确保数据是疋确的?对于笫一个问题,确实很难回答,因为:“I比界上所有事物本无正确与错误”,但是 一些不符合逻辑的、前后矛盾的、没有满足人们需求的,可以说是“不正确的”。女心一 个人的年龄是“-20岁”,这就是不符合逻辑的;在一个地方,这个人叫“张三”,但是 换了个地方却记成“张山”,这就是矛盾;如果一笔订单金额没有达到1万元,却给记成 打了 8折,实际只能打9折,这就是不满足需求。造成上述各种不正确的原因是什么呢?无外乎是人们输入错误、业务不熟悉、或者 是捣乱分子故意为Z。那么关键问题是我们如何在数据库中预防这种不正确的惜况呢? 这就是要问的第二个问题。这需要靠数据库管理系统(DBMS)提供一套完整性约朿机制来预防这种情况的发 乞。但是人们常说一句话“人无完人,金无足赤”,同样,要完全靠DBMS帮我们防住 所冇的不正确,本身就是不正确的,这不符合辩证哲学的观点。这说明DBMS只能是尽 可能的预防。那么人们要深入硏究冇哪些完整性约束,DBMS应该提供哪些保障机制。首先,完整性约束主要有以下几种:实体完整性约朿参照完整性约朿用户能义完整性约束其次,在关系型数据库中保证上述完整性约束的方法冇以下几种:表1数据库提供的约束数据库提供的约束理论上的完整性约束主码约束实体完整性约束外码约束参照完整性约束Chock约束用户定义完整性约束Null约束索引约束触发器存储过程我们可以看出主码、外码是我们经常接触到的数据库提供的约束方法,也是最重要 的约束。但是,外码约束并没冇我们想象那样简单,即只要把外码关系建立起来就行了, 还要考虑到约朿强度的问题:表2参照完整性约束的类型与强度数抓库系统原理,实验指导卩参照完整性类型约束强度说明不实施参照完整性约束强度为零这种情况最好要避免。实施级联更新参照完整性约束中等强度可以实施。当主码修改了,外码自动被修改。实施级联删除参照完整性约束中等强度谨慎实施。当父表记录删除了,子表记录被自动删除。实施更新参照完整性约束高强度放心实施。对于存在子表数据的主码不允许修改。实施删除参照完整性约束高强度放心实施。对于存在子表数据的父表记录不允许删除。实施插入参照完整性约束高强度绝对实施。当父表中不存在外码对应的记录,子表不允 许插入数据。那么,用户定义的参照完整性如何实现? 一般的DBMS都提供了相应的对策,如: Check约束、Null约束、索引约束、触发器、存储过程等。SQL Server中还提到了域约 束。在SQL Server 2000的联机丛书中都详细地阐述了上述所有的完整性约束,以及如何 操作SQL Server2000去实现这些完整性约束。表3 SQL Server 2000中用户定义约束的实施约束方法说明Check约束使用“企业管理器”构建。使用 rtCreate/Alter Table Check的 SQL 构建。Null约束使用“企业管理器”构建。使用 aCreate/Alter Table Null/Not Null的 SQL 构建。索引约束使用“企业管理器”构建。使用“Create Index” 的 SQL 构建。触发器约束使用“企业管理器构建。使用 aCreate/Alter Trigger的 SQL 构建。存储过程使用“企业管理器”构建。使用 aCreate/Alter Procedurew 的 SQL 构建。1.2实验目标能使用SQL Server 2000创建完整性约束。1.3实验任务序号任务1本次实验需要用到SQL Server 2000。2创建实验7的数据库,取名为“SalesDBo3为每个表创建主码。4为所有存在关系的表构建参照完整性约束。5列出不能为Null的非主码字段,并加入Not Null约束。6使用Check约束,确保:(1)订货数量、未发货量不能为小于()的整数。(2)折扣金额不能大于订货金额。7使用触发器约束,确保:(1)未发货数量随着每笔订单的发货,而自动减少。2实验报告2.1实验人信息姓名: 学号:实验吋间:2.2实验结果1. 写出每张表及其主码:2. 写出父表和子表的关系以及它们的参照完整性强度:3. 写出所有不能为Null的非主码字段及其所在的表,并写出其中一个Not Null约束的 创建SQL:4. 写出任务6中的创建Check约束的SQL:5. 写出任务7中的创建触发器约束的SQL:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号