MySQL外键和参照完整性的联系


  本文标签:MySQL外键

  MySQL外键可以保证数据库的参照完整性,让数据库变得更简单  。而参照完整性是数据库设计中最重要的概念之一  。

  参照完整性(完整性约束)是数据库设计中的一个重要概念,当数据库中的一个表与一个或多个表进行关联时都会涉及到参照完整性  。比如下面这个例子:
文章分类表 -    categories
category_id       name
1                 SQL Server
2                 Oracle
3                 PostgreSQL
5                 SQLite

  文章表 - articles
article_id        category_id       title
1                 1                 aa
2                 2                 bb
3                 4                 cc

  可见以上两个表之间是通过category_id,其中categories表有4条记录,articles表有3条记录  。

  然而可能因为某种原因我们删掉了categories 表中category_id=4的记录,而articles表却还是有一条category_id=4的记录,很明显,category_id=4的这条记录不应该存在在articles表中,这样会很容易造成数据错乱  。

  相反,MySQL外键关系(Foreign Key relationships)讨论的是父表(categories)与子表(articles)的关系,通过引入MySQL外键(Foreign Key)这个概念来保证参照完整性(Referential integrity),将使会数据库变的非常简单  。比如,要要做到删除categories表中category_id=4记录的同时删除 articles 表中category_id=4的所有记录,如果没有引入MySQL外键的话,我们就必须执行2条SQL语句才行;如果有外键的话,可以很容易的用一条SQL语句就可以达到要求  。