定义和维护约束的指导原则
2013-07-16 15:58
176 查看
随着表规模的增大,维护数据完整性所消耗的系统资源也将随之增多,这样可能会对数据库系统的效率产生严重的冲击。为了系统的效率,定义和维护约束应该遵循以下原则:
(1)利用using index子句将约束的索引放在(与表)不同的表空间中。
(2)如果经常有大规模数据的装入,使用非惟一索引。
对于自引用的外键:
(1)在初始装入数据之后再定义或开启外键
(2)延迟约束的检查。当两个表利用外键建立了联系之后,Oracle系统会自动的检查每一个对这两个表的DML和DDL操作,Oracle系统不会执行任何违反引用完整性的操作。
我们可以从中得出一些结论:
(1)在进行插入操作,只有操作是在子表或从表这一端时会产生违反引用完整性的问题。而操作是在父表或主表端时不会产生。
(2)在进行删除操作时,只有操作是在父表或主表这一端时会产生违反引用完整性的问题。而操作是在子表或从表端时不会产生。
(3)在进行修改操作时,操作无论是在父表还是在子表端都可能会产生违反引用完整性的问题。
(4)在执行DDL语句删除或截断整个表时,只有删除或截断的是父表或主表时会产生违反引用完整性的问题,而操作的是子表或从从表时不会产生。
在进行DDL或DML操作时,为了维护引用完整性,可能采取的措施:
--------------------------------------------------------------------
希望的操作 | 合适的解决方法
--------------------------------------------------------------------
删除主表 | cascade constraints
--------------------------------------------------------------------
截断主表 | 禁止或删除外键
--------------------------------------------------------------------
删除包含主键的表空间 | 使用cascade constraints子句
---------------------------------------------------------------------
在子表上执行DML语句 | 确保包含主表键值的表空间为联机
-----------------------------------------------------------------------
(1)利用using index子句将约束的索引放在(与表)不同的表空间中。
(2)如果经常有大规模数据的装入,使用非惟一索引。
对于自引用的外键:
(1)在初始装入数据之后再定义或开启外键
(2)延迟约束的检查。当两个表利用外键建立了联系之后,Oracle系统会自动的检查每一个对这两个表的DML和DDL操作,Oracle系统不会执行任何违反引用完整性的操作。
我们可以从中得出一些结论:
(1)在进行插入操作,只有操作是在子表或从表这一端时会产生违反引用完整性的问题。而操作是在父表或主表端时不会产生。
(2)在进行删除操作时,只有操作是在父表或主表这一端时会产生违反引用完整性的问题。而操作是在子表或从表端时不会产生。
(3)在进行修改操作时,操作无论是在父表还是在子表端都可能会产生违反引用完整性的问题。
(4)在执行DDL语句删除或截断整个表时,只有删除或截断的是父表或主表时会产生违反引用完整性的问题,而操作的是子表或从从表时不会产生。
在进行DDL或DML操作时,为了维护引用完整性,可能采取的措施:
--------------------------------------------------------------------
希望的操作 | 合适的解决方法
--------------------------------------------------------------------
删除主表 | cascade constraints
--------------------------------------------------------------------
截断主表 | 禁止或删除外键
--------------------------------------------------------------------
删除包含主键的表空间 | 使用cascade constraints子句
---------------------------------------------------------------------
在子表上执行DML语句 | 确保包含主表键值的表空间为联机
-----------------------------------------------------------------------
相关文章推荐
- 方法的参数和返回类型的指导原则
- 代码重构方向原则指导
- 维护数据的完整性—约束
- 极限编程指导原则(XP)
- 好记住的主健、约束定义方法
- 人生指导原则
- 问题:多个列定义 FOREIGN KEY 约束?
- 完整性约束的SQL定义
- 快速应用工程指导原则(Guidelines for Rapid APPLication Engineering)
- 定义表的约束
- 微服务-定义、原则和优点
- C++ 何时使用引用参数(一些指导原则)
- 代码重构方向原则指导
- Hibernate与Spring集成时配制SessionFactory的指导原则
- 浅谈C#泛型的定义、继承、方法和约束
- C#泛型编程指导原则(六、七)
- 一、数据库概念与SQL语言基础——定义表、添加、修改约束
- 漫步IOS--二维数组定义原则、strlen()初探、
- 代码重构方向原则指导
- 定义客户需求的原则和方法