事物A中的一条记录可以对应事物B中的多条记录,而事物B中的一条记录也可以对应事物A中的多条记录。例如:学校中,一个班级可以有多名任课老师,而一名老师可以教多个班级。这时,可以引入一个表C来模拟多对多关系。

 

SQL语句:

--班级表
create table banji
(
    banji_id int primary key,
    banji_num int not null,
    banji_name nvarchar(100)
)

--教师
create table jiaoshi
(
    jiaoshi_id int primary key,
    jiaoshi_name nvarchar(200)
)

--第三张表 用来模拟班级和教师的关系
create table banji_jiaoshi_mapping
(
    banji_id int constraint fk_banji_id foreign key references banji(banji_id),
    jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),
    kecheng nvarchar(20),
    constraint pk_banji_id_jiaoshi_id primary key (banji_id,jiaoshi_id,kecheng)
)


--删除表
drop table banji_jiaoshi_mapping

数据库关系图:

注:本文参考了郝斌老师的SQL教程,也加入了自己对SQL的一些理解,有写的不对的地方希望大家能够指出来。