数据库原理与应用 第 13 章 · 上机二
课程第 13 章上机二 当属性改两行当实体两张图改名字统类型取并集走一遍 版式
第 13 章 数据库概念结构设计和逻辑结构设计 · 上机二

是实体还是属性,两张图怎么并

课件第 9 到 12 页那两条判据和三种冲突,一条条在终端里撞出来。
已完成 0 / 7
本 次 上 机 题 目
  1. 01把系别当成学生的一个属性
  2. 02计算机系换主任,要动几行
  3. 03系别独立成一张表,再换主任
  4. 04两个部门各画各的,同一件东西两个样
  5. 05命名冲突,先把名字统一
  6. 06属性冲突,八位编号塞不进六位
  7. 07结构冲突,属性组成取两边的并集
  8. 从两张局部表并到一张,一口气跑完
01
第 13 章 · 上机二

把系别当成学生的一个属性

系主任和办公室也一起写进学生表,先看看长什么样。

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

重 点

刘伟和 A301 抄了两遍,这就是第 12 章那张烂表的样子。

想一想

再来五十个计算机系的学生会怎样?

02
第 13 章 · 上机二

计算机系换主任,要动几行

只要有一行没跟上,一个系就会有两个主任。

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

重 点

第一条动了 2 行,漏改一行,计算机系当场两个主任。

知道更多

属性还带着自己的描述信息,这个信号说明它该独立成实体。

03
第 13 章 · 上机二

系别独立成一张表,再换主任

同样一件事,改一行就够了。

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

重 点

换主任只动 1 行,而且不可能出现两个主任。

分清楚系别算哪个

情形画成
只有名字属性
还带主任实体
要跟别人连实体

想一想

什么时候系别当属性反而更合适?

04
第 13 章 · 上机二

两个部门各画各的,同一件东西两个样

采购部叫它采购商品,销售部叫它销售商品,编号规则还不一样。

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

重 点

同一批商品,一边六位编号一边八位,字段名也对不上。

关键术语三种冲突

属性冲突attribute conflict
同一属性两种类型或单位
命名冲突naming conflict
同一个东西两个名字
结构冲突structural conflict
同一实体属性组成不同
05
第 13 章 · 上机二

命名冲突,先把名字统一

异名同义,改成同一个名字,这一步动的是表结构不是数据。

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

重 点

名字统一了,值一个没动,主码那一栏 Null 仍然是 NO。

知道更多更正

课件第 22 页把采购和销售这两个实体名说反了。

想一想

还有一种冲突是同名异义,那要怎么办?

06
第 13 章 · 上机二

属性冲突,八位编号塞不进六位

两边都叫商品编号了,可类型还是对不上,改一下试试。

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

重 点

第一条报 1406,八位的值放不进六位,得先把编号规则统一。

打个比方

两个部门各印各的工牌号,合并那天总得有一方重印。

想一想

如果两边编号真的撞了,怎么办?

07
第 13 章 · 上机二

结构冲突,属性组成取两边的并集

销售那张缺两个字段,补齐之后把行搬过去。

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

重 点

两行并成一张商品表,缺的那两个字段是 NULL,不是丢了。

记牢它并的四步

  1. 名字先统一
  2. 类型再统一
  3. 属性取并集
  4. 最后消冗余

想一想

电饭煲的生产厂家是空的,这算不算问题?

第 13 章 · 上机二

从两张局部表并到一张,一口气跑完

头一句先删干净,冲突挨个消,最后数行数。

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

重 点

三行商品并进一张表,两个部门从此看的是同一份数据。

知道更多

并完还要消冗余,能算出来的属性和绕圈的联系都该去掉。

想一想

消冗余为什么放在最后一步?

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