当前课程知识点:数据库概论 >  第七章 实体关系模型 >  7.1-E-R模型概述 >  E-R模型概述

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

E-R模型概述在线视频

E-R模型概述

下一节:Video

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

E-R模型概述课程教案、知识点、字幕

同学们

大家好

我是云南大学软件学院的教师何婧

在接下来的课程中

将由我为大家介绍数据库设计的相关知识

通过前面课程的学习

相信大家对数据库已经不再陌生

在我们的日常生活中

随处可以看到数据库的身影

当我们去图书馆借书时

我们要用到图书管理数据库

当我们在每一个学期进行选课时

我们要用到选课数据库

那么

这些数据库究竟是怎么设计出来的

需要掌握哪些原理和方法呢

例如

一个简单的学生-课程数据库

最起码应该包括学生信息

课程信息

以及学生选修课程以后得到的成绩信息

将这些信息

全部放在一张数据表合理吗

为了解答这些问题

在本章我将为大家介绍

数据库设计的E-R模型

和规范化方法

在E-R模型部分

我们重点思考以下问题

怎样分析应用中的数据需求

怎样找到数据库的数据项

怎样将数据项映射成为关系表

E-R模型又称为实体-联系模型

是一种用于描述现实世界的概念模型

最早由美籍华裔科学家Peter Chen

于1976年提出

于1976年提出

在前面的课程中

我们学习了基本的数据建模流程

也就是说

为了将现实世界中的具体事物抽象

组织为某一数据库管理系统

支持的数据模型

人们首先要将现实世界抽象为信息世界

然后将信息世界转换为机器世界

也就是先根据现实世界建立概念模型

再基于概念模型建立数据模型

F-R模型就是一种重要的概念模型

在E-R模型中有三个要素

分别是实体

属性

和联系

在这一节中

我们将重点学习E-R模型的基本概念

E-R图的表示方法

以及E-R模型

到关系模型的基本转换规则

实体是现实世界中具有公共属性

又互相可区分的一组对象的集合

例如

学生-课程数据库中的“学生”

是一个实体

“教师”是一个实体

“课程”是一个实体

每个学生是独立不同的个体

但在系统中我们都需要记录他们的学号

姓名

性别

专业等信息

因此

学生的集合构成一个“学生”实体

一个学生则称为是一个“实体实例”

针对“课程”实体

我们发现

同一门课程会在不同的学年重复开设

也就是说

在教学计划不变的情况下

课程的基本属性

如课程名称

课程性质

课程学分不会发生变化

但是在每一学期的开课表中

该课程的具体上课地点

和上课时间会不一样

任课教师也会不一样

并且还存在同一门课程

在同一学期开设了多个班的情况

基于这些需求分析

我们知道学生-课程数据库中

还应该有开设课程实体

叫做Courses_section

Courses实体表示的是课程的基本信息

Course_section实体则表示的是

课程在各个学期的具体开设信息

同时

为了记录课程的上课教室

又发现了一个Class_rooms实体

可见

怎样发现实体

需要深入分析应用需求

找到需求中隐含的各种数据信息

实体有可能对应一类数据对象

也有可能对应一个业务应用。

属性是描述实体特性或联系特性的数据项

在图中

矩形表示的是实体

椭圆表示的是属性

实体和属性之间用实线连接起来

例如

sid和student_name是学生实体的属性

eid

hobbies

emp_address是员工实体的属性

我们也看到

有些属性的标识不一样

用下划线标识出来的是实体的主属性

例如

sid是学生实体的主属性

eid是员工实体的主属性

由一组简单属性共同描述的属性称为

“复合属性”

例如

学生实体中的student_name它由lname

fname和 midinitial三个属性组成

员工实体中的emp_address由stadress

City

State

zipcode四个属性组成

用双线连接的属性称为“多值属性”

它表示一个实体实例在该属性

可能会有多个不同的取值

例如

员工实体中的hobbies属性

一个员工可能有一个爱好

也可能有多个爱好

小结

在E-R图中

采用矩形表示实体

用椭圆表示属性

属性与对应的实体之间用直线连接

复合属性也用椭圆表示

并与实体直接连接

属于该复合属性的单值属性用椭圆表示

与对应的复合属性直接连接

多值属性也用椭圆表示

并用双实线连接到对应实体

到目前为止

我们对E-R模型中的两个要素

实体和属性进行了学习

那么

怎样将概念模型中的实体和属性

转换成关系模型呢

转换规则1

一个实体映射成为一张关系表

实体的单值属性映射成为表的列

复合属性则将它对应的

多个单值属性映射成为多个列

例如

我们在图中看到的学生和员工实体

分别映射成为了两张表

students中的主属性sid映射为表的主键

复合属性student_name则将它对应的

三个单值属性分别映射成为表中的列

最终students表包含sid

lname

fname

midiaitia四个列

同理

员工表由eid,

Staddress

city

state

zipcode五个列组成

这里

我们是否缺少了什么呢

对的

员工表中还有一个属性hobbies不见了

这是一个多值属性

怎样将它转换成为关系模型

是一个值得思考的问题

将它直接映射成为表中的一个列吗

好像有点问题

在关系模型的定义中

我们学过

关系模型的单元具有原子性

也就是任意一行

在一个列上的值只能有一个

而前面的分析中我们知道

一个员工可能有多个爱好

这个取值显然不止一个

因此

将多值属性映射成为表中的一个列

不符合关系模型的定义

那么

将多值属性hobbies映射成为多个列吗

似乎可以

但是我们又发现

一个员工最多有多少个爱好

并没有确定

那究竟应该映射成为多少个hobbie列

也就无法确定了

列太少

会导致有些员工的hobbie信息无法保存

列太多

又导致大量的空间浪费

因此

下面我们会看到转换规则2

转换规则2

给定一个实体E

其主属性为p

实体E中有一个多值属性a

那么多值属性将映射成为一张新表

新表至少包含两个属性p和a

例如

hobbies

由eid和hobby两个列组成

这张新表的主键是eid和hobby的组合

新表中的eid是一个外键

对应员工表中的主键eid

这样

通过eid保留了employees表

和hobbies表之间的关联关系

而hobbies单独建立一张表

一个员工有多少个爱好

就可以对应hobbies表中的多少行

并可以灵活的添加和删除

解决了前面我们分析到的

复合属性只对应一个列

或者对应多个列存在的问题。

好了

现在我们已经学习了

E-R模型中的实体和属性

接下来

让我们再一起来了解一下联系

从定义中我们可以看出

“联系”表示实体之间的关联关系

在E-R图中联系用菱形表示

例如

教师实体和开设课程实体

之间存在讲授的联系

表示教师和开设的课程之间

存在讲授关系

同理

员工和项目之间存在工作关系

员工和员工之间存在管理关系

但是

我们又看到这三个图示之间有一些不同

works_on联系上还有一个属性percent

联系上的属性称为附加属性

表示当员工和项目之间产生工作关系时

要记录员工在项目上的工作时长

这也就意味着

在实际需求中

一个员工可以在不同的项目上工作

并且在不同项目上工作的时间长度不一样

另外

我们还看到teaches和works_on

都表示的是两个实体之间的联系

叫做二元联系

员工和员工的manages联系则是

同一个实体的实体实例之间存在的联系

称为一元联系

或者环

递归联系

表示作为主管的员工对其他员工

有管理关系

普通员工对主管有汇报关系

现在

我们初步了解了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

E-R模型概述笔记与讨论

也许你还感兴趣的课程:

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