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是对行进行操作。
实验14:SQL_SERVER_2005综合练习(全)

实验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数据库完整性的综合设计与实现

S 数据 库 完整性 的 S QL ev r re
综 合 设 计 与 实 现
何 南 张桂 芬
/ 桂 林 师 范 高 等 专科 学校 物 理 与 信 息技 术 系, 西 桂 林 1 广 5 10 、 4 0 1
Hale Waihona Puke \ 广 西 民族 大 学 数 学 与 计算 机 科 学 学院 , 西 南 宁 5 00 2 广 30 6
1 S ev r数 据 库 完 整 性 应 用 实 例 QL S re
系 统 的 功能 , 都 包 含 了能 说 明问 题 的模 块 。 但
1 1 问 题 描 述 .
( ) 生 选 课 表 S ( n , n , rd ) 4学 C S o C o G a e 。其 中 S o表 示 n
21 0 第 4期 0车 桂林 航天 工业高等 专科 学校 学报 ( 第 6 总 0期 ) J U N IO t INC I E gO E O P C E H O G 计 算 机 技 木及 应 用 O R A F O G FA R S A ET C N I Y GJ I I I O
名 学生 有 一 位 教 师指 导 。
1 2 E R 图与 关 系模 型 .
具 有 唯 一 性 , 系 模 型 中通 过实 体 完 整性 来 实 现这 一 特 性 , 关 要 求 关 系 中 的 主属 性 不 能 为 空 值 , 能有 相 同 值 。 不
s I S r e 通 过 C e t T be 句 中 的 P i r y Q ev r rae a l 语 r ma yKe 进 行 主码 设 置 来 实 现 实 体 完 整 性 。 在 教 学 管 理 信 息 系 统
图 l 教 学 管 理 信 息 系 统 E— 图 R
SQLServer2005课后实训参考答案

课后实训参考答案单元1(SQL Server概述)1、使用SQL语句。
在Sale数据库中创建名为MyDataType的用户定义数据类型,数据类型为NV ARCHAR,长度为20,该列允许为NULL。
USE SaleGOEXEC sp_addtype MyDataType,'NVARCHAR(20)','NULL' GO单元2(单表数据)使用查询窗口或sqlcmd实施查询。
本实训使用Xk数据库。
--1.查看系部编号为“03”的系部名称。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartNo='03'GO--2.查看系部名称中包含有“工程”两个字的系的全名。
USE XkGOSELECT DepartNameFROM DepartmentWHERE DepartName LIKE'%工程%' GO--3.显示共有多少个系部。
USE XKGOSELECT'系部总数'=COUNT(*)FROM DepartmentGO--4.显示“01”年级共有多少个班级。
USE XKGOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassNo LIKE'2001%'GOSELECT'01 级班级数'=COUNT(*)FROM ClassWHERE ClassName LIKE'01%'GOSELECT'01 级班级数'=COUNT(*)FROM StudentWHERE ClassNo LIKE'2001%'GO--5.查看在“周二晚”上课的课程名称和教师。
USE XKGOSELECT'课程名称'=CouName,'任课教师'=TeacherFROM CourseWHERE SchoolTime='周二晚'GO--6.查看姓“张”、“陈”、“黄”同学的基本信息,要求按照姓名降序排序查询结果。
sqlserver实验(答案)

实验1 Sql Server数据库的安装1.实验目的(1)通过安装来了解,感受SQL Server2005(2)了解SQL Server2005所支持的多种形式的管理架构,并确定此次安装的管理架构形式(3)熟悉安装SQL Server2005的各种版本所需的软、硬件要求,确定要安装的版本(4)熟悉SQL Server2005支持的身份验证种类(5)掌握SQL Server服务的几种启动方法(6)正确配置客户端和服务器端网络连接的方法(7)掌握SQL Server Management Studio的常规使用2.实验准备(1)了解SQL Server2005的各种版本及所需的软、硬件要求(2)了解SQL Server2005支持的验证种类(3)了解SQL Server2005各组件的主要功能(4)掌握在查询分析器中执行SQL语句的方法3.实验内容(1)安装SQL Server2005,并在安装时将登录身份验证模式设置为“SQL Server”和“Windows”验证,其他选择默认,并记住Sa的密码。
(2)利用SQL Server Configuration Manager配置SQL Server2005服务器(3)利用SQL Server2005创建的默认帐户,通过注册服务器向导首次注册服务器(4)试着创建一些由SQL Server2005验证的用户,删除第一次注册的服务器后用新建的帐户来注册服务器。
(5)为某一个数据库服务器指定服务器别名,后通过服务器别名注册该数据库服务器(6)熟悉和学习使用SQL Server2005的SQL Server Management Studio实验2 创建数据库和表1.实验目的(1)了解SQL Server数据库的逻辑结构和物理结构(2)了解表的结构和特点(3)了解SQL Server的基本数据类型(4)掌握在SQL Server Management Studio中创建数据库和表的方法(5)掌握使用T-SQL语句创建数据库和表的方法2.实验准备(1)要明确能够创建数据库的用户必须是系统管理员或被授权使用Create database的用户(2)创建数据库必须要确定数据库名、所有者、数据库大小(最初大小、最大大小、是否允许增长和增长的方式)和存储数据的文件(3)确定数据库包含哪些表及包含的表结构,还要了解掌握在SQL Server Management 的常用数据类型,以创建数据库的表(4)了解常用的创建数据库和表的方法3.实验内容(1)数据库分析①创建用于学生选课管理的数据库,数据库名为“student”,初始大小20M,最大50M,数据库自动增长,增长方式是按15%;日志文件大小5M,最大25M,按5M增长。
SQL server 2005_数据设计实例

一、需求分析1、主要的业务需求用户管理员可以对教师、学生、课程、班级、系别等相关信息进行查看和维护。
教师可以向数据库输入课程成绩。
学生可以看自己的考试成绩。
学生可以选择自己的课程。
2、涉及到的数据范围:教师、学生、课程、班级、系别3、相关属性介绍:教师一般包括的属性有:教职工号、教师姓名、性别、年龄、职称、基本工资、津贴、生活补贴等学生信息一般包括的属性有:学号、姓名、性别、年龄、班级等班级信息一般包括的属性有:班号、班名、专业、系别等课程信息一般包括的属性有:课程号、课程名、学分等系别信息一般包括的属性有:系号、系名等4、其它相关要求1)教师和学生的性别必须为“男”、“女”不得输入其它性别2)教师和学生的年龄必须在18-100岁之间,不接收百岁老人在我校学习或任教。
3)每个学生必须要有一个班级。
4)每个班级至少有一名学生。
5)每名教师至少要担任一名课程。
6)每个班级必须有一个所属系别7)每门课程都必须要有期终成绩。
60分为及格分,及格的同学可以获得该课程的应有的学分。
8)可以方便统计出各个班级的平均成绩。
9)教程的津贴不得大于基本工资。
10)不得随意更改不及格同学的成绩11)不得删除不及格同学的记录。
12)老师工资必须在400元以上。
二、概念设计三、逻辑设计教师:Teacher(Tno,Tname,Tsex,Tage,Tzc,Tsalary,Tjintie,Tbutie)学生信息:Student(Sno,Sname,Ssex,Sage,Clno)班级信息:Class(Clno,Clname,special,Dno)课程信息:Course(Cno,Cname,Credits)系别:Department(Dno,Dname)四、物理设计4.8.2 数据处理和存储系统设计系统的数据层可以完成数据的存储和处理,这一层的内容包括数据库管理系统和数据接口。
数据库管理系统必须是具有安全、可靠、易管理等特点。
第5章 数据完整性

第5章数据完整性【学习目标】Microsoft SQL Server 2005系统提供了一系列保证数据完整性的方法和机制,例如约束、默认值和规则等。
其中约束技术是应用最为广泛的保证数据完整性的方法。
本章将主要介绍有关数据库完整性的技术与方法。
本章学习要点:◆数据完整性的基本概念与类型◆约束的概念与类型◆默认值的概念与类型◆规则的概念与类型【学习导航】数据完整性是指数据库系统中数据在逻辑上的一致性和准确性,是保证数据库中数据质量的一种重要手段,是数据库设计好坏的一项重要指标,同时也是现代数据库系统的一个重要特征。
我们都有在网上注册帐户的经历,在注册信息的时候,我们经常会遇到用户名已经存在、密码少于规定的长度、电子邮件必填、出生日期有效、身份证号码是否正确等一系列的限制,实际上这些限制就是保证数据完整性的一些手段,主要的目的就是为了保证用户所填写的内容正确、有效。
本章主要内容见图5-1所示的学习导航。
图5-1 本章学习导航5.1 概述当对数据库进行一系列的操作后,如添加、修改、删除后,数据可能会出现被破坏或相关数据不一致的情况,那么如何防止和解决这些问题的出现呢?这不仅仅需要管理人员和操纵人员的认真和负责,更需要建立一个保障机制,要么防止这些问题发生,要么发生这些问题时可以及时地发现。
数据完整性就是解决这些问题的一种机制。
数据完整性就是指存储在数据库中的数据的一致性和准确性。
在评价数据库的设计时,数据完整性是数据库设计好坏的一项重要指标。
根据数据完整性机制所作用的数据对象和范围不同,数据完整性可以分为实体完整性、域完整性、参照完整性和用户定义完整性4种。
1.实体完整性实体完整性,也可以称为行完整性。
实体是指表中的记录,一个实体就是表中的一条记录。
实体完整性要求在表中不能存在完全相同的记录,而且要求每条记录都要具有一个唯一的标识符,这种标识符一般称为主键值。
这样就可以保证数据所代表的任何事物都不存在重复、可以区分。
数据库应用技术SQLServer5教程文件

4.2.2 使用T-SQL语句创建表
例1:创建读者类型表ReaderType
CREATE TABLE ReaderType ( TypeID int NOT NULL primary key,--类型编号,主键 Typename char(8) NULL,--类型名称 LimitNum int NULL,--限借数量 LimitDays int NULL --借阅期限 )
相邻的列名,右键快捷菜单或工具栏按钮—“设置主键”;
4.2.1 使用SSMS创建表
Course表的主键建立示意图如下:
SQL Server 2005
Student,Course表主键约束采用同样的方法设置;
4.2.1 使用SSMS创建表
创建唯一性约束: 例如: Student表中的Sname
4.2.2 使用T-SQL语句创建表
SQL Server 2005
例3:创建图书表Book
USE Library GO CREATE TABLE Book( BID char(9) PRIMARY KEY,--图书编号,主键 Bname varchar(42) NULL,--图书书名 Author varchar(20) NULL,--作者 PubComp varchar(28) NULL,--出版社 PubDate datetime NULL,--出版日期 Price decimal(7,2) NULL CHECK (Price>0)--定价,检查约束)
4.3 修改表
1
使用SSMS修改表
2
使用T-SQL语句修改表
SQL Server 2005
4.3.1 使用SSMS修改表
实验八 数据完整性 实验指导

实验八数据完整性实验指导一、完整性的概念数据完整性是指存储在数据库中的数据正确无误,并且相关数据具有一致性。
数据库中的数据是否完整,关系到数据库系统能否真实的反映现实世界。
立足在“学生”表中学生的学号要具有唯一性,学生性别只能是男或女,其所在的系部、专业、班级必须是存在的,否则,就会出现数据库中的数据与现实不符的现象。
如果数据库中总存在不完整的数据,那么它就没有存在的必要了,因此,实现数据的完整性在数据库管理系统中十分重要。
根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分为实体完整性、域完整性、参照完整性和用户定义完整性4种类型。
1. 实体完整性实体是表中的记录,表中的一条记录就是一个实体。
实体完整性要求在表中不能存在完全相同的记录,而且每条记录都要具有一个非空且不重复的主键值。
这样,就可以保证数据所代表的任何事物都不重复、可以区分。
例如,学生表中的学号必须唯一,并且不能为空,这样就可以保证学生记录的唯一性。
实现实体完整性的方法主要有主键约束、唯一索引、唯一约束和制定IDENTITIY属性。
2. 域完整性域完整性是指特定列的项的有效性。
域完整性要求向表中指定列输入的数据必须具有正确数据类型、格式及有效的数据范围。
例如,假设现实中学生的成绩为百分制,则在“课程注册”表中,向成绩列输入的数据,不能出现字符,也不能是小于0或大于100的数值。
实现域完整性的方法主要有CHECK约束、外键约束、默认约束、非空约束、规则及在建表时设置的数据类型。
3. 参照完整性参照完整性是指在有关联的两个或两个以上的表中,通过使用主键和外键或唯一键和外键之间的关系,使表中的键值在相关表中保持一致。
引用完整性要求不能引用不存在的值。
如果一个键值发生更改,则在整个数据库中,对该键值和所有引用要进行一致性的更改。
例如,在学生表中的“班级代码”列的值必须是在班级表中“班级代码”列中存在的值,防止在录入学生记录时将学生分配到一个不存在的班级中。
Sql_Server_2005数据参照完整性设计

Sql_Server_2005数据参照完整性设计
黄小花
【期刊名称】《计算机光盘软件与应用》
【年(卷),期】2012(000)018
【摘要】本文围绕参照完整性内容展开,提到了与参照完整性相关的主键及外键的概念,详细描述了参照完整性的含义及功能,最后介绍了在Sql_Server_2005中通过外键约束和更新删除规则来实现参照完整性的过程。
【总页数】2页(P235-235,237)
【作者】黄小花
【作者单位】江西交通职业技术学院信息工程系,南昌 330013
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.数据库参照完整性动态设计与实现 [J], 黄衍森;曹迎槐
2.VFP6.0中数据参照完整性的设计与实现 [J], 崔赛英
3.VFP6.0中数据参照完整性的设计与实现 [J], 崔赛英
4.SQL Server2000数据库中实现数据参照完整性的方法分析 [J], 赵丽娟
5.MySQL数据库中数据参照完整性和一致性的设计与实现 [J], 李艳杰
因版权原因,仅展示原文概要,查看原文内容请购买。
- 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-),女,江西吉安人,讲师,软件工程硕士,主要研究方向:软件工程、
计算机网络与数据库。