索引与数据完整性.(1)

上传人:F****n 文档编号:88435963 上传时间:2019-04-27 格式:PPT 页数:23 大小:144.50KB
返回 下载 相关 举报
索引与数据完整性.(1)_第1页
第1页 / 共23页
索引与数据完整性.(1)_第2页
第2页 / 共23页
索引与数据完整性.(1)_第3页
第3页 / 共23页
索引与数据完整性.(1)_第4页
第4页 / 共23页
索引与数据完整性.(1)_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《索引与数据完整性.(1)》由会员分享,可在线阅读,更多相关《索引与数据完整性.(1)(23页珍藏版)》请在金锄头文库上搜索。

1、6 索引与数据完整性,1,数据完整性,在数据库规划的时候最重要的一步是确定用于强制数据完整性的最好方法。数据库完整性指在是存储在数据库中的数据的一致性和准确性。数据库完整性分为这三种类别:域完整性(列)、实体完整性(行)和参考完整性(表之间)。 域 完整性:指列有效的一组值并决定是否允许有空值。也可以通过在一列中限定数据类型,格式和可能值的范围来强制数据完整性 实体完整性:要求表中所有的行具有唯一的标识符,例如主关键字值。 参考完整性:确保维持主关键字和外部关键字的关系。,6 索引与数据完整性,2,约束类型,约束是一种强制数据完整性的标准ANSI方法。每种数据完整性类型 ,使用分别的约束类型来

2、进行强制。,6 索引与数据完整性,3,6.2.1 在表中定义及删除默认值约束,默认值约束的定义 【例】在定义表时定义一个字段的默认值约束。 USE XSCJ CREATE TABLE XS ( 学号 char(6) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, 总学分 tinyint NULL, 备注 text NULL, 入学日期 datetime default getdate() /*定义默认值约束*/ ) GO,6 索引与数据完整性,4,6.

3、2.1 在表中定义及删除默认值约束,默认值约束的定义 下列程序实现的功能与上例同,但在定义缺省值约束的同时指定了约束名。 USE XSCJ CREATE TABLE XS ( 学号 char(6) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, 总学分 tinyint NULL, 备注 text NULL, 入学日期 datetime CONSTRAINT datedflt default getdate() /*定义默认值约束*/ ) GO,6 索引

4、与数据完整性,5,6.2.1 在表中定义及删除默认值约束,默认值约束的定义 【例】在修改表时定义一个字段的默认值约束。 USE XSCJ ALTER TABLE XS ADD AddDate smalldatetime NULL CONSTRAINT AddDateDflt /*默认值约束名*/ DEFAULT getdate(),6 索引与数据完整性,6,6.2.1 在表中定义及删除默认值约束,默认值约束的删除 【例】删除上例定义的默认值约束。 USE XSCJ ALTER TABLE XS DROP CONSTRAINT AddDateDflt GO,6 索引与数据完整性,7,6.2.2默

5、认值对象的定义、使用与删除,通过SQL语句定义和绑定DEFAULT默认值对象 应用举例 【例】对于如前所述的XSCJ数据库中XS表的总学分字段,可用如下 程序段实现初始值设置为0。 CREATE DEFAULT zxf_default AS 0 /* 定义语句应为第一条件语句或紧跟在GO之后*/ USE XSCJ EXEC sp_bindefault zxf_default ,XS.总学分 GO,6 索引与数据完整性,8,6.2.2默认值对象的定义、使用与删除,通过SQL语句定义和绑定DEFAULT默认值对象 应用举例 【例】首先在XSCJ数据库中定义表book及名为 today 的默认值,然

6、后将其绑定到 book表的 hire date 列。 -定义表 CREATE TABLE book ( book_id char(6) name varchar(20) NOT NULL, hire_date datetime NOT NULL ) GO -创建默认值对象 CREATE DEFAULT today AS getdate() GO -绑定默认值对象 USE book EXEC sp_bindefault today, book.hire_ date,6 索引与数据完整性,9,6.2.2默认值对象的定义、使用与删除,通过SQL语句定义和绑定DEFAULT默认值对象 应用举例 【例】

7、在XSCJ数据库中定义名为 birthday_date 的数据类型,然后 定义默认值对象day并将其绑定到用户定义的数据类型birthday_date 中。 -定义数据类型birthday_date USE XSCJ EXEC sp_addtype birthday_date, datetime, NULL Go -定义day缺省值对象 CREATE DEFAULT day AS 1960,00,00 - 将缺省值对象day绑定到birthday_date数据类型 USE XSCJ EXEC sp_bindefault day , birthday_date ,6 索引与数据完整性,10,6.

8、2.2默认值对象的定义、使用与删除,默认值对象的删除 【例】解除默认值对象day与XSCJ库中用户定义类型birthday_date的绑定关系,然后删除名为day的默认值对象。 USE XSCJ IF EXISTS (SELECT name FROM sysobjects WHERE name = day AND type = D) BEGIN EXEC sp_unbindefault birthday_date DROP DEFAULT day END GO,6 索引与数据完整性,11,6.3.1 数据完整性的分类,域完整性 【例】定义表KC的同时定义学分的约束条件。 USE XSCJ CR

9、EATE TABLE KC ( 课程号 char(6) NOT NULL, 课程名 char(8) NOT NULL, 学分 tinyint CHECK (总学分 =0 AND总学分=10) NULL, /* 通过CHECK子句定义约束条件 */ 备注 text NULL ) GO,6 索引与数据完整性,12,6.3.2域完整性的实现,CHECK约束的定义与删除 通过企业管理器创建与删除CHECK约束 利用SQL语句在创建表时创建CHECK约束 例】在 XSCJ 数据库中创建表books,其中包含所有的约束定义。 USE XSCJ CREATE TABLE books ( book_id sm

10、allint, /*书号*/ book_name varchar(50) NOT NULL /*书名*/ book _desc varchar(50) NOT NULL /*书的简要说明*/ DEFAULT New book - , max_lvl tinyint NOT NULL CHECK (max_lvl = 250) /*书允许的最高价CHECK约束*/ ),6 索引与数据完整性,13,6.3.2域完整性的实现,CHECK约束的定义与删除 通过企业管理器创建与删除CHECK约束 利用SQL语句在修改表时创建CHECK约束 【例】通过修改XSCJ数据库的XS_KC表,增加成绩字段的CHE

11、CK约 束。 USE XSCJ ALTER TABLE XS_KC ADD CONSTRAINT cj_constraint CHECK (成绩=0 and 成绩=100) 利用SQL语句删除CHECK约束 语法格式: ALTER TABLE table_name DROP CONSTRAINT check_name 参数含义: 在table_name指定的表中,删除名为check_name的约束。,6 索引与数据完整性,14,6.3.2域完整性的实现,CHECK约束的定义与删除 通过企业管理器创建与删除CHECK约束 利用SQL语句删除CHECK约束 【例】删除XSCJ数据库中XS_KC表成

12、绩字段的CHECK约束。 USE XSCJ ALTER TABLE XS_KC DROP CONSTRAINT cj_constraint GO,6 索引与数据完整性,15,6.3.2域完整性的实现,规则对象的定义、使用与删除 利用企业管理器定义规则对象并绑定到自定义类型或列 利用SQL命令定义规则对象并绑定到自定义类型或列 规则对象的定义 语法格式: CREATE RULE rule AS condition_expression 将规则对象绑定到自定义类型或列 语法格式: sp_bindrule rulename = rule , objname = object_name , futur

13、eonly = futureonly_flag ,6 索引与数据完整性,16,6.3.2域完整性的实现,规则对象的定义、使用与删除 利用SQL命令定义规则对象并绑定到自定义类型或列 应用举例 【例】如下程序创建一个规则,并绑定到表KC的课程号列,用于限制课程 号的输入范围。 USE XSCJCREATE RULE kc_ruleAS range like 1-50-90-9 GO USE XSCJ EXEC sp_bindrule kc_rule, KC.课程号 GO 【例】创建一个规则,用以限制输入到该规则所绑定的列中的值只能是该 规则中列出的值。 USE XSCJCREATE RULE l

14、ist_ruleAS list IN (C语言, 离散数学, 微机原理)GOUSE XSCJ EXEC sp_bindrule list_rule, KC.课程名 GO,6 索引与数据完整性,17,6.3.2域完整性的实现,规则对象的定义、使用与删除 利用SQL命令定义规则对象并绑定到自定义类型或列 应用举例 【例】如下程序定义一个用户数据类型course_num,然后将前面定义的规则“kc_rule”绑定到用户数据类型course_num上,最后定义表KC,其课程号的数据类型为course_num。 USE XSCJ /* 打开数据库 */ EXEC sp_addtype course_nu

15、m,char(3),not null /* 调用存储过程 */ EXEC sp_bindrule kc_rule, course_num GO CREATE TABLE KC1 ( 课程号 course_num 课程名 char(16) NOT NULL, 开课学期 tinyint , 学时 tinyint, 学分 tinyint ) GO,6 索引与数据完整性,18,6.3.2域完整性的实现,规则对象的定义、使用与删除 利用SQL命令定义规则对象并绑定到自定义类型或列 【例】解除课程号列与kc_rule之间的绑定关系,并删除规则对 象kc_rule。 USE XSCJ IF EXISTS (

16、SELECT name FROM sysobjects WHERE name = kc_rule AND type = R) BEGIN EXEC sp_unbindrule KC.课程号 DROP RULE kc_rule END GO,6 索引与数据完整性,19,规则对象的定义、使用与删除 利用SQL命令定义规则对象并绑定到自定义类型或列 规则对象的删除 【例】解除自定义类型course_num与kc_rule之间的绑定关系,并删除规则对象kc_rule。 USE XSCJ IF EXISTS (SELECT name FROM sysobjects WHERE name = kc_rule AND type = R) BEGIN EXEC sp_unbindrule course_num DROP RULE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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