
【SQL,Server,数据库数据完整性的研究与分析】 数据库的完整性是指数据的.docx
6页本文格式为Word版,下载可任意编辑,页眉双击删除即可SQL,Server,数据库数据完整性的研究与分析】 数据库的完整性是指数据的完好性 数据库 分析 数据 【 摘 要 】 目前已经进入了信息化的时代,数据的种类和数量急剧增加,数据库的使用已经不行缺少但是数据库中存储的数据,由于人为的输入等因素,数据存储的正确性和相容性无法保证,常常实现不符合语义规定的数据和错误信息的输入数据库完好性就是为了保证数据库中数据的正确性和相容性文章重点介绍SQL Server数据库的数据完好性 【 关键词 】 SQL Server;数据库;完好性 Data Integrity"s Research And Analysis Based On The SQL Server Database Chen Zeng-xiang (Suzhou Polytechnic Institute of Agriculture JiangsuSuzhou 215008) 【 Abstract 】 The current has entered the era of information technology, and data type and quantity increase sharply. Various types of databases have been indispensable. Due to human factors and other factors, it is a very difficult thing to ensure that the data is correct and compatibility. Inappropriate data and error information input are often appeared. Database integrity is to ensure that the data in the database is correct and compatibility. We focus on the introduction of SQL Server database data integrity. 【 Keywords 】 SQL Server; database; integrity 0 引言 数据完好性Data Integrity,它的提出是为了解决数据库中存在不符合语义规定的数据或者因错误信息的输入、导入造成对数据的无效操作或错误信息。
它需要做到两点:一是保证数据库中数据的正确性Accuracy;二是保证其可靠性Reliability 数据库完好性是由各种完好性约束来保证数据库完好性设计就是对约束的设计文章具体介绍何为数据库完好性,数据库完好性具体如何保证及其数据库完好性的具体分类重点介绍SQL Server数据库的数据完好性 1 简介 数据完好性高低,标志着数据库中数据质量好坏,它可以衡量一个数据库中数据的质量它可以条理化杂乱无章的数据,不仅仅确保数据的正确性,而且确保这些数据可以被存放到最正确的位置上它是管理数据库中一种有效的手段,是确保数据库中数据精确一致及符合业务规则的一种思想 数据库中的数据的来源都是外界的输入,因此数据库中的数据来源具有不行确定性和难操纵性数据在输入时会因为人为马虎等等各种不确定的缘由导致数据的不正确为了能够有效地利用数据库去管理数据,确保输入数据符合业务规定,关系型数据库系统尤其是多用户的关系型数据库系统就必需依靠数据完好性来保证数据完好性与应用程序的数据结构中存储和使用的实际值有关应用程序必需对使用您的数据的每个进程进行有意操纵,以确保信息持续精确 2 数据库完好性的特点 为了满足数据完好性要求的数据必需要具有以下三个特点: 〔1〕数据的具体值正确无误。
首先我们需要保证数据库输入数据的正确性,可以通过对数据进行标准化,输入检查,定义业务规则等方式 〔2〕必需保证同一个表内数据间的和谐关系比方学员学号必需唯一等限制,确保同一表中的数据之间没有冲突 〔3〕必需保证不同个表间的和谐关系比方学员学号和姓名的对应,在其他表中的相关字段要进行统一,可用引用完好性,设置外键等方式确保其和谐关系 3 数据库完好性的分类和SQL Server中的应用 数据完好性,我们可以将其大体分为四类:实体完好性、参照完好性、域完好性和用户自定义的完好性 3.1 实体完好性 Entity Integrity 实体完好性有一个特定的固定,它要求表的每一行有唯一性,即在表中每行都作为惟一的实体而存在实体完好性可以保证关系中的每个元组都是可识别和唯一的对表定义IDENTITYY约束和UNIQUE PRIMARY- KEY约束,就是实体完好性的最好表达例如,若属性A是关系R的主属性,则属性A不行以为空值 主关键字中的属性、即主属性不能取空值假如主属性取空值,则意味着关系中的某个元组是不行标识的,即存在不行区分的实体,这与实体的定义也是矛盾的 如下面的代码就表现了数据库完好性中的实体完好性: CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, Sname CHAR(20)); 关系数据库管理系统可以用主关键字实现实体完好性,这是由关系系统自动支持的。
SQL Server属于关系型数据库,也满足此约束 3.2 参照完好性Referential Integrity 在现实世界中,各个实体之间存在着各种各样的关系仿照现实世界,关系模型里的实体之间也是用关系建立联系的,而各关系间也是用关系描述的,这样就自然而然的会存在关系及其关系间的互相参照或互相引用参照完好性也是关系模型必需满足的完好性约束条件 所谓参照完好性,是指表中的主关键字和外关键字的数据要相统一对应它规定有主关键字的表中所对应的外关键字的行存在这样就确保了表与表间的数据的一致统一性,防止了表中存在正确数据丢失或者不符合的数据存储在数据库中参照完好性一般建立在两种关系之上,一是主关键字和外关键字间,二是唯一性关键字和外关键字间 参照关系和被参照关系的定义: 设属性关系R1里有一个属性C或属性组C,但C不是关系R1的关键字,关系R2的主关键字为A假如关系R1的属性或属性组C与关系R2的主关键字A相和谐或者相对应,则我们说关系R1的外部关键字为C,关系R1是参照关系,而R2是被参照关系〔或者叫目标关系〕关系R1和关系R2可为同一个关系也可为不同关系 对于关系R1中每个元组在属性〔或属性组〕C上的值有两种可能:为空值〔属性或属性组C的每个属性均为空值〕;或者等于R2中某元组的主关键字的值。
参照完好性有一些约束:禁止向表中插入某种数据行,这个数据行满足主表中所不存在的关键字;禁止删除主表记录,该记录满足从表中存在此对应记录;禁止会导致从表中的相应值孤立的主表中的外关键字值转变 ---新建外键约束 ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main; ---删除外键 ALTER TABLE test_sub drop CONSTRAINT main_id_cons --创建级联删除外键 ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main on delete cascade --创建级联更新外键 ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main on update cascade --创建删除被参照主键是 键参照关系的外键设置为null ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main on update set null 3.3 域完好性Domain Integrity 域完好性所针对的是数据库表中的列,它规定数据库中的列必需属于某种特定的数据类型或者必需满足特定的约束。
在数据库中,域完好性的表现有:表中的外键约束和CHECK约束,还有关键字DEFAULT和非空NOT NULL定义等 如下面的代码所示就表现了数据库完好性中的域的完好性: --比方,要求年龄只在15~40岁之间而大于或小于的不能插入表中 ALTER TABLE 表名 ADD CONSTRAINT CK_STUAGE CHECK(列名 BETWEEN 15 AND 10) --表�束,对于ID的限制 alter table t add constraint con_T_ID check(ID not like "%""%") 3.4 用户定义的完好性 User-defined Integrity 在数据库中,除了以上规定的约束条件之外,还有很多可自定义的约束具体问题可以具体分析,不同的特定业务需求,有时可能需要特定的约束条件来操纵数据库中的数据所谓用户自定义的完好性,它针对于某个特定的关系型数据库所指定的特定的约束条件,它能满足某一个特定的具体业务应用中的数据,所必需要满足的某些约束 一种与应用紧密相关的数据完好性约束,如某个属性的值必需唯一 ;某个属性的取值必需在某个范围内 ;某些属性值之间应当满足肯定的函数关系等。
类似以上的约束不是关系数据模型本身所要求的,而是为了满足应用方面的语义要求而提出的在用户定义完好性中最常见的是限定属性的取值范围,即对值域的约束,所以在用户定义完好性中最常见的是域完好性约束 在SQL Server中,也提供了定义和检验用户自定义完好性的一套机制SQL Server还提供了一些工具来帮助用户去实现某些特定约束的数据完好性,其中有缺省值Default、规则Rule、约束Constraint ,还有触发器Trigger等 如下面的代码就表现了数据库完好性中的用户定义完好性: --创建一个规则SEX值是男或女 create rule [Sex] as @ in ("男","女") --定义一个员工信息表,其中员工的身份证号具有惟一性,用约束Constraint create table employees ( emp_id char(8), emp_name char(10) , emp_cardid char(18), constraint pk_emp_id primary key (emp_id), constraint uk_emp_cardid unique (emp_cardid) ) on [primary] --无论何时删除一个产品类别〔即从Categories表中删除一条记录〕,该触发器都会更新Products表中的Discontinued列。
USE Northwind CREATE TRIGGER Category_Delete ON Categories FOR DELETE AS UPDAT。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






