SQL中主键外键关系

来源:互联网 发布:淘宝网是马云的吗 编辑:程序博客网 时间:2024/05/21 17:20

       在学过数据库以后对于约束的概念就不是太陌生了,即:约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。当然主键和外键也不例外也是保持数据完整性的一种方法,接下来就针对主外键来展开讲述。

       主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。接下来就从二者的定义、作用、个数以及二者的运用关系来区分。

一、定义:

主键--唯一标识一条记录,不能有重复的,不允许为空

外键--表的外键是另一表的主键,外键可以有重复的,可以是空值

二、作用:

主键--用来保证数据完整性

外键--用来和其他表建立联系用的

 三、个数:

主键--主键只能有一个

外键--一个表可以有多个外键

四、SQL中主键和外键的关系及运用

1.两实体间主外键关系就是一对多的关系。

例如:学生和班级之间就是一对多关系。

             班级是一;学生是多

             班级表包含主键(classpk);

             学生表包含对班级表的引用(classpk)

             这个引用关系就是通常说的外键,外键即使其他表的主键,在这里学生表中classpk就是来自于班级表中的主键。

             所以说:学生表是外键表,班级表是主键表。

2.外键表和主键表其实是相对的,某个表既可以是其他表的主键表,也可以是另一个或者另一些表的外键表,即某个表既可以是外键表也可以是主键表。

例如:  a 和 b 是1对多关系,那么a是主键表,b是外键表。

              c 和 a 是 1对多关系,那么c是主键表,a是外键表。

              综上可以发现a既可以是主键表,又可以是外键表。

3.在外键表中增加一行时数据,必先保证外键已经存在。 就是说插入数据时,外键必须已经存在于主键表中。

 (外键就是来源于主键表的主键嘛)

例如:先有班级后有学生,插入一个学生必须保证,班级先存在。

4.删除主键表时,必须首先删除主键表关联的所有外键表中的信息。

例如:删除一个班级之前,必须删除首先删除该班级所有的学生。

5.删除外键表中的数据时,对主键表不会有任何影响。

例如:删除一个学生对班级不会有影响。

6.实体之间的多对多关系,其实就是建立一个中间表,中间表包含多对多实体之间的外键。

例如:a 和 b 多对多

7.采用级联的方法,当含有主键的表中的数据删除时,外键表的数据自动进行删除操作。