(一)数据完整性组成
数据完整性分为4类:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)和用户定义的完整性(User-defined Integrity)。
1.实体完整性
实体完整性规定表的每一行在表中是唯一的实体,不能出现重复的行。表中定义的UNIQUEPRIMARYKEY和IDENTITY约束就是实体完整性的体现。
2.域完整性
域完整性是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGNKEY约束和DEFAULT、NOTNULL定义都属于域完整性的范畴。
3.参照完整性
参照完整性是指两个表的主关键字和外关键字的数据应对应一致。它确保了有主关键字的表中的对应其他表的外关键字的行存在,既保证了表之间的数据的一致性,又防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外关键字和主关键字之间或外关键字和唯一性关键字之间的关系上的。
4.用户定义完整性
不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
(二)数据完整性的影响因素
数据完整性的目的就是保证计算机系统,或网络系统上的信息处于一种完整和未受损坏的状态。这意味着数据不会由于有意或无意的事件而被改变或丢失。数据完整性的丧失意味着发生了导致数据被丢失或被改变的事情。为此,首先应该检查导致数据完整性被破坏的常见的原因,以便采用适当的方法予以解决,从而提高数据完整性的程度。
一般来说,影响数据完整性的因素主要有5种:硬件故障、网络故障、逻辑问题、意外的灾难性事件和人为的因素。
1.硬件故障
任何一种高性能的机器都可能发生故障,这也包括了计算机。常见的影响数据完整性的硬件故障有以下几种。
(1)磁盘故障。
(2)I/O控制器故障。
(3)电源故障。
(4)存储器故障。
(5)介质、设备和其他备份的故障。
2.网络故障
网络上的故障通常由以下问题引起。
(1)网络接口卡和驱动程序的问题。
(2)网络连接上的问题。
(3)辐射问题。
一般情况下,网络接口卡和驱动程序的故障对数据没有损坏,而仅仅是无法对数据进行访问。但是,当网络服务器上的网络接口卡发生故障时,服务器一般会停止运行,这就很难保证被打开的那些文件是否被损坏。
网络中传输的数据可以对网络造成很大的压力。对网络设备来说,例如,路由器和网桥中的缓冲区空间不够大就会出现操作阻塞的现象,从而导致数据包的丢失。相反,如果路由器和网桥的缓冲容量太大,由于调度如此大量的信息流所造成的延时极有可能导致会话超时。此外,网络布线上的不正确也可能影响到数据的完整性。
传输过程中的辐射可能给数据造成一定的损坏。控制辐射的办法是,采用屏蔽双绞线或光纤系统进行网络的布线。(www.xing528.com)
3.逻辑问题
软件也是威胁数据完整性的一个重要因素,由于软件问题而影响数据完整性有下列几种途径。
(1)软件错误。
(2)文件损坏。
(3)数据交换错误。
(4)容量错误。
(5)不恰当的需求。
(6)操作系统错误。
在这里,软件错误包括形式多样的缺陷,通常与应用程序的逻辑有关。
文件损坏是由于一些物理的或网络的问题导致文件被破坏。文件也可能由于系统控制或应用逻辑中一些缺陷而造成损坏。如果被损坏的文件又被其他的过程调用将会生成新的数据。
在文件转换过程中,如果生成的新的文件不具有正确的格式,也会产生数据交换错误。在软件运行过程中,系统容量如内存不够也是导致出错的原因。
任何操作系统都不是完美的,都有自己的缺点。另外,系统的应用程序接口(API)被第三方用来为用户提供服务,第三方根据公开发布的API功能来编写其软件产品,如果这些API工作不正常就会产生破坏数据的情况。
在软件开发过程中,需求分析、需求报告没有正确地反映用户要求做的工作,系统可能生成一些无用的数据。如果出错检查程序未能发现这一情况,程序就会产生错误的数据。
4.灾难性事件
常见的灾难性事件有以下几种。
(1)火灾。
(2)水灾。
(4)工业事故。
(5)蓄意破坏/恐怖活动。
5.人为因素
由于人类的活动对数据完整性所造成的影响是多方面的,它给数据完整性带来的常见的威胁包括以下几种。
(1)意外事故。
(2)缺乏经验。
(3)压力,恐慌。
(4)通信不畅。
(5)蓄意的报复破坏和窃取。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。