我前后在两家公司干过,对于前东家A和现东家B的系统,我发现一个共同点,那就是:数据库中各表之间没有使用外键联系,即使有关系的两张表之间并没有去作这个外键连接。当然,它们都是商用软件,而且用的好好的。  
 
       我的问题是,在一个应用系统中,具体的数据库中各表并不需要什么主键关联吗?只需要建立孤立的程序能用的表就行了吗?无论是或不是,请给出你的看法或理由。

解决方案 »

  1.   

    呵呵,建议使用外键
    1)不使用外键:好处,数据管理简单(导入导出或者其他操作),在insert, update, delete 数据的时候更快;要求通过程序来控制完整性,时间一长,或者数据量比较大的时候,通过程序来控制完整性花费的代价比较高,也比较困难;在设计的时候,如果数据的冗余度比较高,那么通过程序控制的数据完整性可能不是很好,如果对系统不熟悉,容易出现漏更新或者其他操作失误;2)使用外键:数据管理上比较麻烦,在insert, update, delete 数据的时候稍慢一些;但是数据比较完整,特别是在数据库服务器当机或者出现其他问题的时候,能够最大限度的保证数据的一致性和正确性;方便二次开发
      

  2.   

    数据库可否设定外键检查机制的开闭?
    希望再讨论一下!
    ----------
    可以disable constraint,执行需要操作后再enable
      

  3.   

    xiaoxiao1984,我的想法是这样可以在设计阶段确保数据的完整性,因为如果此时的程序不能保证外键约束,系统是不能使用的.当系统能够使用了,就表明应用程序能够确保数据的完整性,这时再取消外键约束以提高效率.