mysql 理解多对多_关于mysql中表关系的一些理解(一对一,一对多,多对多)

本文通过学院表、学生表、学生详情表、选课表和课程表之间的关系,详细解释了数据库中的一对一、一对多和多对多关系。学院表与学生表构成一对多关系,学生表与学生详情表为一对一关系,学院表与课程表也是一对多关系,而学生表与课程表通过选课表实现多对多关联。举例说明了如何使用SQL创建和关联这些表格,以及如何插入数据来体现这些关系。
摘要由CSDN通过智能技术生成

举一个例子来讲解一下,数据库mysql中的表间关系问题,

一对一:主键与主键产生关联

一对多:新建字段与主键产生关联

多对多:新建中间表产生关联

在此,特以  学院表,学生表,学生详情表,选课表,课程表  之间的关系,来解释

学院表:id和name

create tablecollege(

col_id intprimary key not null,col_name varchar(20) not null);

添加数据:

insert into college values(1,"计算机学院"),

(2,"美术学院"),

(3,"音乐学院"),

(4,"管理学院");

281002ce838159f7ef7f7d92230204f6.png

学生表:  新建一个字段sc_id,与学院表产生关联   字段与主键产生关联

mysql> create tablestudent(

stu_idint primary keyauto_increment,

stu_namevarchar(20) not null,

sc_idint not null, # 新建字段sc_idforeign key(sc_id) referencescolloege(col_id) #将新建字段作为colloege表主键col_id的外键

);

添加数据,一个学院,可以有多的学生,形成一对多的关系:如图,

小明小红是计算机学院的,小白小方是美术学院的小黑是管理学院,小珂是音乐学院的

3390915cc28d9cdacd18186c2edd9fcf.png

学生详情表: id,性别, 年龄 地址  student的主键stu_id与主键sda_id产生联系 达到一对一的关系

create tablestu_datalis(

sda_idint primary key,

sda_sexvarchar(10) not null,

sda_ageint not null,

sda_address varcahr(20),foreign key(sda_id) referencesstudent(stu_id)

);

添加数据

1fd85099c3c7f5a66657b1917a4681f6.png

课程表  与学院id形成一对多的关系

create tablecourse(

cou_idint primary key,

cou_namevarchar(20) not null,

cc_idint not null,foreign key(cc_id) referencescollege(col_id)

);

python和web属于计算机学院,rap属于音乐学院,素描属于美术学院

79f67b207f1366cb1f70c6ab72979c50.png

因为多名学生可以选择同一门课,多门课可以给一个学生上,所以他们是多对多的关系:

建立中间表格:选课表

将choose的联合主键stu_id作为student表主键stu_id的外键进行关联

将choose的联合主键cou_id作为course表主键cou_id的外键进行关联

create tablechoose(

stu_idint,

cou_idint,primary key(stu_id,cou_id),foreign key(stu_id) referencesstudent(stu_id),foreign key(cou_id) referencescourse(cou_id)

);

2号和5号学生选择了1号课程,1号学生选择了2号课程,6号学生选择了3号课程

3号和4号学生选择了4号课程

f330185d094a6182d80f4db9eef9b6a2.png

一共建立了5张表格:学院表,学生表,学生详情表,选课表,课程表

学生表和学生详情表是一对一关系,

通过主键stu_id与主键sda_id产生联系----主键与主键

学生表和学院表是一对多关系,

通过在学生表新建字段sc_id与学院表主键col_id产生联系----新建字段与主键

课程表和学院表也是一对多的关系

通过在课程表新建字段cc_id与学院表主键col_id产生联系----新建字段和主键

学生表和课程表是多对多关系,通过新建中间表(选课表:choose)并设定联合主键primary key(stu_id,cho_id),

将choose的联合主键stu_id作为student表主键stu_id的外键进行关联

将choose的联合主键cou_id作为course表主键cou_id的外键进行关联

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值