如何实现数据库完整性

如何实现数据库完整性

ID:34757185

大小:51.64 KB

页数:4页

时间:2019-03-10

如何实现数据库完整性_第1页
如何实现数据库完整性_第2页
如何实现数据库完整性_第3页
如何实现数据库完整性_第4页
资源描述:

《如何实现数据库完整性》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何实现数据库完整性SQL中的完整性约束SQL把各种完整性约束作为数据库模式定义的一部分。既有效防止了对数据库的意外破坏,提高了完整性检测的效率,又可以减轻编程人员的负担。SQL对三种不同完整性约束的设置及检测,采取了不同的方式加以实现。下面分别介绍。1.实体完整性和主码实体完整性规定,主码的任何属性都不能为空,因为,概念模型中实体和联系都是可区分的,而且它们以码为唯一性标识。如果,主码的属性值可以为空,则意味着在概念模型中存在着不以码为唯一性标识的实体。这显然是前后矛盾的。那么怎样保证实体完整性呢?

2、SQL中实体完整性是通过主码来实现的。一旦某个属性或属性组被定义为主码,该主码的每个属性就不能为空值,并且在关系中不能出现主码值完全相同的两个元组。主码的定义是在CreateTable语句中使用PrimaryKey关键字来实现的。方法有两种:a)在属性定义后加上关键字PrimaryKey;b)在属性表定义后加上额外的定义主码的子句:PrimaryKey(<主码属性名表>)说明:²如果主码仅由一个属性组成,上述两种方法都可定义,若由两个或以上的属性组成,则只能用上述第二种方法定义了。²对于候选码的说明方

3、法,可以用Unique说明该属性的值不能重复出现。Unique的使用与PrimaryKey相似。²一个表中只能有一个主码定义,但可以有多个Unique说明。²SQL中,并没有强制为每个关系指定主码,但为每个关系指定主码通常会更好一些。(因为主码的指定可以确保关系的实体完整性)2.参照完整性约束与外部码参照完整性是对关系间引用数据的一种限制。即:若属性组A是基本关系R1的外码,它与基本关系R2的主码K相对应,则R1中每个元组在A上的值必须:要么取空值,要么等于R2中某元组的主码值。一、外部码约束的说明:

4、SQL中就是利用外部码的说明来实现参照完整性约束,限制表中某些属性的取值的。外部码的说明也有两种方法:1)、在该属性的说明后直接加上关键字”REFERENCES<表名>(<属性名>)”,其中表名称为参照关系名,属性名称为参照关系的主码。2)、在CreateTable语句的属性清单后,加上外部码说明子句,格式为:FOREIGNKEY<属性名表1>REFERENCES<表名>(<属性名表2>)上式中的属性名表1和属性名表2中属性可以多于一个,但必须前后对应。二、参照完整性约束的实现策略前面讲了,外部码的取

5、值只有两种情况:要么取空,要么取参照关系中的主码值。可是当用户操作违反了这个规则时,如何保持此约束呢?SQL提供了三种可选方案:1)、RESTRICT(限制策略):当用户对表进行违反了上述完整性约束、条件的插入、删除或修改操作时,将会被系统拒绝。2)、CASCADE(级联策略):当对参照关系进行删除和修改时,SQL所提供的一种方案。在这种策略下,当删除或修改参照关系中某元组的主码值时,被参照关系中,那些外部码具有该值的元组也将被删除或修改,以保证参照完整性。3)、SETNULL(置空策略):置空策略也

6、是针对参照关系的删除或修改操作的。在这种策略下,当删除参照关系中的某一元组或修改某一元组的主码值时,被参照关系中外码值等于该主码值的元组在该外码上的值将被置空说明:当用户不指定参照完整性的实现策略时,一般被默认为RESTRICT(限制策略)。实现策略的说明通常被加在外部码的说明后面,格式为:ONDELETESETNULLONUPDATECASCADE。3.用户自定义完整性约束对于用户自定义完整性约束,SQL提供了非空约束、对属性的CHECK约束、对元组的CHECK约束、触发器等来实现用户的各种完整性要

7、求。1)、非空约束:在CRETETABLE中的属性定义后面加上NOTNULL关键字即定义了该属性不能取空值。2)、基于属性的CHECK约束使用CHECK(检查)子句可保证属性值满足某些前提条件。其一般格式为:CHECK(<条件>)它既可跟在属性定义的后面,也可在定义语句中另增一子句加以说明。如:CHECK(age>=18ANDage<=65);CHECK(sexIN(“男”,”女”));CHECK(dnoIN(selectdnofromdepartment));从上例中可以看出,CHECK子句的条件中

8、还可以带子查询。3)、基于元组的CHECK约束基于元组的CHECK约束往往要涉及到表中的多个域。所以它是元组约束。在对整个元组完成插入或对某一元组的修改完成之后,系统将自动检查是否符合CHECK条件表达式。若不符合条件,系统将拒绝该插入或修改操作。基于元组CHECK约束的说明方法是在CREATETABLE语句中的属性表、主码、外部码的说明之后加上CHECK子句。4.约束的更新约束与数据库中的表和视图一样,可以进行增、删、改的更新操作。为了改和删约束,需要

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。