赛迪网 > IT技术 数据库 > 精彩更新
  IT资讯搜索
 
IT产品搜索

Oracle中用表外键来保证系统参照完整性 (1)

发布时间:2007.03.02 04:42     来源:赛迪网技术社区    作者:shenyang

Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系。外键涉及到两个表,其中一个称之为父项表,另一个称之为子项表。

父项表( parent table )是参照约束的基础,即通过检查这张表的有效数据情况来判断约束是否成立,它是参照约束的条件,影响约束,而不受约束的任何影响。

子项表( child table )是参照约束的对象,当其发生变化,如有新数据输入时,通过比较父项表中的有效数据状况,来判断这些变化是否符合约束条件,若不符合,则拒绝要发生的变化。

在实际应用系统中,开发者为了保证系统的完整性,一般要定义大量的外键。然而,如果外键的命名不规范,如采用系统自动生成的名称,则在以后的系统运行维护中会造成很大的麻烦。如在系统运行后,加载大量数据或者进行一些数据转换操作等时,出现外键错误时,根据系统提示的外键错误,根本不可能直接定位到那两个表间的外键发生错误,需要浪费很多时间查找造成错误发生的外键的父项表和子项表,然后才能进一步确定是那条记录违反了外键约束条件。通常,我们采用这样的命名规则来命名外键 FK_Child_table name_Parent_table name 。由于外键名称的最大长度限制在 30 个字符之内,对 child_table_name 和 Parent_table name 不一定和原表一模一样,可以采取一些简写的办法,但名称一定要能反映出约束的两个表。这里的命名, Child_table name 指子项表,也就是约束表, Parent_table name 是指父项表,也就是被约束的表。

下面来详细讨论如何将应用系统中不规范的外键命名修改为规范的外键名称。在讨论之前,需要提醒读者注意的是,完成下面的操作需要花费较长的时间,所以一定要规划在系统空闲时来完成。同时这里的外键更名,采用的方法是首先删除然后重建,涉及到删除应用系统对象的操作,所以在操作之前,为安全起见,应该备份应用系统。

一、生成系统目前的外键报告单

首先生成系统目前模式下的所有外键情况报告单, SQL 脚本如下:

脚本 1 :列出当前模式下所有外键的报告表,可以将其 spool 到某个文件中

SELECT RPAD(child.TABLE_NAME,25,' ') Child_Tablename, 

RPAD(cp.COLUMN_NAME,17,' ') Referring_Column, 

RPAD(parent.TABLE_NAME,25,' ') Parent_Tablename, 

RPAD(pc.COLUMN_NAME,15,' ') Referred_Column, 

RPAD(child.CONSTRAINT_NAME,25,' ') Constraint_Name 

FROM USER_CONSTRAINTS child, 

USER_CONSTRAINTS parent, 

USER_CONS_COLUMNS cp, 

USER_CONS_COLUMNS pc 

WHERE child.CONSTRAINT_TYPE = 'R' AND 

child.R_CONSTRAINT_NAME = PARENT.CONSTRAINT_NAME AND 

child.CONSTRAINT_NAME = cp.CONSTRAINT_NAME AND 

parent.CONSTRAINT_NAME = pc.CONSTRAINT_NAME AND 

cp.POSITION = pc.POSITION 

ORDER BY child.OWNER, 

child.TABLE_NAME, 

child.CONSTRAINT_NAME, 

cp.POSITION;

1 2 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 怎样将Oracle中大量数据快速转移数据 (03-01) · 教你用Oracle解析函数快速检查序列间隙 (03-01)
· Oracle中资源的共享与竞争及问题定位 (03-01) · Oracle中构建基于VPD特性的安全数据库 (03-01)
· 关于Oracle数据库中密码安全管理总结 (02-28) · Oracle中通过触发器来追踪用户的活动 (02-28)
· 针对Oracle远程复制和容灾的解决方案 (02-28) · Oracle中共享连接和专用连接对比分析 (02-27)
· 自动完成Oracle客户端的安装及其配置 (02-27) · Oracle 9i并行处理的体系结构及其优点 (02-27)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管