12.2.1为什么要使用外键 外键的主要作用是保证数据的参照完整性。本小节将 讲述参照完整性的定义,并阐述外键存在的必要性。 1.参照完整性 2.外键的必要性
12
12.2.2外键简介 外键实际是一个引用。一个数据表有自己的主键,而向外部 其他数据表的引用,则称作外键。这里需要注意的是,外键实际 隐含了对外部引用的限制一必须获得外部数据表的唯一记录。 如同一个身份证只能指向一个户籍,而一个订单也只能属于一个 客户。 以客户表与订单表为例,订单表要建立向客户表的引用。那 么必须在订单表中保存客户信息列。例如,在图12-4中,订单表 中含有客户D。将外键建立在该列之上,那么通过每一个客户D 都能在客户表中获得唯一记录。为了能获得唯一记录,客户表中 的客户①必须为主键。这也是为什么作为外键支持的列,必须是 主键列的原因
—— 12-4 ID ID ID
12.2.3创建外键约束 外键是约束的一种,一旦创建即可在数据字典中获得 相应信息。 1.创建外键约束 2.查看外键信息 3.验证外键约束的作用
123
12.2.4级联更新与级联删除 在上一小节中可以看到,尝试修改主表和从表中的数 据并不一定能够成功。但是有时又的确有这种需求。对于某 个客户,同时修改customerz表与purchase order表中的 customer id列的值。另外,当某一客户被删除时,也应该 同时删除该客户所拥有的所有订单。主表的操作,将连带影 响到从表的操作,这就是级联更新与级联删除问题的提出背 景。 所谓级联更新,是指当主表中的主键列进行修改时, 子表的外键列也应该进行相应的修改。级联删除是指当主表 中的记录删除时,子表中与之相关的记录也应该同时删除
customer purchase_order customer_id