项目9 完整性管理_第1页
项目9 完整性管理_第2页
项目9 完整性管理_第3页
项目9 完整性管理_第4页
项目9 完整性管理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

项目九

完整性管理

9.2项目目的深入理解数据库完整性的重要作用;掌握SQLServer2005对三种不同的数据库完整性的实现方法。9.3项目内容与要求

为数据表book设定主键(ISBN),并尝试部分违背book实体完整性约束要求的元组(如两行具有相同的ISBN的数据、ISBN为空的数据等),注意观察结果;为数据表item的属性列ISBN建立外键,其参照属性为数据表book的属性列ISBN。将其更新时选项分别依次设置为级联修改等不同选项,然后修改book表中ISBN的属性值,查看表item中相关属性的值的变化情况;将外键参照关系的删除时的选项分别设为级联删除、设为空值等,然后在book表中删除某些元组,查看表item中相关属性的值的变化情况;使用check方法,为level表中的userLevel属性的取值限制为1-5;创建一个规则设置价格取值只能大于零,将此规则绑定到数据表book的属性列price上,并尝试输入数据进行测试;在数据表publisher上建立约束pName_unique,用于限制属性publisherName取值要具有唯一性,并插入数据进行测试;删除约束pName_unique。9.4项目指导

1.设置主键的方法2.建立外键(参照完整性)的方法3.

使用check方法设置自定义完整性4.使用规则保证数据库完整性5.使用SQL语句添加、修改约束1.设置主键的方法

任务1:将数据表book的属性ISBN设置为主键。在设计数据表或者修改数据表时,将鼠标移动到欲设置为主键的列名上,单击右键,选择“设置主键”,如图9-1所示。另外,还可以在创建数据表或者修改数据表的SQL语句中使用primarykey子句来定义主键。图9-1设置数据表的主键在设置主键后,下列两种情况会导致系统报错,并拒绝插入或者修改数据:(1)当我们试图在数据表中插入主键为null的元组(或者将某个元组的主键取值修改为null),如图9-2所示;图9-2插入主键取值为空的数据(2)插入两行在主键上取值相同的数据,或者数据修改后出现两行数据的主键取值相同,如图9-3所示。图9-3插入两行在主键上取值相同的数据2.建立外键(参照完整性)的方法。

任务2:为数据表item的属性列ISBN建立外键,其参照属性为book表的属性ISBN(1)在MicrosoftSQLServerManagementStudio中,找到数据库bookstore中的item表,右键单击,选择设计。在设计窗口中,单击右键,在菜单中选择“关系(H)…”,如图9-4所示。图9-4创建外键关系(2)在弹出的外键关系窗口中,单击“添加”添加一个关系,并在右边窗口中选中“表和列规范”一栏,单击该栏右边的按钮,如图9-5。图9-5外键关系窗口(3)在弹出的“表和列”窗口中,选择主键表为book,并选择ISBN列,同时在在外键表item中选择对应的列ISBN,如图9-6所示。图9-6指定外键关系的列(4)在外键关系窗口中,继续设置“INSERT和UPDATE规范”中的“更新规则”和“删除规则”,如图9-7所示。图9-7设置更新、删除数据时外键取值的变化规则

(5)在数据表book中修改相应的ISBN的取值、或者删除部分数据后,查看item数据表中的数据变化情况。3.使用check方法设置自定义完整性

任务3:为level表中的userLevel属性的取值限制为1-5。(1)在MicrosoftSQLServerManagementStudio中,找到数据库bookstore中的level表,右键单击,选择设计。在设计窗口中,单击右键,在菜单中选择“CHECK约束(O)…”,如图9-8所示。

图9-8设置CHECK约束(2)在弹出的窗口中,单击“添加”,并在右面窗口中,单击“常规—表达式”一栏的右边的按钮,如图9-9所示。图9-9添加CHECK约束(3)在弹出的“CHECK约束表达式”的编辑窗口中,输入如下表达式:(([userLevel])<=(5))and(([userLevel])>=(1)),单击确定;并单击“关闭”按钮。图9-10设置CHECK约束的表达式(4)在表level中输入数据,测试约束是否有效。4.使用规则保证数据库完整性

任务4:创建一个规则price_rule,设置价格取值不可小于零,并绑定到book表的price属性进行测试。(1)在MicrosoftSQLServerManagementStudio中,新建一个查询,并输入如下代码,并执行:USEbookstoreGOCREATERULEprice_ruleAS@price>=0;(2)在bookstore下面的规则文件夹中,单击刷新,可以看到刚刚创建的规则,如图9-11所示。图9-11创建规则(3)将如下代码写入一个新的查询中,并执行,以绑定规则。USEbookstore;GOsp_bindrule

price_rule,'book.price';GO(4)在book表中输入部分数据进行测试,如输入的price的值为负数,则拒绝接受,并报错如图9-12所示。图9-12违反规则约束时的消息5.使用SQL语句添加、修改约束

任务5:在数据表publisher上建立约束pName_unique,用于限制属性publisherName取值要具有唯一性,并插入数据进行测试。ALTERTABLEpublisherADDCONSTRAINTpname_uniqueUNIQUE(publisherName);任务6:删除约束pName_unique。ALTERTABLEpublisherDROPCONSTRAINTpname_unique;9.5小结

数据库的完整性是指数据库中数据的正确性、有效性和相容性,其主要目的是防止数据库中存在错误的、不一致的数据。本项目介绍SQLServer2005保证数据库完整性的基本知识和方法,其中设置主键通常用于保证数据库的实体完整性,外键用于保证数据库的参照完整性,Check命令、规则、约束等主要用于保证用户自定义的数据库完整性。项目十一介绍的触发器也可以用于数据库的完整性维护。通过本项目的练习,读者能够掌握数据库完整性设计的基本方法。9.6项目作业

为数据表publisher设定主键(publisherID),并尝试部分违背publisher实体完整性约束要求的元组,注意观察结果;为数据表book的属性列publisherID建立外键,其参照属性为数据表publisher的属性列publisherID。将其更新时选项分别依次设置为级联修改等不同选项,然后修改publisher表中publisherID的属性值,查看表book中相关属性的值的变化情况;将外键参照关系的删除时的选项分别设为级联删除、设为空值等,然后在publisher表中删除某些元组,查看表book中相关属性的值的变化情况;使用check方法,为Basket表中

温馨提示

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

评论

0/150

提交评论