day05-表的三种关系

表的三种关系

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)
);

猜你喜欢

转载自www.cnblogs.com/dxnui119/p/10167076.html