第 13 章 数据库概念结构设计和逻辑结构设计 · 上机一
三种联系,外码放哪一端
课件第 26 页那三条转换原则,反过来做一遍,看它是怎么拦住你的。
系和学生是两个实体,实体转成表这一条最简单,属性照搬,键做主码。
Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>
重 点
实体转表这一条没有例外,一个实体一张表,键就是主码。
知道更多
第一句先删干净,这样这一页从头到尾可以反复跑。
系和学生是 1:n。先故意把学号塞进系表,看它能撑到第几行。
Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>
重 点
第二条报 1062。系号是主码,计算机系只占得下一行。
打个比方
一个信封上只写得下一个收件人,第二个人就得另拿一个信封。
同样的两个实体,把系号放进学生表,一行学生记一个系号。
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 端的键
- 抄到 n 端
- 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 塞进一张表一定不行?
- A外码不许重复
- B一行只放得下一个课程号
- CMySQL 不支持两个外码
- D课程表没有主码
答案 B一行学生只有一个课程号的位置,想选两门就得两行,学号立刻重复。
两个实体的键组合起来做主码,联系自己的属性也放进这张表。
Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
终端一打开是一个空的 design 库,这一章的表全部由你自己按 E-R 图建出来。
mysql>
重 点
赵亦选了两门,最后一条同一对学号课程号再来一遍,1062。
知道更多
成绩挂在联系上,所以它落在选修这张表里,不在学生也不在课程。
系和系主任是 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。
只差这一个字,第二个主任就挤不进来了。
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。
头一句先删干净,四张表从零建起,最后数一数各有几行。
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:n 放 n 端
- m:n 单独建