当前课程知识点:数据库概论 > 第七章 实体关系模型 > 7.3 E-R模型的拓展 > Video
同学们
大家好
我是云南大学软件学院的教师何婧
E-R模型是描述现实世界的一种概念模型
在前面的课程中
我们学习了常用的E-R模型
然而现实世界中
对象和对象之间的关系是多种多样的
本节我们将给大家介绍一些
扩展的E-R模型知识
主要包括属性的基数
弱实体
一元递归模型
复杂的多元模型
以及泛化模型
首先
我们学习什么是属性的基数
回顾一下上一节中学过的内容
假如实体E和实体F具有R联系
那么实体E参与到联系R中的基数
表示实体E中的一个实例
最少与实体F中的多少个实例有联系
最多与实体F中的多少个实例有联系
同样的
属性的基数也可以划分为
最大基数和最小基数
表示一个实体实例在该属性上的取值个数
假设最小基数为0
则表示实体在该属性上的取值可能为空值
该属性是可选参与的
反之
最小基数为1
则表示实体在该属性上的取值
是不能为空值的
相应的
如果一个属性的最大基数为1
则表示该属性是一个单值属性
最大基数为N则表示这是一个多值属性
例如
我们之前分析过的员工实体
员工的爱好的最大基数为N
最小基数为1
说明它是一个多值属性
而且至少要填写一个爱好
不能为空值
再比如员工的地址属性
它的最大基数为1
最小基数为0
表明员工的地址属性可以为空
如果有值的话就只需要填写一个地址信息
我们注意到地址属性是一个复合属性
由街道
城市
邮编等单值属性组成
每一个单值属性的最小基数
和最大基数都是1
那么在地址属性有值时
这些单值属性都是必须要填写的
不能取空值
接下来我们来分析一下什么是弱实体
假设有两个实体E和F
实体E的实体实例是否存在
依赖于实体F中的实体实例
就说明实体E是一个弱实体
实体F是一个强实体
例如
订单实体和订单明细实体
是否存在订单明细信息
依赖于是否有相应的订单信息
当一条订单记录删除后
其对应的订单明细信息也应该删除掉
这样我们就说订单是一个强实体
而订单明细是一个弱实体
订单和订单明细之间是一种1对多的联系
转换成关系模型时
应该在订单明细表中添加订单表的主键
并将它设定成外键
在前面的学习中
我们分析的主要是两个实体之间的联系
事实上
有些联系是一个实体内各个实例之间的联系
有些联系是多个实体之间的联系
一元递归模型指的就是一个实体内部的联系
例如
员工实体内部的管理联系
由于企业的组织架构通常是一种树形结构
员工之间就存在了上下级的关系
从管理的角度来看
一名担任领导职务的员工最多可以管理N个人
一名普通员工管理0个人
从下级向上级汇报的角度来看
一名普通员工的直接上级最多就是1个人
最少情况下
企业的最高领导没有上级
怎样将一元递归联系转换成关系表呢
从上一节学过的知识可知
这和联系的类型相关
对员工实体的管理联系而言
这是一个1对多联系
管理是1的那一方
汇报是多的那方
应该在员工表上添加一个负责人属性列
保存每一个员工的直接上级的员工编号
有些联系是两个实体之间的
有些联系是一个实体内部的
那么还有一些联系是多个实体间存在的
称为多元联系
也称为多元模型
例如
在前面的课程中
我们学习过的CAP数据库
顾客是一个实体
代理商是一个实体
商品是一个实体
那么订购就是三个实体之间的联系
表示一个顾客
通过某个代理商订购了什么商品
我们来分析订购联系的基数
因为一个顾客
可以通过多个代理商订购多种商品
顾客对订购是一种(0,N)的联系
一个代理商可以向多个顾客提供多种商品
代理商对订购是一种(0,N)的联系
一种商品可以被多个顾客
和多个代理商购买
所以商品对订购也是一种(0,N)的联系
通过分析
得出订购是一种多对多联系
因此订购联系单独生成了一张订单关系表
表中包含了顾客
代理商和商品三个实体的主键列
并且这三个主键列在订单表中都是外键
可见联系可以是一元联系
二元联系
多元联系
但联系的类型始终是1对1联系
1对多联系
或者多对多联系
最后我们还会看到一种
具有泛化层次的E-R模型
例如
人员信息
在不同的需求中有不同的处理方式
如果对所有的人员而言
我们需要保存的都是他们的基础信息
那么可以简单的将它处理成一个人员实体
但是
在实际需求中
根据业务的不同
不同的人员往往需要与
不同的实体具有联系
需要保存不同的特殊信息
比如学校里的人员
有些是学生
有些是教师
有些是行政办公人员
他们需要保存一些不一样的属性信息
学生要保存专业和绩点
教师要保存所属部门和职称
行政人员要保存当前的工作状态
是专职还是兼职
那么就应该将人员实体划分为
三个不同的实体
这就形成了一种泛化层次模型
针对泛化层次模型怎样转换成关系表
还要具体来看泛化的联系类型
第一种情况
假如父层实体中的实例
都能够保存到子层实体中
并且孩子层实体是相互独立的
那么就根据孩子实体的个数
分别生成一张关系表
如果有些孩子实体区别较小
也可以将他们合并为一个实体
第二种情况
假如父层实体中的实例
有些不能保存到子层实体中
那么
父层实体仍然需要单独建立一张关系表
孩子层实体则根据他们是否存在
相互数据重叠来区分是
每个孩子建立一张关系表
还是有些孩子实体合并成一张关系表
在学校人员的这个例子中
对人员信息分别建立三张关系表
他们是学生表
教师表和行政人员表
好了
现在我们就基本掌握了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
-3.1 SQL概述
-- SQL概述
-3.1 SQL概述--作业
-3.2 数据定义DDL
--数据定义DDL
-3.2 数据定义DDL--作业
-3.3 SQL数据更新DML
-3.3 SQL数据更新DML--作业
-3.4 复杂SQL查询操作1
-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1
-3.5 复杂SQL查询操作2
-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2
-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访问数据库
-9.2 Java访问数据库--作业
-10.1 数据库新技术概述
--Video