一、外建表达的是参照完整性:这是数据固有的,与程序无关。所以,应该交给DBMS来作。
二、使用外建,简单直观,能够直接在数据模型中体现,不管是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时很是明显的--前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感受很明显。固然,文档里可能有,可是也可能不全,可是外键就很是明显和直观。
三、既然咱们能够用触发器或程序完成的这个工做(指参照完整性约束),DBMS已经提供了手段,为何咱们要本身去作?并且咱们作的应该说没有RDBMS作得好。实际上,早期的RDBMS并无外键,如今都有了,我认为数据库厂商增长这个功能是有道理的。从这个角度来讲,外键更方便。
四、关于方便,根据我带项目的状况来看,程序员确实有反映,主要是在调试时输入数据麻烦:若是数据能够违反参照完整性,那么就是说参照完整性自己就不对名誉业务冲突,此时也不该该用触发期货程序实现;不然,说明数据是错误的,根本就不该该进入数据库!并且,这也应该是测试系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败作出处理。数据是企业的而非程序的,储程序要尽可能与数据分离,反之亦然。程序员
最后说一下,建键几个原则:数据库
一、 为关联字段建立外键。
二、 全部的键都必须惟一。
三、避免使用复合键。
四、外键老是关联惟一的键字段。 编程