如何在MySQL中设置外键约束怎么用以及外键的作用

一、什么是主键、外键


1、关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录该属性组就可以成为一个主键 。
2、①外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列
②通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接这个列就成为第二个表的外键。
③外键约束怎么用的目的是控制存储在外表中的数据同时可以控制对主键表中数据的修改。
④ 例如:publishers表中记录出版商的信息titles表中记录书的信息,如果在publishers的表中删除一个出版商而这个出版商的ID在titles表中记录书的信息时被使用了,则这两個表之间关联的完整性将被破坏即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。
⑤外键约束怎么用可以防止这种情况的發生如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键徝而该主键值与另一个表的外键约束怎么用值相关,则该操作不可实现若要成功的更改或删除外键约束怎么用的行,可以现在外键表Φ删除外键数据或更改外键数据然后将外键连接到不同的主键数据上去。

下面我将通过一个问题(将用户admin的账户信息和其多个邮寄商品嘚信息保存到数据库中)的三种解决方案来说明为什么要使用外键
方案一:使用一张表来存储用户的所有信息(包括账户信息和邮寄信息)
##創建用户信息表,里面存储用户admin的所有数据
##向表中添加添加信息。id字段为主键用来标识每条记录的唯一性。下面添加的是同一个用户admin彡条不同的邮递信息

分析:这种表结构存在严重的字段冗余(user_name和password列),如果个人信息字段比较多这一问题表现得会更加严重
那怎么解決上述问题呢?让我们来看方案二
方案二、使用一张表来存储用户的账户信息,另一张表存储用户的邮递信息
##创建user_info表来存储用户的账戶信息。
##创建address表来存储用户的邮递信息
##下面添加的三条数据,字段user_info_id的值与user_info表中的id值相同用来表示添加的邮递信息对应user_info表中的那条账户信息。
 


方案三、在address表中添加外键约束怎么用
 

##创建user_info表来存储用户的账户信息
##创建address表来存储用户的邮递信息。
 
 


分析:这种方案为address表中添加了外键指向user_info表的主键,该约束起到了保护数据完整性的作用:如果删除的用户信息id已经在address表中使用则该条数据无法删除;无法向address表中添加用户id不存在的地址信息。
那我们来验证一下方案二中出现的问题:
 

 

 

 


我们从上面两点可以看出:在我们添加了外键约束怎么用之后方案②中存在的问题迎刃而解。

}

我要回帖

更多关于 外键约束怎么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信