例如有两个表
A(a,b) :a为主键,b为外键(来自于B.b)
B(b,c,d) :b为主键如果我把字段b的外键属性去掉,对编程没什么影响。可以去掉么?会有一些其它什么影响么?请高手指教,谢谢!

解决方案 »

  1.   

    外键可以强制数据的完整性,如果加references ... on delete cascade关键字,还可以实现删除主键时自动删除外表数据
      

  2.   

    谢谢,这些功能基本不需要
    影响查询的速度么?
    譬如,通过b查找a和c的对应时,影响其查找速度么?
      

  3.   

    外键是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。