数据库原理与应用 第 13 章 · 上机三
课程第 13 章上机三 商品侧订单侧三张多三张一数一数装数据问一句走一遍 版式
第 13 章 数据库概念结构设计和逻辑结构设计 · 上机三

把全局 E-R 图建成表

课件第 23 页那张全局 E-R 图,七个实体六个联系,一张表都不落地建出来。
已完成 0 / 7
本 次 上 机 题 目
  1. 01供应商、商品、分类三张实体表
  2. 02用户、地址、订单、物流四张实体表
  3. 03三个 m:n 联系,各建一张表
  4. 04三个 1:n 联系,先照规矩各建一张
  5. 05十三张表,一张不多一张不少
  6. 06每张表塞几行,让它跑起来
  7. 07这单是谁下的,寄到哪,谁送
  8. 十三张表一口气建完
01
第 13 章 · 上机三

供应商、商品、分类三张实体表

照课件第 23 页那张全局图,属性一个不落地抄下来。

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

重 点

实体转表这一步没有判断,键做主码,属性照搬。

知道更多

第一句把 13 张表按被引用的反序删干净,这一页才能反复跑。

02
第 13 章 · 上机三

用户、地址、订单、物流四张实体表

地址的属性最多,照第 21 页那张图数,一共九个。

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

重 点

七个实体七张表,一张也不能少,联系还一个没转。

知道更多更正

E-R 图上写密码邮箱,第 29 页写登录邮箱,是同一个属性。

想一想

用户和订单之间,图上有联系吗?

03
第 13 章 · 上机三

三个 m:n 联系,各建一张表

供应、属于、包含,主码都是两端键的组合。

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

重 点

属于这张只有两列,因为这个联系身上一个属性都没有。

知道更多更正

课件第 30 页管它叫分类,跟分类实体重名,图上写的是属于。

想一想

供应这张表为什么必须两列做主码?

04
第 13 章 · 上机三

三个 1:n 联系,先照规矩各建一张

拥有、设置、使用,主码都是 n 端那个实体的键。

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

重 点

n 端的键单独做主码,这三张表下一次上机就会被合并掉。

知道更多

课件第 27 页说 1:n 并不产生新关系,第 30 页却先建出来了。

想一想

先建再合并,跟一步到位差在哪?

05
第 13 章 · 上机三

十三张表,一张不多一张不少

七个实体加六个联系,这就是第 31 页说的那个数。

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

重 点

回显末行写着 13 rows in set,7 加 6 就是这个数。

练一练

为什么这十三张表天生就是 3NF?
  1. AMySQL 会自动规范化
  2. B每张表只讲一件事,非主属性都直接依赖码
  3. C都加了外码约束
  4. D属性个数都不多
答案 B

E-R 图上一个实体一件事、一个联系一件事,转出来自然没有部分依赖和传递依赖。

06
第 13 章 · 上机三

每张表塞几行,让它跑起来

两个商品、两个分类、一个供应商、一个用户、一个订单。

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

重 点

插入顺序得跟着外码走,先实体后联系,反过来就撞 1452。

想一想

先插包含再插订单会发生什么?

07
第 13 章 · 上机三

这单是谁下的,寄到哪,谁送

图上用户和订单没有直连,得顺着地址绕一圈。

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

重 点

八张表连起来才答得上,因为用户是靠地址挂上订单的。

知道更多

订单里没有用户编号,换个收件人订单就换了主人,这是个隐患。

想一想

订单直接加一个用户编号,好不好?

第 13 章 · 上机三

十三张表一口气建完

头一句先删干净,从零把整张全局图落到表上。

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

重 点

一张 E-R 图落到十三条 CREATE TABLE,逻辑结构设计就算走完了。

记牢它顺序

  1. 先建实体表
  2. 再建联系表
  3. 外码指向已有表

想一想

这十三张表下一步该做什么?

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