表的三种关系
1)一对一
关联方式:foreign key+unique
例如1个学生只能有1个学号,1个学号只能对应1个学生
#两张表: 学生表(student)和 学号表(student_id) # 创建学生表 create table student( id int primary key auto_increment, name varchar(20) ); # 创建学号表 create table student_id( id int primary key auto_increment, url varchar(100), user_id int unique, constraint fk_student foreign key(id) references student(id) on delete cascade on update cascade
2)一对多(或多对一)
关联方式:foreign key
例如书和出版社和关系,一个出版社可以出版多本书。
#创建出版社表 create table book_concern( id int primary key auto_increment, name varchar(20) ); #创建图书表 create table book( id int primary key auto_increment, name varchar(20), book_concern_id int not null, constraint fk_book_concern foreign key(id) references book_concern(id) on delete cascade on update cascade );
3)多对多
关联方式:foreign key+一张新的表
例如作者和书籍的关系,一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多。
# 创建被关联表author表,之前的book表在讲多对一的关系已创建 create table author( id int primary key auto_increment, name varchar(20) ); #创建一张新的表,这张表存放了author表和book表的关系,查询二者的关系只需查这张表就可以了 create table author2book( id int not null unique auto_increment, author_id int not null, book_id int not null, constraint fk_author foreign key(author_id) references author(id) on delete cascade on update cascade, constraint fk_book foreign key(book_id) references book(id) on delete cascade on update cascade, primary key(author_id,book_id) );