第4章新数据库完整性技术方案.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 数据库完整性 4.1 数据完整性概念 4.1.1 什么是数据完整性? 数据完整性是指存储在数据库中的所有数据值都正确的状态。如果数据库中存储了不正确的数据值,则称该数据库已丢失数据完整性。 4.1.2 什么样的数据具有数据完整性? 满足完整性要求的数据具有以下三个特点: 数据的值正确无误 数据的存在必须确保同一表格数据之间不存在完全相同的两条或多条数据 数据的存在必须能维护不同表格数据之间的关联情况 4.1.3 数据库完整性分类 实体完整性、域完整性、引用完整性、用户自定义完整性。前面讲过 4.1.4 实施完整性的途径 表-实施完整性的途径 数据完整性类型 实施途径 实体完整性 Primary Key(主键)约束 Unique Key(唯一)约束 Unique Index(唯一索引) Identity Column(标识列) 域完整性 Default(默认值) Check(检查)约束 Foreign Key(外键)约束 Data type(数据类型) Rule (规则) 引用完整性 Foreign Key(外键)约束 Check (检查)约束 Trigger (触发器) Stored procedure(存储过程) 用户自定义完整性 Rule (规则) Trigger (触发器) Stored procedure(存储过程) 下面我们来了解什么是约束、断言、规则。它们都是保证数据完整性的方法。触发器、存储过程以后讲。 4.2 约束 4.2.1 什么是约束? 约束是通过限制列、行中的数据和表之间的数据来保证数据完整性的方法。约束可以确保把有效的数据输入到列中和维护表和表之间的特定关系。 4.2.2 约束分类 SQL中约束分3种类型: 与表相关的约束:表定义中的一种约束。最常用的约束,又分为字段级约束、表级约束。字段级约束就是为某一个字段值设置约束。表约束是将包含多个字段的字段组合设置为约束。如,Student表中,主键约束是字段级约束,主键是SID。SC表中主键约束是表约束,主键是(SID,CID)。 断言:在断言定义中的一种约束。不讲 域约束:在域定义中的一种约束。不讲 图 SQL完整性约束类型 从上图可以看出:Microsoft SQL Server 2005系统提供了5种约束类型,即PRIMARY KEY(主键)、FOREIGN KEY(外键)、UNIQUE、CHECK、NOT NULL约束 4.2.3 SQL Server 2005的5种约束类型 1 NOT NULL约束 概念:NULL表示未定义或未知的值;NOT NULL约束只能作为列约束。 设置:在用SQL语句创建列定义时,设置该列具有NOT NULL属性;或者在SQL Sever Management Studio图形界面建表时,禁用”允许空”选项即可。 例如:图形界面建表时, T-SQL创建表时设置: CREATE TABLE 职工基本信息表( 编号 int NOT NULL, 姓名 nvarchar(10) NOT NULL, 电话 nvarchar(20) NULL) 2 UNIQUE约束 概念:UNIQUE约束的作用是保证在非主键指定的唯一性的列上不会出现重复的数据。 和PRIMARY KEY区别:UNIQUE和PRIMARY KEY约束都能保证数据的唯一性,它们之间的不同是: 一个表上只能定义一个主键约束,但可以定义多个唯一性约束。 定义了唯一性约束的列上的数据可以是空值,定义了主键约束的列上数据不能是空值。 唯一性约束的操作方式: 在创建表格时,定义UNIQUE约束 语法:[CONTRAINT 约束名] UNIQUE [CLUSTERED|NONCLUSTERED][(字段名[,…n])] 说明:CLUSTERED 表示在该列上建立聚集索引。 NONCLUSTERED 表示在该列上建立非聚集索引。 聚集索引确定表中数据的物理存储顺序。因此一个表只包含一个聚集索引。 例如:CREATE TABLE 员工信息( 编号int NOT NULL, 姓名nvarchar(10) NOT NULL, 联系电话nvarchar(10) NOT NULL, CONSTRAINT UNI_姓名_编号UNIQUE(姓名,编号))…n]) 例如:ALTER TABLE 员工信息 ADD CONSTRAINT UNI_电话 UNIQUE NONCLUSTERED(电话) 删除UNIQUE约束 语法:ALTER TABLE 表名 DROP {[CONSTRAINT] 约束名}[,…n] 例: ALTER TABLE 员工信息 DRO

文档评论(0)

富贵礼包 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档