数据库原理与应用 第 13 章 · 上机一
课程第 13 章上机一 两张表放错端放对端挤一张单独建差一步补上它走一遍 版式
第 13 章 数据库概念结构设计和逻辑结构设计 · 上机一

三种联系,外码放哪一端

课件第 26 页那三条转换原则,反过来做一遍,看它是怎么拦住你的。
已完成 0 / 7
本 次 上 机 题 目
  1. 01先把两个实体各建一张表
  2. 021:n 的外码放到 1 端会怎么样
  3. 03外码挪到 n 端,三个学生都进得去
  4. 04m:n 硬塞进一张表,一个学生只选得了一门
  5. 05m:n 单独一张表,选几门都放得下
  6. 061:1 不加 UNIQUE,一个系冒出两个主任
  7. 07外码上加一个 UNIQUE,1:1 才立得住
  8. 三条规则连起来跑一遍
01
第 13 章 · 上机一

先把两个实体各建一张表

系和学生是两个实体,实体转成表这一条最简单,属性照搬,键做主码。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

实体转表这一条没有例外,一个实体一张表,键就是主码。

知道更多

第一句先删干净,这样这一页从头到尾可以反复跑。

02
第 13 章 · 上机一

1:n 的外码放到 1 端会怎么样

系和学生是 1:n。先故意把学号塞进系表,看它能撑到第几行。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

第二条报 1062。系号是主码,计算机系只占得下一行。

打个比方

一个信封上只写得下一个收件人,第二个人就得另拿一个信封。

想一想

那一行装得下两个学号吗?

03
第 13 章 · 上机一

外码挪到 n 端,三个学生都进得去

同样的两个实体,把系号放进学生表,一行学生记一个系号。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

三个学生一次进去,最后一条报 1452,D9 这个系不存在。

记牢它1:n 怎么放

  1. 1 端的键
  2. 抄到 n 端
  3. n 端做外码
  4. 不建新表

想一想

为什么 1:n 不需要第三张表?

04
第 13 章 · 上机一

m:n 硬塞进一张表,一个学生只选得了一门

学生和课程是 m:n。先试试把课程号加进学生表。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

赵亦想再选 C2,只能再插一行学生,学号重了,1062。

练一练

为什么 m:n 塞进一张表一定不行?
  1. A外码不许重复
  2. B一行只放得下一个课程号
  3. CMySQL 不支持两个外码
  4. D课程表没有主码
答案 B

一行学生只有一个课程号的位置,想选两门就得两行,学号立刻重复。

05
第 13 章 · 上机一

m:n 单独一张表,选几门都放得下

两个实体的键组合起来做主码,联系自己的属性也放进这张表。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

赵亦选了两门,最后一条同一对学号课程号再来一遍,1062。

知道更多

成绩挂在联系上,所以它落在选修这张表里,不在学生也不在课程。

想一想

成绩为什么放不进学生表?

06
第 13 章 · 上机一

1:1 不加 UNIQUE,一个系冒出两个主任

系和系主任是 1:1。先照 1:n 的做法把系号放进系主任表。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

两条都进去了,计算机系有两个主任,1:1 悄悄变成了 1:n。

想一想

光看表结构,看得出这是 1:1 吗?

07
第 13 章 · 上机一

外码上加一个 UNIQUE,1:1 才立得住

只差这一个字,第二个主任就挤不进来了。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

报 1062,key 名就叫 系主任.系号,换成 D2 才进得去。

分清楚外码放在哪

联系怎么放
1:1外码加 UNIQUE
1:n外码放 n 端
m:n单独建一张表

知道更多

第 12 章那张表里刘伟管两个系,那本来就不是 1:1。

第 13 章 · 上机一

三条规则连起来跑一遍

头一句先删干净,四张表从零建起,最后数一数各有几行。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>

重 点

两个实体加一个 m:n 联系,最后就是这三张表连起来查。

记牢它背下来

  1. 1:1 加唯一
  2. 1:n 放 n 端
  3. m:n 单独建

想一想

系主任表里的 UNIQUE 去掉会怎样?

保山学院·人工智能教研室·曹鼎鼎