SQL—SERVER—2005数据参照完整性设计
运用SQL Server开发软件参照完整性实现方法

第 6期
计 算 机 技 术 与 发 展
COMP UTER TEC HNOLOGY AND DEVEL OP MENT
2 0 1 3年 6月
V o 1 . 2 3 N o . 6 J u n e 2 0 1 3
运用 S QL S e r v e r 开 发 软 件 参 照 完整 性 实现 方 法
r e f e e nc r e r e l a i t o n s h i p nd a ef r e r e n c e r e l a i t o n s h i p; t h e s e c o n d me  ̄o d i s t r i g g e r , r e s e a r c h e s t h e c l a s s i ic f a io t n nd a f u n c io t n, t h e wo r k i n g p r i n - c i p l e a n d he t me a n s t o a c h i e v e ef r e r e n ia t l i n t e g r i t y wi h t i t ; he t t h i r d me ho t d i s he t a p p l i c a i t o n, r e s e a r c h e s v a r i o u s o p e r a i t n g p r o c e s s i n g me t h o d o f a p p l i c a io t n s a c h i e v e ef r e e nc r e i n t e g r i t y.
De v e l o p me n t b y S QL S e r v e r
第6章 SQL Server 2005数据完整性

6.1.3 引用完整性
引用完整性又称为参照完整性。在输入或删除记录时, 引用完整性又称为参照完整性。在输入或删除记录时,引用 完整性用于维持参照表和被参照表之间的数据一致性。 完整性用于维持参照表和被参照表之间的数据一致性。 在SQL Server 2005中,引用完整性通过主键( 中 引用完整性通过主键( PRIMARY KEY)和外键(FOREIGN KEY)约束来实 )和外键( ) 现。 引用完整性用于确保键值在所有表中一致。 引用完整性用于确保键值在所有表中一致。这类一致性要求 不能引用不存在的值。如果一个键值发生更改, 不能引用不存在的值。如果一个键值发生更改,则整个 数据库中,对该键值的所有引用要进行一致的更改。 数据库中,对该键值的所有引用要进行一致的更改。在 被参照表中,当其主键值被其他表所参照时, 被参照表中,当其主键值被其他表所参照时,该行不能 被删除也不允许改变。在参照表中, 被删除也不允许改变。在参照表中,不允许参照不存在 的主键值。 的主键值。
数据库系统中的数据完整性

数据库系统中的数据完整性作者:王虹来源:《电脑知识与技术》2011年第16期摘要:数据库的数据完整性是设计数据库的核心内容,一个数据库的完整性约束设计的好坏,将直接影响到这个数据库的性能,同时也会影响到整个数据库的开发,因此一个好的数据库需要严格考虑其完整性约束。
该文主要结合学生成绩管理系统,介绍了在SQL Server2005数据库应用系统中,实现数据完整性的设计方法。
关键词:数据库;数据完整性;约束中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)16-3770-02SQL Server 2005是微软公司具有里程碑意义的企业级数据库产品。
既是安全、可靠、高效的企业级数据管理平台又是先进、一体化的商业智能平台以及极具扩展性和灵活性的开发平台。
本文以学生成绩管理系统为例,来介绍数据库系统中数据的完整性。
数据的完整性是指数据的精确性和可靠性,主要用于保证数据库中数据的质量。
可以从两个方面来理解数据的完整性:(1)数据的准确性,即每个字段的取值必须满足一定的数据类型、取值范围和约束等;(2)数据的一致性,即相关表格各字段的取值必须互相匹配。
在数据库应用系统中,保证数据的完整性是设计数据库的最基本的要求;数据完整性设计的好坏,直接关系到数据库系统的正确性、一致性和可靠性,甚至关系到整个数据库系统的成败。
当我们在数据库系统中使用INSERT、DELETE和UPDATE语句修改数据库时,数据的完整性就有可能遭到人为的破坏。
为了保证数据的正确性,为了保护数据库内容的一致性,可以通过SQL Server对数据库添加一个或多个数据完整性约束。
这些约束即可以限制数据库中字段的取值,也可以保护数据库中特定的数据不被任意删除。
在SQL Server数据库系统中,数据的完整性主要有以下3类:1)实体完整性; 即保证表中的每一行数据在该表中是唯一的。
为了保证实体完整性,必须指定表中的一个字段或多个字段的组合作为它的主键(primary key) 。
实验5 SQL Server 2005实现数据完整性

实验5 实现数据完整性注:完成有灰色底纹要求的内容必须要写在查询窗口并保存,下课前上传到学校FTP相应班级文件夹内。
上传地址:ftp://172.16.3.240,用户名(密码):workup_lfh。
文件命名格式:学号姓名实验5.sql5.1课堂练习:创建约束目标本次课堂练习的目标是能够使用 Transact-SQL 创建约束。
创建具有数据完整性的数据表1.单击“开始”,指向“所有程序”,指向“Microsoft SQL Server 2005”,然后单击“SQL Server Management Studio”。
2.在“连接到服务器”对话框中,指定下表中的值,然后单击“连接”。
属性值服务器类型数据库引擎服务器名称本地服务器身份验证Windows 身份验证3.单击工具栏上的“新建查询”按钮,首先运行以下命令创建一个TEST数据库。
Create database TestGoUse Testgo4.按照以下要求使用T-SQL创建数据表:表名:部门信息字段名:部门编号:字符型,长度为3,主键;部门名称:字符型,长度为10,非空;员工人数:整型,默认为0。
表名:员工信息字段名:员工编号:字符型,长度为4,主键;员工姓名:字符型,长度为10,非空;性别:字符型,长度为2,默认为“男”;出生年月:日期型,非空;入职时间:日期型;部门编号:字符型,长度为3,外键,引用部门表的部门编号。
5.在工具栏上,单击“执行”按钮。
使用 Transact-SQL 创建 CHECK 约束执行以下步骤以使用 Transact-SQL 创建 CHECK 约束:1.在查询窗口中,使用T-SQL为“员工信息”表创建CHECK约束,约束名为CK_Employee_Sex,只能对“性别”输入“男”或“女”2.选中刚输入的T-SQL命令,在工具栏上,单击“执行”按钮。
3.该命令成功完成之后,右键单击对象资源管理器中的“约束”文件夹,然后单击“刷新”确认CK_Employee_Sex约束已创建好。
第6章 SQL Server 2005数据完整性

6.4 关系图
关系图(又称图表)是SQL Server 2005中一类特殊的数据 库对象,它提供给用户直观地管理数据库表的方法。通过 关系图,用户可以直观地创建、编辑数据库表之间的关系 ,也可以编辑表及其列的属性。
1.使用SQL Server Management Studio建立FOREIGN KEY约束
2.使用SQL语句建立FOREIGN KEY约束
6.3 规则
规则是一个向后兼容的功能,用于执行一些与CHECK约束 相同的功能。CHECK约束是用来限制列值的首选标准方 法。CHECK约束比规则更简明,一个列只能应用一个规 则,但是却可以应用多个CHECK约束。CHECK约束作 为CREATE TABLE语句的一部分进行指定,而规则以单 独的对象创建,然后绑定到列上。SQL Server 2005采用 CREATE RULE命令来创建一个规则,其语法格式如下 。
6.6 小结
数据库完整性设计是数据库管理和开发人员需要学习和掌握 的一个非常重要的内容,它是维护数据库中数据一致性的 重要机制。本章在了解数据库中数据完整性基础知识的基 础上,介绍了在SQL Server 2005中实现数据完整性的两 种机制:约束与规则,其中约束更为通用,然后介绍了 SQL Server 2005数据库中的一个数据库对象——关系图 ,它是实现FOREIGN KEY约束的另一个选择,最后向读者 展示如何用Transact-SQ语句来创建、使用和删除常见约 束和规则。
6.1.4 用户定义的完整性
不同的关系数据库系统根据其应用环境的不同,往往还需要 一些特殊的约束条件。用户定义的完整性即是针对某个特 定关系数据库的约束条件,它反映某一具体应用所涉及的 数据必须满足的语义要求。SQL Server 2005提供了定义 和检验这类完整性的机制,以便用统一的系统方法来处理 ,而不是用应用程序来承担这一功能。所有完整性类别都 支持用户定义完整性。
sql2005教程

第3章 Transact-SQL语言
与连接服务器相反的是断开服务器,只要在所要断开的服务器上单击右键,选择“断开”即可。注意断开服务器并不是从计算机中将服务器删除,而只是从SQL Server管理平台中删除了对该服务器的引用。需要再次使用该服务器时,只需在SQL Server管理平台中重新连接即可。
2.2 服务器启动、暂停和停止
第2章 服务器管理
2.1 服务器注册
2.1.1 创建服务器组
在一个网络系统中,可能有多个SQL Server服务器,可以对这些SQL Server服务器进行分组管理。分组的原则往往是依据组织结构原则,如将公司内一个部门的几个SQL Server服务器分为一组。SQL Server分组管理由SQL Server管理平台来进行。
2.1.2 服务器注册与连接
在SQL Server管理平台中注册服务器可以存储服务器连接信息,以供将来连接时使用。
有三种方法可以在SQL Server管理平台中注册服务器:
(1)在安装管理平台之后首次启动它时,将自动注册 SQL Server 的本地实例; (2)可以随时启动自动注册过来还原本地服务器实例的注册;
SQL Server分析器(Profiler)是一个图形化的管理工具,用于监督、记录和检查SQL Server 数据库的使用情况。对系统管理员来说,它是一个连续实时地捕获用户活动情况的间谍。可以通过多种方法启动 SQL Server Profiler,以支持在各种情况下收集跟踪输出。如下图所示。
1.4.5 分析服务
第五章 sql server2005 数据完整性

SQL Server 2005 数据完整性
3.1使用对象资源管理器创建唯一约束 (1)在“对像资源管理器” 窗口中,右击需要设置唯一约束的 表,在弹出的菜单选 “修改” 命令,打开 “表设计器” (2)在“表设置器” 窗口中,右击需要设置为唯一约束的字段 在弹出的菜单中选择 “索引/键”命令。然后添加唯一约束。
更多更新视教程,请到
SQL Server 2005 数据完整性
2、绑定默认 默认值创建之后,必须将其绑定到表的字段才能产生作用,在 查询分析器中使用系统存储过程来完成绑定。其语法格式如下: EXECUTE sp_bindefault ‘默认名称’,’表名.字段名’ 3、解绑默认值 类似规则,对于不需要再利用默认的列,可以利用系统存储过程对 其解绑。其语法格式如下: EXECUTE sp_bindefault ’表名.字段名’ 4、删除默认值 当默认值不再有存在的必要时,可以将其删除。在删除前,必须先 对默认值解绑。在查询分析器中使用DROP语句删除默认值。其语 法格式如下: DROP DEFAULT 默认名称
更多更新视教程,请到
SQL Server 2005 数据完整性
2、绑定规则 要使创建好的规则作用到指定的列或表等,还必须将规则绑定到列 或用户定义的数据类型上。 EXECUTE sp_bindrule ‘规则名’,表名.字段名’ 3、解绑规则 如果说字段已经不再需要规则输入了,那么必须把已绑定了的规则 去掉,这就是解绑规则,在查询分析器中,同样用存储过程来完成 解绑定操作,语法如下: EXECUTE sp_unbindrule ’表名.字段名’ 4、删除规则 如果规则已经没有用了,那么可以将其删除。在删除前应该先对规 则进行解绑,当规则不再作用于任何表或字段时,可以删除规则。 DROP RULE 规则名称 更多更新视教程,请到
试卷数据库

2011 —2012 学年第一学期2010 级高职计算机应用技术及网络技术专业《数据库应用技术SQL 2005》课程考试试卷(B卷)一、选择题:(每小题1 分,共15分)1.数据库模型可分为三种类型,哪种不属于常见的数据库模型(C.记录型)。
A.网状型B.层次型C.记录型D.关系型2.修改数据库的语法为(B.ALTER DATABASE 数据库名)。
A.INSERT DA TABASE 数据库名B.ALTER DATABASE 数据库名C.INSERT 数据库名D.ALTER 数据库名3.下列关于非聚集索引的叙述(A.在一个基本表上能建立多个非聚集索引)。
A.在一个基本表上能建立多个非聚集索引B.在一个基本表上最多能建立与基本表中记录数相等的非聚集索引C.在一个基本表上只能建立少于基表中记录数的非聚集索引D.在一个基本表上最多只能建立一个非聚集索引4.SQL数据操纵功能包括(C.DELETE语句)。
A.SELECT语句B.ALTER 语句C.DELETE语句D.DROP 语句5.SQL语言允许使用通配符进行字符串匹配,其中“_”可以表示(B.1个字符)。
A.零个字符B.1个字符C.多个字符D.以上都是6.以下哪个关键字用来定义记录某个属性上的约束条件(D.CHECK)。
A.DEAFAULT B.DISTINCT C.UNIQUE D.CHECK7.想往表中删除多条记录,应用哪一条SQL语句(D.DELETE 表名[WHERE 条件])。
A.ALTER TABLE B.INSERT INTO TABLEC.CREATE TABLE D.DELETE 表名[WHERE 条件]8.以下哪个不是关系运算符(C.= =)。
A.< B.>= C.= =D.<>9.在T-SQL语句中,关于NULL值叙述正确的选项是(D.NULL表示空值)。
A.NULL表示空格B.NULL表示0C.NULL可以表示为0,也可以表示为空格D.NULL表示空值10.对于JOIN和UNION下面描述错误的是(C.UNION是对列进行操作,JION是对行进行操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:本文围绕参照完整性内容展开,提到了与参照完整性相关的主键及外键的概念,详细描述了参照完整性的含义及功能,最后介绍了在sql_server_2005中通过外键约束和更新删除规则来实现参照完整性的过程。
关键词:参照完整性;外键约束;更新及删除规则
中图分类号:tp311.52 文献标识码:a 文章编号:1007-9599 (2012)17-0000-02
1 引言
存放在数据库中的数据是从外界输入的,用户在手工输入数据时由于种种原因和疏忽,会产生输入错误或输入信息无效。
当数据的准确性得不到保障时,运行在数据库上的应用程序也会产生不可预料的错误和损失,数据完整性也因此而提出。
通过数据完整性约束,避免了存在不符合语义规定的数据和因错误信息的输入而造成无效操作等情况发生。
数据完整性包括实体完整性、域完整性、参照完整性和用户自定义完整性四大类。
其中参照完整性是较重要和较难理解的,同时也是很容易被用户忽略的,以下主要围绕参照完整性来介绍。
2 与参照完整性相关的概念
2.1 主键
在关系型数据库中,为了标识每一个实体,创建表时一般都要定义一个主键。
构成主键的列要能唯一确定表中每一行记录,如学生实体的学号、姓名、性别、出生日期等属性中,学号属性可以作为主键,因为每个学生的学号是唯一的,学号确定了,每个学生也就确定了。
而学生姓名在这里是不适合作为主键的,因为要考虑学生同名的情况发生;而性别、出生日期更也就更不能作为主键来处理。
某一列定义为主键时,则必须满足以下两个点:该列上不能取null值,并且不能有重复的值,这两点缺一不可。
在输入数据时如违反了主键的规定(取null值和有重复的值),系统将拒绝用户输入,从而保证了现实中的实体完整性和唯一性。
2.2 外键
现实中存在的对象是相互联系的,在关系型数据库中实体间的联系体现在表间的联系上。
要将彼此孤立的表联结起来,就要求在表中存在一些列,这些列可以让表间进行关联,那么外键就是可以让表间相互关联的列。
对外键的定义如下:某个键同时出现在a和b两个表中,若在表a中它被定义为主键,则在表b中称为外键。
如学生表表中有(学号、姓名、性别、出生日期)字段,其中学号为主键;在成绩表中有(成绩编号,学号,课程号,成绩)字段,则成绩表中的学号字段为外键。
外键与主键总是不可分的,其中主键所在的表称为主表;外键所在的表称为从表。
3 参照完整性的理解
参照完整性是对相关联的两个表间的一种约束,是用于确保表间数据的保持一致,避免因一个表数据的修改,导致另一个表相关数据失效。
它通过对主键和外键在取值上进行检查,要求所有外键的值必须是主键的有效值,即外键的值要么全部来自于主键,要么取空值。
例如,如果在学生表和成绩表之间用学号建立了关联,学生表是主表,成绩表是从表,那么,在向从表中输入一条新记录时,系统要检查新输入的学号值是否是主表中已存在的学生学号,如果存在,则允许执行输入操作,否则拒绝输入。
如果没有参照完整性,则可在从表中可以输入任何主表中不存在的学生成绩,试想在现实生活中,这个学生根本就不存在,而却记录了该学生的成绩,这是不符合常理的。
参照完整性还体现在删除和更新操作。
当更新、删除一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查数据是否正确。
例如通过“限制”的原则不允许在主表中修改或删除外表中已有相应值的记录;再如通过“级联”的原则,要求修改或删除主表
中主键值时,从表中外键的值也应做相应的修改或删除,如在从表中未做相应的修改和删除,会造成从表中存在大量孤立的无意义的数据。
4 在sqlserver2005中实现参照完整性
4.1 强制外键约束
在sql_server_2005 management studio中,新建数据库关系时,创建外键约束。
①在对象资源管理器中展开需创建关系的数据库,右击“数据库关系图”,选择“新建数据库关系图”,添加将要创建关联的表;②在关系图中,将主表的主键字段拖到从表上。
在打开的“表和列”对话框中选择相关联的主键和外键;③在随后打开的“外键关系”对话框中,在“强制外键约束”选项中有“是”和“否”两个选项。
这里选择“是”。
【注意】要创建参照完整性,必须确保选择了外键约束,外键约束表现为:若主表中没有相应的值,则在从表中不能添加相应的记录。
(不可以修改从表中主表中有相应值的记录)。
(但是可以删除从表中主表中有相应值的记录)。
如强制外键约束为“否”,则主表和从表中数据的一致性也无法得到保证。
4.2 更新和删除规则
强制外键约束只是设置参照完整性的第一步,第二步还需设置更新和删除规则。
更新和删除规则指定当数据库的最终用户尝试更新或删除某一行,而该行包含外键关系所涉及的数据时所发生的情况。
更新和删除规则只有在选择了强制外键约束条件下才生效。
在sqlserver2005中更新和删除规则共有以下四种设置:
①无操作(限制):当更新或删除主表中与从表有关数据时,将显示一条错误信息,告知用户不允许执行该更新或删除操作。
此操作是一种限制的关系,具体表现在:若外键所在表中有相关记录,则在主表中不允许更改或删除相关的主键值。
②层叠(级联):更新或删除外表中所涉及到所有行。
“层叠”在sql server 2000中又叫“级联”关系,具体表现在:更改或删除主键所在表中数据时,外键所在的表中的相应记录将自动更改或删除。
(注意:要刷新后才能看到效果)
【注意】在使用层叠更新和删除时,一定要谨慎,否则将导致数据不可控。
例如,如果a表级联删除或更新了b表中的数据,而b表又级联了c表,c表还级联了d表,那么用户在删除或更新a表中一条数据时可能都没有想到会把c表、d表中的数据给删除或修改了。
正是由于这种级联不好控制,所以层叠功能一般很少用。
③设置空:是sql_server_2005新增功能,可将外键取空值。
具体表现为:在外键所在列都可以接受空值的情况下,更改或删除主键的值时,外键所在列取null值。
【注意】如果外键所在列不可以接受空值,则创建表与表之间的关系时,不能选择“设置空”操作。
④设置默认值:是sql_server_2005新增功能,可将外键取默认值。
在外键所在列已定义了默认值情况下,修改或删除主键值时,外键所在列值取定义时的默认值。
【注意】如果外键所在列没有定义默认值,则创建表与表之间的关系时,不能选择“设置默认值”操作。
参考文献:
[1]刘宏.sql server 2005 数据库应用技术[m].机械工业出版社,2012,2.
[2]庞英智.sql server数据库及应用[m].高等教育出版社,2007,12.
[3]李伟红. sqlserver2005实用教程[m];中国水利水电出版社;2008.
[4]郑昌厚.浅析sql server2005数据库[j];中国对外贸易;2010,24.
[作者简介]
黄小花(1982-),女,江西吉安人,讲师,软件工程硕士,主要研究方向:软件工程、
计算机网络与数据库。