首页 > 数据库

通过问题长知识----数据完整性

时间:2009-05-06 17:04:08  作者:fbysss  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
作者:fbysssmsn:jameslastchina@hotmail.comblog:blog.csdn.net/fbysss声明:本文由fbysss原创,转载请注明出处关键字:数据完整性问题描述:Hibernate查询出现异常......

作者:fbysss
msn:jameslastchina@hotmail.com
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:数据完整性

问题描述:Hibernate查询出现异常ObjectNotFoundException: No row with the given identifier exists
分析原因:数据完整性被破坏。
举例:A,B与中间表M,A表被清空了,但是M的数据还在,这样,M.B_ID字段对应的数据已经没有了,故报错。
解决办法:在表M上建立外键约束,A_ID,B_ID分别与A.ID和B.ID进行约束。这样,A,B表在删除数据的时候,如果没有设置级联删除(CASCADE DELETE),数据库系统会提示错误,要求先删除子表中的数据。
==========================================================
数据完整性相关知识:
==========================================================
数据完整性,是指存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。
  数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类:实体完整性(Entity Integrity)、
域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户定义的完整性(User-definedIntegrity)。
  数据库采用多种方法来保证数据完整性,包括外键、束约、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,互补缺点。
(1)实体完整性:指表中行的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。主关键字是否可以修改,或整个列是否可以被删除,取决于主关键字与其他表之间要求的完整性。
  实体完整性规则规定基本关系的所有主关键字对应的主属性都不能取空值,例如,学生选课的关系选课(学号,课程号,成绩)中,学号和课程号共同组成为主关键字,则学号和课程号两个属性都不能为空。因为没有学号的成绩或没有课程号的成绩都是不存在的。
  对于实体完整性,有如下规则:

如果您需转载 通过问题长知识----数据完整性,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门