ITPub博客

首页 > 数据库 > 数据库开发技术 > 9iR2数据库概念第21章 读书笔记

9iR2数据库概念第21章 读书笔记

原创 数据库开发技术 作者:zsj3874 时间:2007-08-31 10:46:10 0 删除 编辑
其实也无所谓笔记了,只是摘抄了些自己以前不是太清楚的概念而已[@more@]

其实也无所谓笔记了,只是摘抄了些自己以前不是太清楚的概念而已,不想再往笔记本上抄写了,所以写在这里,当作笔记吧!哈哈!

第21章:数据完整性

not null是针对单列的
unique,primary key是针对列的集合的

unique时null与null被认为是不同的,是被允许的,但在部分为null的复合唯一完整性约束时,考虑是否唯一时是不考虑都为null值的列的,也就是说
假如unique(a,b)
a b
null 1
null 1
就被认为是违反唯一完整性约束的,而不是说a的两行null和null是不相同的,所以(null,1)和(null,1)也就不相同,所以不违反唯一约束了,不是这样的!(21-11)

唯一完整性约束会自动的通过唯一索引来实现

21-11:主键约束不仅是unique的,而且要求所有列都是not null的
oracle通过unique index和not null约束来加强主键约束

21-13:外键引用的是主键/唯一键,也可以是部分或者全部null,要求数量和数据类型完全相同

21-15:如果复合外键的任何一列是null的话,那么这个复合外键的其它非null部分可以不匹配父键的任何相应部分

21-17:有关外键索引的并发控制
如果外键上没有索引,
那么在8I中,当对父表的主键执行update/delete时,子表是TM-4,子表指定on delete cascade时,子表是TM-5,直到对父表的事务提交时为止;对父表insert时,子表上不加任何的表级锁
在9I中,是同上的,但是语句执行前获得,语句执行完成后,立即释放,而不是持续为整个事务期间


如果外键上有索引,对父表的任何操作都不会对子表加任何的TM锁

21-21:check约束要求检查条件是true/unknown的,不能是false的

21-22:完整性约束的检查时机是语句执行完成之后,如果违反,语句被回滚(这是默认情况,立即,不推迟)
推迟的完整性约束检查,是在事务提交时,如果违反,事务被回滚.
如果约束导致一动作(比如说级联删除),那么这个动作始终是作为语句的一部分执行的,而不管约束的检查时机.


21-26:
enable:对新插入/更新的数据进行完整性检查
disable:对新插入/更新的数据不进行完整性检查
validate:确保存在的数据符合完整性约束
novalidate:存在的数据可以有些不符合完整性约束

它们的组合状态可以有一些

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10597822/viewspace-967212/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    16
  • 访问量
    43870