首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

数据库小结之外键再学习

2012-08-15 
数据库总结之外键再学习之所以称之为再学习,是因为此前曾学习过这些知识,只不过当时没有总结。现在再次遇到

数据库总结之外键再学习

       之所以称之为再学习,是因为此前曾学习过这些知识,只不过当时没有总结。现在再次遇到它,详细再学习一下,加深印象。

什么是外键?

       如果公共关键字(表中相同的属性)是一个关系中的主关键字(primary key),那么这个公共关键字被称为另一个关系的外键。

相关概念解析:

       公共关键字:多个表中的相同的属性或属性组。

       主关键字:即主键。

       关系:即一张表。

主表与从表

        表A中有a、b两个字段,a字段是主键。表B有a、c两个字段。a字段可以设置外键。此时,表A为主表,表B为从表。

 

外键的作用:

         1、数据完整性的(数据库基础理论书中所说的“参照完整性”的数据库实现方式。)

         2、保持数据一致性,

         3、控制存储在外键表中的数据

       简而言之:当你对一个表的数据进行操作时和他有关联的一个或更多表的数据能够同时发生改变,这就是外键的作用。

       外键约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers表中删除一个出版商,而这个出版商的 ID 在 titles表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。

       外键约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的外键约束值相关,则该操作不可实现。若要成功更改或删除外键约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

例如:

         a b两个表

         a表中存有客户号,客户名称

         b表中存有每个客户的订单

       有了外键后,你只能在确信b表中没有客户x的订单后,才可以在a表中删除客户x,否则b表中的数据就变得孤立了,即完整性缺失。

 

建立外键的原则:

         1、为关联字段创建外键。

         2、所有的键都必须唯一。

         3、避免使用复合键。

         4、外键总是关联唯一的键字段。

 

如何建立外键:

           一、使用T-SQL语句:

       指定主键关键字:foreign key(列名)

       引用外键关键字:references <外键表名>(外键列名)

       事件触发限制: ondelete和on update ,可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action

例如:

         outTable表主键 id类型 int

      创建含有外键的表:

        create table temp(

        id int,

        name char(20),

        foreign key(id) references outTable(id) on delete cascade on updatecascade);

       说明:把id列设为外键,参照外表outTable的id列,当外键的值删除,本表中对应的列删除(on delete的作用),当外键的值改变,本表中对应的列值改变(on update的作用)。

       二、使用DBMS关系图建立外键:

         1、建表(见图,设置主键。)

数据库小结之外键再学习数据库小结之外键再学习数据库小结之外键再学习

         2、新建关系图

数据库小结之外键再学习

        3、选择添加表:

数据库小结之外键再学习

        4、建立外键,将要建立外键关系表中主键字段拖向外键字段。

数据库小结之外键再学习

        5、点击确定即可完成外键的建立。

使用外键的注意事项:

        1、使两张表形成关联,外键只能引用外表中的列的值。

        2、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。

        3、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处非常明显

        4、相对于触发器或程序完成的这个工作(指参照完整性约束),外键更方便。

        5、阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。

        6、建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。

 

 

 

4楼wwwwenhuan13分钟前
很好,很扎实。
Re: lbq61361311分钟前
回复wwwwenhuann还得向你学习啊!
3楼lbq61361314分钟前
外键的理解又加深了一步!
Re: love1989091113分钟前
回复lbq613613n[img]http://static.blog.csdn.net/images/emotions/e04.gif[/img]
2楼aboy12317分钟前
不错
Re: lbq61361316分钟前
回复aboy123n要好好学习哈!呵呵
1楼love1989091125分钟前
“再学习”,只有反复学习,才能真正掌握领会!
Re: lbq61361318分钟前
回复love19890911n恩,温故而知新嘛!

热点排行