论坛首页 Java企业应用论坛

要不要在数据库中建立主外键约束

浏览 7846 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-05-04  
    今天发现一个问题。一个遗留的系统上,每个表都是独立的,没有主外键约束。问系统以前的开发人员。他们说,系统的主外键都是直接由hibernate控制的。
    很是不解。细问之。答曰:效率问题。
    问大家,到底需不需要建立呢?
    我先说说我的想法:
       其实,以前我的所有系统都是建立的。不过听了他的回答,感觉也有些道理。但是,如果上面没有控制得好,就会出现错误的数据。
       所以,我觉得如果系统小,就那么几十张表,业务不复杂就不需要了。系统大,表多,业务复杂那还是建立的好。
    说完我的想法,自己都感觉这个东西都没有必要发帖了。
    不过,仁者见仁,智者见智,还是想听听大家的看法。说说,大家平时怎么做的?以及为什么这么做?
   发表时间:2008-05-04  
不建任何外键和存储过程与触发器之类的非通用约束
0 请登录后投票
   发表时间:2008-05-04  
主外键我认为还是要建的,毕竟数据完备性的控制不能全部甩给开发人员,不然一个不小心就把数据完备性破坏了,到时候再想恢复,那可又是一场硬仗啊。
0 请登录后投票
   发表时间:2008-05-04  
没有主外键,
1.执行计划得不到最优的
2.数据完备难以保证, 不可保证这个数据就你一个系统用
0 请登录后投票
   发表时间:2008-05-08  
之前做 数据分析性的系统 是没有建外键 所以使用sql查询的时候 很多时候都是外关联

后来做些小系统使用 外键

0 请登录后投票
   发表时间:2008-05-08  
"非索引的外码是导致死锁的最主要原因"
----《Expert one-on-one Oracle》中文版p272
0 请登录后投票
   发表时间:2008-05-08  
armorking 写道
"非索引的外码是导致死锁的最主要原因"
----《Expert one-on-one Oracle》中文版p272


不知道能否解释一下这句话。谢谢!!
0 请登录后投票
   发表时间:2008-05-09  
外键约束应该由应用程序来保证,有些数据库就是不支持外键的
外键不加索引的情况如果有关联查询的话会造成全表扫描啊,如果同时有批量更新操作,容易造成资源互锁。
0 请登录后投票
   发表时间:2008-05-11  
外键未加索引是导致死锁的主要原因,这是因为,无论是更新父表住键,或者删除一个父记录,都会在子表上加一个表锁,这就会不必要的锁定更多的行。
0 请登录后投票
   发表时间:2008-12-29  
mysql有外键吗?我所接触的系统基本是不建外键的,但在关联字段加索引。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics