后说一下,建键几个原则:
  1、 为关联字段创建外键。
  2、 所有的键都必须。
  3、避免使用复合键。
  4、外键总是关联的键字段。
  外键的作用?
  外键是数据库一级的一个完整性约束,是数据库基础理论书中所说的“参照完整性”的数据库实现方式。
  外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候不对录入的数据进行“参照完整性”检查了。
  例如有两个表
  A(a,b) :a为主键,b为外键(来自于B.b)
  B(b,c,d) :b为主键
  如果我把字段b的外键属性去掉,对编程没什么影响。
  如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。
  1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。
  2、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时非常明显的--前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感觉很明显。当然,文档里可能有,但是也可能不全,但是外键非常明显和直观。
  3、既然我们可以用触发器或程序完成的这个工作(指参照完整性约束),DBMS已经提供了手段,为什么我们要自己去做?而且我们做的应该说没有RDBMS做得好。实际上,早期的RDBMS并没有外键,现在都有了,我认为数据库厂商增加这个功能是有道理的。从这个角度来说,外键更方便。
  4、关于方便,根据我带项目的情况来看,程序员确实有反映,主要是在调试时输入数据麻烦:如果数据可以违反参照完整性,那么是说参照完整性本身不对名誉业务冲突,此时也不应该用触发期货程序实现;否则,说明数据是错误的,根本不应该进入数据库!而且,这也应该是测试系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。
  后说一下,建键几个原则:
  1、 为关联字段创建外键。
  2、 所有的键都必须。
  3、避免使用复合键。
  4、外键总是关联的键字段。
  二·设置外键后如何进行数据操作
  比如你设置了2个表
  pettable
  petid(主)  petname
  ordertable
  peoplename   address  petid(外)
  一个用户买了一个宠物,那么有了个订单,如何插入ordertable表呢?
  如下:
  insert into ordertable  select 你输入的一个name(例如:'peoplename') , petname from pettable where...
  举一反三删除数据也是一样