2.SQL中主键和外键的作用

主键是关系表中行的唯一标识。主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。每个表都应该有一个主键,并且每个表只能有一个主键主键也不应该允许NULL空值。

外键可以让关系数据库实现一对多、多对多和一对一的关系,表的外键是另一表的主键

1.一对多

classes表

idname
1一班
2二班

students表

idclass_idname
11小明
22小红
62小刚

两张表中的id列就是主键

  • 小明的class_id1,因此,对应的classes表的记录是id=1的一班;
  • 小红的class_id是2,因此,对应的classes表的记录是id=2的二班;
  • 小刚的class_id2,因此,对应的classes表的记录是id=2的二班。

students表中,通过class_id的字段,可以把数据与另一张表关联起来,这种列称为外键,students表的外键是classes表的主键

外键并不是通过列名实现的,而是通过定义外键约束实现的:

ALTER TABLE students
ADD CONSTRAINT hxq_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);

其中,外键约束的名称hxq_class_id可以任意,FOREIGN KEY (class_id)指定了class_id作为外键REFERENCES classes (id)指定了这个外键将关联到classes表的id列(即classes表的主键)。

2.多对多

teachers表

idname
1张老师
2王老师
3李老师
6高老师

classes表

idname
1一班
2二班

中间表teacher_class表

idteacher_idclass_id
111
212
321
422
532
662

因此,通过中间表,我们就定义了一个“多对多”关系。

3.一对一

一对一关系是指,一个表的记录对应到另一个表的唯一一个记录。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/sql/1893.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注