- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.2 定义约束
* 重点: FOREIGN KEY 约束约束了单列或多列的引用完整性; 和 PRIMARY KEY 约束不同,FOREIGN KEY 约束并不自动创建索引; 修改数据时的权限要求。 课堂演示: Northwind库: orders表和customers表, employees表是引用自己 * 重点: 定义 FOREIGN KEY 约束的示例。 * 重点: 级联引用完整性的概念、作用; 定义级联引用完整性的语法; NO ACTION 与 CASCADE 选项的区别; 注意: 级联是一种非常危险的做法,尤其在删除的时候,很容易破坏数据库的完整性。 ?为了删除数据而冒着破坏数据完整性的做法是不值得的。事实上数据量的大小往往并不是影响查询速度的主要原因,主要原因是查询的算法,有经验的数据库设计者很少删除数据,而是给要删除的数据做一个标记,真正要物理删除也不可能交给级联去处理。 演示: 用级联引用完整性传播更新以及删除操作。 建2张表: create table student (userid int not null primary key, username varchar(20) not null ) create table score (userid int not null, courseid int not null, score decimal(5,2) constraint pk_score primary key nonclustered(userid, courseid) ) alter table score add constraint fk_student_score foreign key(userid) references student(userid) on update cascade on delete cascade 在student表中修改userid,看score表中有没有关联改变 * * 重点: 在现有数据上以及装入新数据时禁用约束检查的语法和注意事项。 * 重点: 当在已有数据的表上定义约束的时候,SQL Server 自动检查已有数据以确保它们符合约束要求。我们也可以禁用约束检查; 禁用约束检查的语法。 * 重点: 禁用现有数据上的约束检查的注意事项。 * 重点: 装入新数据时禁用约束检查的语法以及再次启用约束的语法; 查看约束是否启用的状态的方法。 * 注意: 加下划线为即将学到的内容。 * 重点: 规则的作用,以及创建、删除、绑定、解除绑定规则的语法; 使用规则的注意事项; 课堂提问: 既然默认和规则不是 ANSI 兼容的,有什么方法可以代替它们的作用并且符合 ANSI 规范么? DEFAULT 约束和 CHECK 约束。 * * * 重点: 使用约束,因为它们是 ANSI 兼容的; 规则是为了保持和旧版本的兼容性而保留的,并不符合 ANSI 标准,不推荐使用。推荐使用约束,因为约束符合 ANSI 标准,可被第三方开发工具支持; 使用级联引用完整性代替触发器; 触发器比较复杂,且更耗费系统资源。所以对于级联引用完整性约束能解决的问题,推荐使用级联引用完整性,只有对于复杂的逻辑实现才使用触发器。 为什么说约束是强制数据完整性的首选方法? 因为它符合 ANSI 标准,可以获得最大的兼容性,而且在一般情况下功能足够了。 全称是:American National Standard Institute 中文译名: 美国国家标准协会 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。 由于美国在计算机早起发展中一直处于领先地位,因此ANSI的很多标准已经成为事实上的国际标准。其中常见的ANSI ASCII字符编码几乎为所有的编码方式所兼容。 * 重点: 各种数据完整性强制方法的作用、语法、区别; 禁用和启用数据完整性检查的方法。 使用规则 规则也是实现数据完整性的方法之一。规则是独立于表的数据库对象,定义后需绑定到列或用户定义的数据类型。它类似于CHECK约束,但规则不能进行同表不同列之间的比较。它只能用于检查单列。 规则的优点是同一个规则对象可以供不同数据表的不同字段使用,但每个字段最多只能和一个规则对象结合。在一个数据表中可以同时使用CHECK约束和规则对象,但微软建议尽量使用CHECK来做检查,这
文档评论(0)