当前课程知识点:数据库概论 >  第七章 实体关系模型 >  7.4 E-R模型实例分析 >  Video

返回《数据库概论》慕课在线视频课程列表

Video在线视频

Video

下一节:ACID介绍

返回《数据库概论》慕课在线视频列表

Video课程教案、知识点、字幕

在较全面的学习了

E –R模型的基本概念之后

让我们来一起分析一些E-R模型的实例

以加强大家对E-R模型的理解

我们先来看一个简单的机票订票数据库

通过对航空订票业务的分析

抽取出了四个实体

分别是乘客

航班

座位和登机口

为了描述方便

航班主要保存航班号和起飞时间

起飞时间由起飞的日期和具体时间组成

其他属性在案例中暂时省略

乘客主要表示的是机票信息

在例子中主要保存票号信息

座位主要保存座位号信息

登机口主要保存登机口号信息

航班和乘客之间具有travels_on联系

表示航班和机票之间的联系

航班和座位之间具有Has_Seat联系

乘客和座位之间具有Seat_Assign联系

航班和登机口之间具有Marshals联系

下面我们对联系进行详细分析

Seats是依赖于航班的弱实体

也就是说

只有当一趟航班确定时

为该航班编排座位才是有意义的

例如

不同的机型对应的座位排序不一样

当航班取消了

对应的座位也就无意义了

航班和座位之间是1对多联系

座位是多的一方

每张机票需要对应一个座位

因此Passengers和Seats之间

具有Seat_Assign联系

并且一张机票至少对应一个座位

最多对应1个座位

而一趟航班上的一个座位

有可能对应0张机票

最多对应一张机票

所以Passengers和Seats之间是1对1联系

并且在Passengers这边是强制参与

在Seats这边是可选参与

Marshals表示每趟航班要有一个登机口

所以航班和登记口之间

具有Marshals联系

表示一趟航班至少要有一个登机口

至多有一个登机口

而一个登机口可能对应0个航班

也可以对应多个航班

登机口和航班之间是1对多联系

并且航班是多的一方

Travels_On联系表示

一趟航班在乘客还没有订票时

对应的乘客也就是机票信息为0

当乘客订票以后会对应多张票

而一张机票至少对应一趟航班

最多对应一趟航班

说明航班和乘客之间是1对多联系

乘客是多的一方

通过数据需求分析E-R模型建立完成了

但是要怎样将E-R模型转换成关系模型呢

就需要用到我们之前学过的转换规则

首先

四个实体

乘客

航班

座位和登机口

分别映射成一张关系表

每个实体有一个主键

航班实体中的复合属性

用它的单值属性代替

转换成两个列

在本例中没有考虑多值属性

然后我们再来分析实体之间的联系

Has_Seat是一个1对多联系

根据转换规则

在Seats表中

添加Flights表的主键flightno

并定义为外键

一个座位至少对应一趟航班

所以该外键不可为空

并且由于Seats是依赖于Flights的弱实体

seatno和flightno共同组成Seats表的主键

Seat_Assign是一个1对1联系

并且一端是强制参与

一端是可选参与

因此

在强制参与的一端添加外键

也就是在乘客表中添加座位表的主键

(seatno,flightno)

共同生成外键

该外键不可为空

Marshals联系是一个1对多联系

航班是多的一端

并且一趟航班至少有一个登机口

所以

在航班表中添加gateno作为外键

并且外键不能取空值

最后

再来分析Travels_On联系

这是一个1对多联系

乘客是多的一方

并且一张票至少对应一趟航班

因此

在乘客表中添加flightno作为外键

并且该外键不能为空

当我们看到flightno在乘客表中已经存在了

就不需要再添加了

好了

现在我们机票订票数据库中的关系模式

就建立好了

一共四张表

根据联系的分析

添加了一些外键

同学们现在理解E-R模型了吗

还有点疑惑的同学也不要着急

让我们再继续分析一个例子

这是一个图书借阅管理数据库

现有需求主要涉及到图书

读者和出版社三个实体

图书的属性有书号

书名

书号具有唯一性

是主属性

读者的属性有借书证号

姓名

身份证号

住址

电话

借书证号具有唯一性

每个读者只能有一个借书证号

它是主属性

出版社的属性有出版社名称

地址

联系电话

出版社名称具有唯一性

是主属性

接下来

我们分析实体之间的联系

每本图书只能有一个出版社出版发行

且至少有一个出版社信息

所以图书的最小基数是1

最大基数也是1

同时

我们知道一个出版社最多会出版多本图书

最少情况下

可能图书馆还没有该出版社出版的图书

最小基数为0

通过分析

图书和出版社之间是1对多联系

并且图书是多的一端

再来看下一段描述

每个读者可以同时借阅多本图书

也可以在不同时候借阅同一本图书

说明读者和图书之间存在借阅联系

并且一个读者可以在不同时间

多次借阅同一本书

同一本书当然可以被不同的读者借阅

因此读者和图书之间的的借阅联系

是多对多联系

同时

由于系统需要记录图书的借阅日期和归还日期

所以

为借阅联系添加两个附加属性

借阅日期和归还日期

将各个分E-R模型

合并后得到的总E-R模型

图书

出版社和读者三个实体

分别映射成一张关系表

图书表包含书号

书名两个列

其中书号是主键

出版社表包含出版社名称

联系电话

地址三个列

出版社名称是主键

读者表包含借书证号

姓名

身份证号

住址四个列

这里

从属性的基数分析看出

读者的电话可能没有

也可能有多个

因此

读者的电话是一个多值属性

根据转换规则2

单独创建一张新的读者电话表

该表由借书证号

电话两个列组成

并且这两个列的组合是新表的主键

再分析图书和出版社之间是1对多联系

一个出版社出版多本图书

因此

在图书表中添加出版社名称作为外键

并且该外键不能取空值

图书和读者之间的借阅联系

是一个多对多联系

根据转换规则3

创建新的借阅关系表

该表由借书证号

书号

借阅日期

归还日期四个列组成

借阅关系的主键应该是什么呢

是借书证号和书号的组合吗

需求中指出

同一个读者

在不同的时间多次借阅同一本书

这就导致借书证号和书号的组合

在借阅表中会重复出现

对的

就是要再添加借阅日期

借书证号

书号和借阅日期的组合

才是具有唯一性的

当然

在实际应用中

如果这么复杂的主键实在不好用

我们也考虑为借阅表单独再添加一个列

借阅编号

将它作为借阅表的主键

好了

通过前面章节的学习

我们已经知道了

怎样从现实世界中抽取数据需求

构建E-R模型

并从E-R模型转换为关系表

一个基本的数据库原型就已经建立起来了

但是现在模型是否还存在什么问题呢

设计数据库的基本原则是什么

我们将在后面的章节中再给大家详细讲解

好了

同学们

我们今天的课程就到这里

下节课再见

数据库概论课程列表:

导论

-数据库概述

--Video

-导论--数据库概述

第一章 数据库基础

-1.1 数据库基础

--Video

-第一章 数据库基础--1.1 数据库基础

第二章 关系运算

-2.1 CAP数据库

--CAP数据库

-第二章 关系运算--2.1 CAP数据库

-2.2 自然关系运算1

-- 自然关系运算1

-第二章 关系运算--2.2 自然关系运算1

-2.3 自然关系运算2

--自然关系运算2

-第二章 关系运算--2.3 自然关系运算2

第三章 结构化查询语言SQL

-3.1 SQL概述

-- SQL概述

-3.1 SQL概述--作业

-3.2 数据定义DDL

--数据定义DDL

-3.2 数据定义DDL--作业

-3.3 SQL数据更新DML

--SQL数据更新DML

-3.3 SQL数据更新DML--作业

-3.4 复杂SQL查询操作1

--复杂SQL查询操作1

-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1

-3.5 复杂SQL查询操作2

--复杂SQL查询操作2

-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2

第四章 数据库完整性、视图与安全性

-4.1 数据完整性

--4.1 数据完整性

-4.1 数据完整性--作业

-4.2 完整性约束

--完整性约束

-4.2 完整性约束--作业

-4.3 外键约束

--外键约束

-4.3 外键约束--作业

-4.4 触发器

--触发器

-4.4 触发器--作业

-4.5 视图

--视图

-4.5 视图--作业

-4.6 安全性

--安全性

-4.6 安全性--作业

第五章 索引

-5.1 索引

--Video

-5.2 B+树索引

--Video

第六章 规范化理论

-6.1 函数依赖

--Video

-6.2 Armstrong公理

--Video

-6.3 无损分解

--Video

-6.4 范式举例

--Video

-6.5 三种范式

--Video

-6.5 三种范式--作业

第七章 实体关系模型

-7.1-E-R模型概述

--E-R模型概述

-7.2 E-R模型详解

--Video

-7.3 E-R模型的拓展

--Video

-7.4 E-R模型实例分析

--Video

第八章 事务处理

-8.1 事务的ACID性质介绍

--ACID介绍

-8.1 事务的ACID性质介绍--作业

-8.2 事务经历

--事务经历

-8.2 事务经历--作业

-8.3 可串行化调度和前趋图

--可串行化调度和前趋图

-8.3 可串行化调度和前趋图--作业

-8.4 两阶段封锁

--两段锁协议

-8.4 两阶段封锁--作业

-8.5 隔离级别

--隔离级别

-8.5 隔离级别--作业

-8.6 事务恢复

--事务恢复

-8.6 事务恢复--作业

第九章 数据库应用与开发

-9.1 数据库使用介绍

--数据库使用介绍

-9.2 Java访问数据库

--Java访问数据库

-9.2 Java访问数据库--作业

第十章 其他数据库技术概述

-10.1 数据库新技术概述

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。