~(外键约束)表与表之间的关系

为什么使用多表?一张表不能完成吗?!


表与表之间的关系

有3类表关系:一对多(多对一)、多对多、一对一(了解)。

[1] 一对多(多对一)关系

建表原则:建立两张表。

一张主表,一张从表(从表必须有一个字段,引用主表的主键,这个字段成为外键。)

常见实例:学生和考试成绩、客户和订单、分类和商品、部门和员工。

[2] 多对多关系

建表原则:建立一张中间表(创建第 3 张表)。

中间表必须有自己的主键;至少有两个外键,这两个外键指向各自一方的主键。

[3] 一对一关系(了解)

在实际的开发中应用不多,因为一对一可以创建成一张表。如,QQ号码 和 QQ用户信息。

两种建表原则:

  • 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique。
  • 外键是主键:主表的主键和从表的主键,形成主外键关系。

外键约束

有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常情况下,我们将在商品表上添加一列,用于存放分类 cid 的信息,此列称为:外键。

“分类表category”称为:主表,“cid”我们称为主键。“商品表products”称为:从表,category_id称为外键。

我们通过主表的主键和从表的外键来描述主外键关系,呈现就是一对多关系。

外键特点:

  • 从表外键的值是对主表主键的引用。
  • 从表外键类型,必须与主表主键类型一致。

// 声明外键约束
	
语法:alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
 
[外键名称] 用于删除外键约束的,一般建议“_fk”结尾
	alter table 从表 drop foreign key 外键名称