mysql 中外键的做用

    外键是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。   
    外键属性固然是能够去掉的,若是你不想再用这种约束,对编程固然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。   
    例若有两个表   
  A(a,b)   :a为主键,b为外键(来自于B.b)   
  B(b,c,d)   :b为主键    
  若是我把字段b的外键属性去掉,对编程没什么影响。
  如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。

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

最后说一下,建键几个原则:数据库

一、 为关联字段建立外键。
二、 全部的键都必须惟一。
三、避免使用复合键。
四、外键老是关联惟一的键字段。 
编程