1 / 20

数据完整性的分类

数据完整性的分类. 域完整性又称为列完整性,指列数据输入的有效性。. 1. 域完整性. 定义表 XS 的同时定义借书数字段的约束条件 :. USE XSBOOK CREATE TABLE XS ( 借书证号 char(8) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(12) NOT NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, /* 如下语句定义字段的同时定义约束条件* /

Download Presentation

数据完整性的分类

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据完整性的分类 域完整性又称为列完整性,指列数据输入的有效性。 1. 域完整性 定义表XS的同时定义借书数字段的约束条件: USE XSBOOK CREATE TABLE XS ( 借书证号 char(8) NOT NULL, 姓名 char(8) NOT NULL, 专业名 char(12) NOT NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, /*如下语句定义字段的同时定义约束条件*/ 借书数 tinyint CHECK (借书数 >=0 AND 借书数<=20) NULL, 照片 image NULL ) GO

  2. 数据完整性的分类 2. 实体完整性 实体完整性又称为行的完整性,要求表中有一个主键,其值不能为空且能唯一地标识对应的记录。 3. 参照完整性 参照完整性又称为引用完整性。参照完整性保证主表中的数据与从表中数据的一致性。

  3. 域完整性的实现 1. CHECK约束的定义与删除 CHECK约束实际上是字段输入内容的验证规则,表示一个字段的输入内容必须满足CHECK约束的条件,若不满足,则数据无法正常输入。 1) 通过企业管理器创建与删除CHECK约束

  4. 域完整性的实现 2) 利用SQL语句在创建表时创建CHECK约束 语法格式: CREATE TABLE table_name /*指定表名*/ ( column_name datatype NOT NULL | NULL [DEFAULT constraint_expression] /*缺省值约束表达式*/ [[check_name ] CHECK ( logical_expression )] /*CHECK约束表达式*/ [,…n] ) /* 定义列名、数据类型、标识列、是否空值及定义缺省值约束、CHECK 约束*/

  5. 域完整性的实现 3) 利用SQL语句在修改表时创建CHECK约束 语法格式: ALTER TABLE table_name ADD CONSTRAINT check_name CHECK (logical_expression) 4) 利用SQL语句删除CHECK约束 CHECK约束的删除可在企业管理器中通过界面删除,有兴趣的读者可以自己试一试,在此介绍如何利用SQL命令删除。 语法格式: ALTER TABLE table_name DROP CONSTRAINT check_name

  6. 域完整性的实现 2. 规则对象的定义、使用与删除 规则对象的使用方法与缺省值对象的使用步骤类似: (1) 定义规则对象; (2) 将规则对象绑定到列或用户自定义类型; 1) 利用企业管理器定义规则对象并绑定到自定义类型或列 对于XSBOOK数据库XS表的借书证号字段,如果规定前2位代表读者类别,输入时每位只能选1-6;后3位为部门编号,输入时每位只能选1-9;最后3位为读者顺序号,输入时顺序号从1开始。

  7. 1.通过此下拉框选择表 2.选择被绑定字段 域完整性的实现 规则属性窗口 将规则绑定到字段的窗口

  8. 域完整性的实现 2) 利用SQL命令定义规则对象并绑定到自定义类型或列 (1) 规则对象的定义 语法格式: CREATE RULE rule AS condition_expression (2) 将规则对象绑定到自定义类型或列 语法格式: sp_bindrule [ @rulename = ] 'rule' , [ @objname = ] 'object_name' [ , [ @futureonly = ] 'futureonly_flag' ]

  9. 域完整性的实现 (3) 应用举例 如下程序创建一个规则,并绑定到XSBOOK数据库XS表的借书证号字段。 USE XSBOOK GO CREATE RULE num_rule AS @num like '[1-6][1-6][1-9] [1-9] [1-9] [1-9] [0-9] [0-9] [0-9]' GO EXEC sp_bindrule 'num_rule', 'XS.借书证号' GO

  10. 域完整性的实现 (4) 规则对象的删除 删除规则对象前,首先应使用系统存储过程sp_unbindrule解除被 绑定对象与规则对象之间的绑定关系。 语法格式: sp_unbindrule [@objname =] 'object_name' [, [@futureonly =] 'futureonly_flag']

  11. 2.点击主键图标 1.选中此行 实体完整性的实现 1. 利用企业管理器创建和删除PRIMARY KEY约束 1) 利用企业管理器创建PRIMARY KEY约束 如果要对XS表按借书证号字段建立PRIMARY KEY约束,按如下步骤进行: (1) 选择XS表图标,右击,出现快捷菜单,选择菜单项“设计表” 。 (2) 在表设计器界面选中“借书证号”字段对应的这一行,选择主键图标,这样在“借书证号”对应的这一行前面,将出现一主键图标。 2) 利用企业管理器删除PRIMARY KEY约束 如下步骤进行: (1) 进入XS表的表设计器界面; (2) 选中XS表设计器中主键对应的行,点击工具栏的主键图标,则取消了原来定义的主键。

  12. 实体完整性的实现 2. 利用企业管理器创建和删除UNIQUE约束 1) 利用企业管理器创建UNIQUE约束 2) 利用企业管理器删除UNIQUE约束

  13. 实体完整性的实现 3.利用SQL命令创建及删除PRIMARY KEY约束或UNIQUE约束 1) 创建表的同时创建PRIMARY KEY约束或UNIQUE约束 语法格式: CREATE TABLE table_name /*指定表名*/ ( column_name datatype /*定义字段*/ [ CONSTRAINT constraint_name ] /*约束名*/ NOT NULL PRIMARY KEY | UNIQUE /*定义约束类型*/ [CLUSTERED | NONCLUSTERED] /*定义约束的索引类型*/ [, …n]   ) /*n表示可定义多个字段*/

  14. 实体完整性的实现 2) 通过修改表创建PRIMARY KEY约束或UNIQUE约束 (1) 创建PRIMARY KEY约束 语法格式: ALTER TABLE table_name ADD[ CONSTRAINT constraint_name ]PRIMARY KEY CLUSTERED | NONCLUSTERED ( column [ ,...n ] ) (2) 创建UNIQUE约束 语法格式: ALTER TABLE table_name ADD    [ CONSTRAINT constraint_name ]   UNIQUE CLUSTERED | NONCLUSTERED ( column [ ,...n ] ) 3) 删除PRIMARY KEY约束或UNIQUE约束 语法格式: ALTER TABLE table_name DROP CONSTRAINT constraint_name [,…n]

  15. 参照完整性的实现 1. 利用企业管理器定义表间的参照关系

  16. 参照完整性的实现 关系设置界面 设置参照关系后的关系图界面

  17. 参照完整性的实现 2. 利用企业管理器删除表间的参照关系 XS表的参照关系属性界面 如果要删除前面建立的XS表与JY表之间的参照关系,可按以下步骤进行: (1) 进入主表或从表的表设计器界面,在此进入的是主表XS的表设计器,右击鼠标,出现一快捷菜单,选择菜单项“关系”. (2) 在图的属性界面的关系下拉表中选择要删除的关系,然后点击“删除”按钮,选择“关闭”按钮。

  18. 参照完整性的实现 3. 利用SQL命令定义表间的参照关系 (1) 创建表的同时定义外码约束 语法格式: CREATE TABLE table_name /*指定表名*/ (column_name datatype [FOREIGN KEY ] REFERENCES ref_table ( ref_column )    [ ON DELETE { CASCADE | NO ACTION } ]         [ ON UPDATE { CASCADE | NO ACTION } ]         [, …n]      ) /*n表示可定义多个字段*/ (2) 通过修改表定义外码约束 语法格式: ALTER TABLE table_name ADD   [ CONSTRAINT constraint_name] [FOREIGN KEY] ( column [ ,...n ] ) REFERENCES ref_table ( ref_column [ ,...n ] )    [ ON DELETE { CASCADE | NO ACTION } ]    [ ON UPDATE { CASCADE | NO ACTION } ]   

  19. 6.4 综合应用训练 • 训练要求 (1) 对于historytable按索引号+借书证号+借书时间创建主键约束; (2) 创建historytable与XS表之间的参照关系; (3) 统计2003年每位读者的读书量,并按降序排列; • 思考:先自己想,再往下看。 • 实现上述功能的程序代码如下: (1) 创建historytable的主键约束 • USE XSBOOK • ALTER TABLE historytable • ADD CONSTRAINT HT_PK • PRIMARY KEY CLUSTERED (索书号,借书证号,借书时间) • GO

  20. 6.4 综合应用训练 (2) 创建historytable与XS表之间的参照关系: USE XSBOOK IF EXISTS (SELECT name FROM sysobjects WHERE name = 'HT_foreign' AND type = 'F') ALTER TABLE historytable DROP CONSTRAINT HT_foreign GO ALTER TABLE historytable ADD CONSTRAINT HT_foreign FOREIGN KEY (借书证号) REFERENCES XS(借书证号) ON DELETE CASCADE ON UPDATE CASCADE GO

More Related