实验八数据完整性实验指导

上传人:ji****n 文档编号:45118141 上传时间:2018-06-15 格式:DOC 页数:14 大小:274.50KB
返回 下载 相关 举报
实验八数据完整性实验指导_第1页
第1页 / 共14页
实验八数据完整性实验指导_第2页
第2页 / 共14页
实验八数据完整性实验指导_第3页
第3页 / 共14页
实验八数据完整性实验指导_第4页
第4页 / 共14页
实验八数据完整性实验指导_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《实验八数据完整性实验指导》由会员分享,可在线阅读,更多相关《实验八数据完整性实验指导(14页珍藏版)》请在金锄头文库上搜索。

1、1实验八实验八 数据完整性数据完整性 实验指导实验指导一、完整性的概念一、完整性的概念数据完整性是指存储在数据库中的数据正确无误,并且相关数据具有一致性。数据库 中的数据是否完整,关系到数据库系统能否真实的反映现实世界。立足在“学生”表中学 生的学号要具有唯一性,学生性别只能是男或女,其所在的系部、专业、班级必须是存在 的,否则,就会出现数据库中的数据与现实不符的现象。如果数据库中总存在不完整的数 据,那么它就没有存在的必要了,因此,实现数据的完整性在数据库管理系统中十分重要。根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分为实体完整性、 域完整性、参照完整性和用户定义完整性 4

2、 种类型。1. 实体完整性实体完整性 实体是表中的记录,表中的一条记录就是一个实体。实体完整性要求在表中不能存在 完全相同的记录,而且每条记录都要具有一个非空且不重复的主键值。这样,就可以保证 数据所代表的任何事物都不重复、可以区分。例如,学生表中的学号必须唯一,并且不能 为空,这样就可以保证学生记录的唯一性。实现实体完整性的方法主要有主键约束、唯一 索引、唯一约束和制定 IDENTITIY 属性。2. 域完整性域完整性 域完整性是指特定列的项的有效性。域完整性要求向表中指定列输入的数据必须具有 正确数据类型、格式及有效的数据范围。例如,假设现实中学生的成绩为百分制,则在 “课程注册”表中,向

3、成绩列输入的数据,不能出现字符,也不能是小于 0 或大于 100 的 数值。实现域完整性的方法主要有 CHECK 约束、外键约束、默认约束、非空约束、规则 及在建表时设置的数据类型。3. 参照完整性参照完整性 参照完整性是指在有关联的两个或两个以上的表中,通过使用主键和外键或唯一键和 外键之间的关系,使表中的键值在相关表中保持一致。引用完整性要求不能引用不存在的 值。如果一个键值发生更改,则在整个数据库中,对该键值和所有引用要进行一致性的更 改。例如,在学生表中的“班级代码”列的值必须是在班级表中“班级代码”列中存在的 值,防止在录入学生记录时将学生分配到一个不存在的班级中。在 SQL Ser

4、ver 2005 中,参 照完整性是通过 FOREIGN KEY 和 CHECK 约束,以外键与主键之间或外键与唯一键之间 的关系为基础。4. 用户定义完整性用户定义完整性 用户定义的完整性是应用领域需要遵守的约束条件,其允许用户定义不属于其他任何 完整性分类的特定业务规则。所有的完整性类型(包括 CREATE TABLE 中所有列级约束 和表级约束、存储过程以及触发器)都支持用户定义完整性。2二、使用约束二、使用约束约束是 SQL Server 提供的自动强制数据完整性的一种方法,它通过定义列的取值规则 来维护数据完整性。1. 约束的类型约束的类型 SQL Server2005 支持的约束有

5、 NOT NULL(非空)约束、CHECK(检查)约束、 UNIQUE(唯一)约束、PRIMARY KEY(主键)约束、FOREIGN KEY(外键)约束和 DEFAULT(默认)约束。PRIMARY KEY约束。主键约束用来强制实现数据的实体完整性,它是在表中定义 一个主键来唯一标识表中每行记录。例如,在“学生”表中可以将学生编号设置为 主键,用来保证表中的学生记录具有唯一性。一般情况下,数据库中的每个表都包 含一列或一组列来唯一标识表中的每一行记录的值。 UINQUE约束。唯一约束用来强制实现数据的实体完整性,它主要用来限制表的非 主键列中不允许输入重复值。例如在“专业”表中可以将专业代码

6、作为主键用来保 证记录的唯一性。如果不允许一个学院有同名专业存在,应该为专业名称列定义唯 一约束,以保证非主键列中不出现重复值。 NOT NULL约束。非空约束用来强制实现数据的域完整性,它用于设定某列值不能 为空。如果指定某列不能为空,则在添加记录时,必须为此列添加数据。例如,对 于“班级表,存在一个班,就必须存在其相应专业,这时,就应该设置专业代码不 能空。注意:定义了主键约束和标识列属性的列不允许为空。 CHECK约束。检查约束用来强制数据的域完整性,它使用逻辑表达式来限定表中的 列可以接受的数据范围。例如,对于学生成绩的取值应限定在0100之间,这时, 就应该为成绩列创建检查约束,使其

7、取值在正常范围内。 DEFAULT约束。默认约束用来强制数据的域完整性,它为表中某列建立一个默认 值。插入记录时,如果没有为该列提供输入值,系统就会自动将默认值赋给该列。 例如,对于“学生“表中的性别字段,可以提供其默认值为男,当输入记录时,对 于男生就可以不输入性别数据,而由默认值提供。 FOREIGN KEY约束。外键是指一个表中的一列或列组合,它虽不是该表的主键, 却是另一个表的主键。通过外键约束可以为相关联的表建立联系,实现数据的参照 完整性,维护两表之间数据的一致性关系。例如,如果要求“学生”表中“班级代 码”列的取值,必须是“班级”表中“班级代码”列的列值之一,就应该在“学生” 表

8、的“班级代码”上创建外键约束,从而使“学生”表和“班级”表中的“班级代 码”具有一致性。约束还可以分为列约束和表约束两类。当约束被定义于某个表的一列时成为列约束, 定义于某个表的多列时成为表约束。当一个约束中必须包含一个以上的列时,必须使用表 约束。2. 创建主键约束创建主键约束 (1)使用)使用 SSMS 创建主键约束创建主键约束3【例】在“studentdb”数据库中,将“选课 SC”表中的“学号 sno、课程号 Cno”列 设置为组合主键。其操作步骤如下:1)启动 SSMS,在“对象资源管理器”中,依次展开“数据库”、“studentdb”、 “表”,右击“sc”表,在弹出的快捷菜单中选

9、择“修改”命令,打开“表设计器”。2)在表设计器中,选择需要设置为主键的字段,如果需要选择多个字段,可以按住【ctrl】,同时使用鼠标单击每个要选择的字段。本例中,依次选学号 sno、课号 Cno 字段。3)选好字段后,右击选择的某个字段,在弹出的快捷菜单中选择“设置主键”。如图 8.1 所示。图 8.1 选择“设置主键”命令4)执行命令后,在作为主键的字段前有一个钥匙图标,“表设计器”窗口如图 8.2 所示。也可以在选择好字段后,单击工具栏中的“钥匙”工具按钮,设置主键。图 8.2 “表设计器”窗口45)关闭表设计器,并保存设置。(2)使用)使用 T-SQL 语言创建主键约束语言创建主键约束

10、可以用 CREATE TABLE,也可以用 ALTER TABLE 为已存在的表创建主键约束。格 式如下:ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEYCLUSTERED|NONCLUSTERED (COLUMN,n)其中:Constraint_name是主键约束名称; CLUSTERED表示在该列上建立聚集索引; NON CLUSTERED表示在该列上建立非聚集索引。下面分别使用建表命令和修改表命令创建主键约束。【例】在 studentdb 数据库中建立一个“民族”表 Nationality(民族代码 NNo

11、,民族名 称 NName) ,将“民族代码”指定为主键。USE studentdbGOCREATE TABLE Nationality(NNo char(2) CONSTRAINT pk_nno PRIMARY KEY,NName varchar(30) NOT NULL)【例】在 studentdb 数据库中的“课程 Course”表中,指定字段“课程号 Cno”为表的 主键,代码如下:ALTER TABLE courseADD CONSTRAINT pk_cnoPRIMARY KEY CLUSTERED(cno)3. 创建唯一约束创建唯一约束(1)使用使用 SSMS 创建唯一约束创建唯一约

12、束【例】在 studendb 数据库中,为课程“course”表中的“cname”字段创建一个唯一约 束。操作步骤如下:1)启动 SSMS,在“对象资源管理器”中,依次展开“数据库” 、 “studentdb” 、 “表” 节点。52)右击“course”表,在快捷菜单中单击“修改”命令,打开“表设计器” ,右击任 意字段,在快捷菜单中单击“索引/键” ,打开“索引/键”对话框。3)单击“添加”命令按钮,系统给出系统默认的唯一约束名:“IX_Course” ,显示在 “选定的注/唯一或索引”列表框中,如图 8.3 所示。图 8.3 “索引/键”对话框4)选中唯一约束“IX_Course” ,在

13、其右侧的“属性”窗口中,可以执行修改约束名称、 设置约束列等操作。5)单击“属性”中的“常规” “列”属性,右侧出现“”按钮,单击该按钮,打开 “索引列”对话框,在如图 8.4 所示,在列名下拉列表框中选择“cname” ,在排序顺序中 选择“升序” ,设置创建唯一约束的列名。6图 8.3 “索引/键”对话框6)设置完成后,单击“确定” ,回到“索引/键”对话框,修改常规属性中“是唯一的” 属性值为“是” ,如图 8.5 所示。图 8.5 “索引/键”对话框 17)设置完成后,关闭“索引/键”对话框和“表设计器”窗口,保存设置。7(2)使用)使用 T-SQL 语言创建唯一约束语言创建唯一约束语

14、法格式:ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUECLUSTERED|NONCLUSTERED (COLUMN,n)其中:table_name是需要创建唯一约束的表名称; constraint_name是唯一约束名称; column是表中需要创建唯一约束的列名称;【例】在 studentdb 数据库中,为“民族”表 Nationality 中的“民族名称”字段创建 唯一约束,代码如下:ALTER TABLE NationalityADD CONSTRAINT uk_NName UNIQUE NONCLUSTERED(

15、NNAME) 4. 创建检查约束创建检查约束(1)使用使用 SSMS 创建检查约束创建检查约束【例】为 student 表的“出生日期 sbirth”列创建一个名称为 ck_csrq 的检查约束,以保 证输入的数据大于 1990 年 1 月 1 日而小于当天日期。1)启动 SSMS,在“对象资源管理器”中,依次展开“数据库”、“studentdb”、 “表”。2)右击“student”表,在快捷菜单单击“修改”,打开“表设计器”,右击任意字段, 单击“CHECK 约束”,打开对话框。3)单击“添加”命令按钮,系统给出默认的 CHECK 约束名:“CK_student”,显示 在“选定的 CHE

16、CK 约束”列表中,创建“CHECK 约束”对话框如图 8.6 所示。8图 8.6 创建“CHECK 约束”对话框4)单击“属性”窗口中“常规”属性“表达式”,在其对应的文本框中输入约束条件 (输入 sbirth1990/01/01 AND sbirth=0 AND Grade=100)5. 创建默认约束创建默认约束用户在输入数据时,如果没有给某列赋值,该列的默认约束将自动为该列指定默认值。 默认值可以是常量、内置函数或表达式。使用默认约束可以提高输入记录的速度。(1)使用使用 SSMS 创建默认约束创建默认约束【例】在 student 数据库中,有一“教师”Teacher 表,为该表中的“学历”Teducation 字段创建默认值,其默认值为“bachelor” 。操作步骤:1)启动 SSMS,在“对象资源管理器”中,依次展开“数据库”、“student”、“表”2)右击“教师表”teacher,在快捷菜单中选择“修改”,打开“表设计器”。3)单击需要设置默认的列,在下面列属性设置栏的“默认值或绑定

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号