实验八数据库完整性_第1页
实验八数据库完整性_第2页
实验八数据库完整性_第3页
实验八数据库完整性_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,1 实验八:数据库完整性1.1 实验背景“存储在数据库中的所有数据值均是正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。”这是SQL Server2000中给出数据库完整性的解释,但是我们要问两个问题:l 什么是数据正确的状态?l 如何确保数据是正确的?对于第一个问题,确实很难回答,因为:“世界上所有事物本无正确与错误”,但是一些不符合逻辑的、前后矛盾的、没有满足人们需求的,可以说是“不正确的”。如:一个人的年龄是“-20岁”,这就是不符合逻辑的;在一个地方,这个人叫“张三”,但是换了个地方却记成“张山”,这就是矛盾;如果一笔订单金额没有达到1万元,却给记成打了

2、8折,实际只能打9折,这就是不满足需求。造成上述各种不正确的原因是什么呢?无外乎是人们输入错误、业务不熟悉、或者是捣乱分子故意为之。那么关键问题是我们如何在数据库中预防这种不正确的情况呢?这就是要问的第二个问题。这需要靠数据库管理系统(DBMS)提供一套完整性约束机制来预防这种情况的发生。但是人们常说一句话“人无完人,金无足赤”,同样,要完全靠DBMS帮我们防住所有的不正确,本身就是不正确的,这不符合辩证哲学的观点。这说明DBMS只能是尽可能的预防。那么人们要深入研究有哪些完整性约束,DBMS应该提供哪些保障机制。首先,完整性约束主要有以下几种:l 实体完整性约束l 参照完整性约束l 用户定义

3、完整性约束其次,在关系型数据库中保证上述完整性约束的方法有以下几种:表 1 数据库提供的约束数据库提供的约束理论上的完整性约束主码约束实体完整性约束外码约束参照完整性约束Check约束Null约束索引约束触发器存储过程用户定义完整性约束我们可以看出主码、外码是我们经常接触到的数据库提供的约束方法,也是最重要的约束。但是,外码约束并没有我们想象那样简单,即只要把外码关系建立起来就行了,还要考虑到约束强度的问题:表 2参照完整性约束的类型与强度参照完整性类型约束强度说明不实施参照完整性约束强度为零这种情况最好要避免。实施级联更新参照完整性约束中等强度可以实施。当主码修改了,外码自动被修改。实施级联

4、删除参照完整性约束中等强度谨慎实施。当父表记录删除了,子表记录被自动删除。实施更新参照完整性约束高强度放心实施。对于存在子表数据的主码不允许修改。实施删除参照完整性约束高强度放心实施。对于存在子表数据的父表记录不允许删除。实施插入参照完整性约束高强度绝对实施。当父表中不存在外码对应的记录,子表不允许插入数据。那么,用户定义的参照完整性如何实现?一般的DBMS都提供了相应的对策,如:Check约束、Null约束、索引约束、触发器、存储过程等。SQL Server 中还提到了域约束。在SQL Server 2000的联机丛书中都详细地阐述了上述所有的完整性约束,以及如何操作SQL Server20

5、00去实现这些完整性约束。表 3 SQL Server 2000 中用户定义约束的实施约束方法说明Check约束使用“企业管理器”构建。使用“Create/Alter Table Check”的SQL构建。Null约束使用“企业管理器”构建。使用“Create/Alter Table Null/Not Null”的SQL构建。索引约束使用“企业管理器”构建。使用“Create Index”的SQL构建。触发器约束使用“企业管理器”构建。使用“Create/Alter Trigger”的SQL构建。存储过程使用“企业管理器”构建。使用“Create/Alter Procedure”的SQL构建。

6、1.2 实验目标能使用SQL Server 2000创建完整性约束。1.3 实验任务序号任务1本次实验需要用到SQL Server 2000。2创建实验7的数据库,取名为“SalesDB”。3为每个表创建主码。4为所有存在关系的表构建参照完整性约束。5列出不能为Null的非主码字段,并加入Not Null约束。6使用Check约束,确保:(1) 订货数量、未发货量不能为小于0的整数。(2) 折扣金额不能大于订货金额。7使用触发器约束,确保:(1) 未发货数量随着每笔订单的发货,而自动减少。2 实验报告2.1 实验人信息姓名:_学号:_实验时间:_2.2 实验结果1. 写出每张表及其主码:2. 写出父表和子表的关系以及它们的参照完整性强度:3. 写出所有不能为Null的非主码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论