数据库中多对多关系及其实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中多对多关系及其实现相关的知识,希望对你有一定的参考价值。

事物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的一些理解,有写的不对的地方希望大家能够指出来。

 

以上是关于数据库中多对多关系及其实现的主要内容,如果未能解决你的问题,请参考以下文章

Laravel中多对多关系的多重搜索子句

数据库表中多对多关系怎么设计?

防止 SQLAlchemy 中多对多关系中的重复表条目

XAF中多对多关系 (XPO)

Java中多对多映射关系

MyBatis中多对多关系的映射和查询