欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Sql随手笔记 » 正文

数据的完整性和一致性的区别

创建时间:2012年09月11日 14:56  阅读次数:(11985)
分享到:
本章来源于csdn上网友的讨论。

问:不使用事务如何保证数据的一致性, 也没有说是MSSQL或是MySQL, WCF什么的,向各位请教一下如何解决这种问题?

答1:
首先,要不使用是很难的,因为成熟的RDBMS都内置有这个功能。
然后,如果你可以保证逻辑一致性,那不使用事务也可以。其实外键也能保持数据额一致性。
我觉得你的面试题可能主要集中在主键、外键、还有按顺序操作(这里可以避免死锁)。
甚至还要设计数据库设计,如果不使用事务,那你的范式估计要最起码的3NF了。

==================================================================================

答2:
对于完整性和一致性,看来不少人都混为一谈了。

完整性(integrity)更多是针对实际业务来说的,比如说一个职员ID,不能在一个表里是1,另一个表里却是2;数据库引擎一般通过主外键、触发器等来维护完整性的。

一致性(consistency)是事务一个特征,要底层一点。举例来说,针对这个语句:update a set col1=1,col2=2 where id=1(更改一行数据的两列),数据库要保证在任何情况下,都绝不能出现只更改了col1,或只更改了col2的情况,这两列(col1和col2)要么一起被改,要么都没改。还包括内部的索引结构、内部数据字典等数据都要绝对保持一致。

补充一句,select,insert,update,delete 任何一个单独的t-sql语句,即便没有begin tran ,也是一个隐式的事务。

==================================================================================

答3:
事务如何保证数据的一致性?

事务主要防止事情做一半吧:
必然转账:
1、给a账号减少100元
2、给b账号增加100元
如果只完成1就崩溃了,没有事务,就出现了帐不平。

==================================================================================

答4:
数据一致性不单单实体完整性和参照完整性两个方面,更重要或者说更难实现的是业务完整性,往往需要事务来保证。
提高设计的规范化可以减少对事务的依赖,比如减少了冗余,很多事务就不必要求了。但是不能完全消除事务,而且规范程度太高会影响其它方面。
触发器实际是事务性的,这里不知道是否算一个答案。

如果不使用事务,要想保证一致性我觉得唯一的方法是业务的冗余,就是处理一件事情用其它业务去校正。

==================================================================================

答5:
数据一致性和事务不是一回事。
数据一致性主要包括两个方面:实体完整性和参照完整性。
在表中定义主键的目的就是为了使数据库满足实体完整性。
在表间定义外键的目的就是为了使数据库满足参照完整性。 

==================================================================================

答6:
主键、外键、触发器 

主外键是数据库针对完整性的,这个应不是数据库一致性的范畴,和数据一致性没什么关系
其实触发器也是事务性的,只是比较特别,隐式的而已
==================================================================================T
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论1条
  • #1楼  评论人:路人D  评论时间:2013-1-9 11:41:52
  • 答案5是错误的,误导
发表评论:
留言人:
内  容:
请输入问题 75+7=? 的结果(结果是:82)
结  果: