SQL—SERVER—2005数据参照完整性设计
- 格式:doc
- 大小:5.51 KB
- 文档页数:3
数据库系统中的数据完整性作者:王虹来源:《电脑知识与技术》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 实现数据完整性注:完成有灰色底纹要求的内容必须要写在查询窗口并保存,下课前上传到学校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约束已创建好。
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是对行进行操作。
实验14:SQL_SERVER_2005综合练习(全)SQL SERVER 2005综合练习题⼀、创建数据库STUxxxx(其中xxxx为⾃⼰的姓名,创建⽅法和数据库参数⾃定)。
⼆、在STUxxxx数据库中使⽤SQL语句创建如下的表结构:1.学⽣情况表(XS)结构2.课程表(KC)结构3.学⽣与课程表(XS_KC)结构三、使⽤语句对以上的表结构进⾏修改1.修改学⽣情况表(XS)的“出⽣⽇期”字段,使其数据类型改为datetime,且允许为空。
2.删除学⽣与课程表(XS_KC)中的“学分”字段。
3.修改学⽣情况表(XS),删除“班级”字段,增加⼀“专业”字段(varchar(20), 默认值为“计算机”)四、向数据库STUxxxx的XS表、KC表和XS_KC表中插⼊或修改成如下数据:学⽣情况表(XS)课程表(KC)学⽣与课程表(XS_KC)五、以下题⽬均在STUxxxx(学⽣管理)数据库中完成。
(⼀)简单查询1.查询XS表中各个同学的所有信息。
2.查询XS表中各个同学的姓名、专业名和总学分。
3.查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为num,name和mark。
4.查询XS表中的学⽣数据来⾃哪些专业(使⽤DISTINCT⼦句消除结果集中的重复⾏)。
5.查询XS表中各个同学的姓名、专业名和总学分,只返回结果集的前5⾏。
6.查询XS表中每个学⽣的学号、姓名和年龄信息。
7.查询XS表中专业为“计算机”的同学的情况。
8.查询XS表中1979年出⽣的学⽣姓名和专业情况。
9.查询XS表中专业名为“计算机”或“电⼦”或“数学”的学⽣的情况。
10.查询XS表中姓“张”或“王”或“李”且单名的学⽣的情况。
11.查询XS表中总学分尚未确定的学⽣情况。
12.查询XS表中专业为“计算机”且总学分尚未确定的学⽣情况。
13.从XS表中查询学⽣的基本信息,要求按照总学分从⾼到低排序,学分相同时,按学号由低到⾼排序。
摘要:本文围绕参照完整性内容展开,提到了与参照完整性相关的主键及外键的概念,详细描述了参照完整性的含义及功能,最后介绍了在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-),女,江西吉安人,讲师,软件工程硕士,主要研究方向:软件工程、
计算机网络与数据库。