不设外键顶多垃圾数据多,几个sql语句就能清了无所谓,
你要是设了外间,一堆sql exception,
珍惜生命,远离外键、快照(跨dblink)、触发器

解决方案 »

  1.   

    设外键的麻烦之处在于,如果系统很大,得花一部分精力进行性能测试,在大数据量的时候,相信外键对于数据库还是有一定的压力的我不知道其它的系统,但是对于oracle ERP的标准开发而言,是很少设外键的,今天正好讨论是这个问事,结果是可能早期数据库没有外键,一直沿用下来也就这样了....当然不设外键,对于单元测试还是比较方便的.如果说在前端能够严格控制数据的完整性,那么我觉得,没有外键也是可以的,当然是指特定的开发设计模式下.只要业务方法的事务性受到严格控制,那么也是可以的吧但在特定的设计模式下,比如hibernate,在借助工具产生的pojo时,有没有外键又不一样了,这个时候怎么处理?其它人的意见?
      

  2.   

    Eric_1999(╙@^@╜) ( ) 信誉:100    Blog  2006-12-29 08:15:17  得分: 0  
     
     
       如果数据庞大的话,有外键会使得查询很慢,数据库压力极大,“如果说在前端能够严格控制数据的完整性,那么我觉得,没有外键也是可以的”。
      
     
    =============
    外键导致查询慢???这个可是今天第一次听说了
      

  3.   

    我现在使用的一个ERP就完全没有用到外键关联来控制,类似的要求都是在程序中自定义例外来实现的
      

  4.   

    baojianjun(包子) ( ) 信誉:123    Blog  2006-12-29 10:19:54  得分: 0  
     
     
       我现在使用的一个ERP就完全没有用到外键关联来控制,类似的要求都是在程序中自定义例外来实现的
      
     
    --
    不太明白
    多说一点
      

  5.   

    “设立了外健,插入\修改等操作速度性能严重降低”,这是很可能是你未建立适当的索引。
    “更容易出现问题”不知道你指的是什么问题?
    “如果出现了垃圾数据,只能证明你是菜鸟了”?有BUG就可能有垃圾数据,你能保证你的程序中一个BUG都没有?
      

  6.   

    “如果出现了垃圾数据,只能证明你是菜鸟了”?有BUG就可能有垃圾数据,你能保证你的程序中一个BUG都没有?--
    即使前台程序控制的很好
    如果不用程序直接操作后台
    也是很容易产生垃圾数据的
      

  7.   

    外健我认为还是要的 主要从设计角度来看的 数据完整性而言。
    很显然有外健对开发,测试比较麻烦!最近做的一个项目进入测试,两个以致多表之间逻辑不一致的垃圾数据越来越多,很多bug就源于这样的问题,有后来人说这个是开始未设置外键导致的先天不足,可是这个系统的设计者是一个大家都公认的牛人,我觉得一开始未设外键,肯定也是有原因吧,但自己是菜鸟,所以请教大家!牛人也许是开发牛人吧! 你看这个牛人是不是离开了公司数据库要运行久了才爆发出设计和开发的问题!
      

  8.   

    没有外健的数据库怎么行呢?如果没有外健如何表达表之间的关系呢?
    ER图 三范式比如说班级表  学生表
    班级ID,班级名称
    学生ID,班级ID 学生姓名
      

  9.   

    会造成锁是真的.但是这个您需要为外键创建索引后就不会出现enqueue等待.但这也是有些情况下.而且8i 9i又是有点区别的.