一步一步设计你的数据库之纵览高级ER模型

 

引言:《一步一步设计你的数据库三》中我们讨论了基本实体关系模型构件及其语义。这些概念非常重要,是今天这一讲的基础,在开始本文内容之前建议大家可以再回顾一下上一篇的内容。今天我们将讨论高级实体关系模型构件,与上一篇一起涵盖了ER模型构图的大部分内容。三元关系是今天这一讲的难点,大家可以重点关注。

[[28214]] 

泛化(Generalization):超类型与子类型

原始的ER模型已经能描述基本的数据和关系,但泛化(Generalization)概念的引入能方便多个概念数据模型的集成。

泛化关系是指抽取多个实体的共同属性作为超类实体。泛化层次关系中的低层次实体——子类型,对超类实体中的属性进行继承与添加,子类型特殊化了超类型。

ER模型中的泛化与面向对象编程中的继承概念相似,但其标记法(构图方式)有些差异。

下图表示员工与经理、工程师、技术员、秘书之间的泛化关系。Employee为超类实体,并包含共同属性,Manager、Engineer、Technician、Secretary都是Employee的子类实体,它们能包含自身特有的属性。

 

图1  Employee与Manager、Engineer、Technician、Secretary之间的泛化关系

泛化可以表达子类型的两种重要约束,重叠性约束(disjointness)与完备性约束(completeness)。

重叠性约束表示各个子类型之间是否是排他的。若为排他的则用字母“d”标识,否则用“o”标识(o -> overlap)。图1中各子类实体概念上是排他的。

对员工、客户实体进行泛化,抽象出超类实体个人,得到如下关系图。由于部分Employee也可能是Customer,故子类实体Employee与Customer之间概念是重叠的。

 

图2  Individual与Employee、Customer之间的泛化关系

完备性约束表示所有子类型在当前系统中是否能完全覆盖超类型。若能完全覆盖则在超类型与圆圈之间用双线标识(可以把双线理解为等号)。在图2中子类实体Employee与Customer能完全覆盖超类Individual实体。

聚合(Aggregation)

聚合是与泛化抽象不同的另一种超类型与子类型间的抽象。

泛化表示“is-a”语义,聚合表示“part-of”语义。聚合中子类型与超类型间没有继承关系。

聚合关系的标记法是在圆圈中标识字母“A”来表示。

下图表示软件产品由程序与用户手册组成。

 

图3  Software-product与Program、User’s Guide之间的聚合关系

三元关系(Ternary Relationships)

当通过二元关系无法准确描述三个实体间的联系时,我们需要使用三元关系。

三元关系中“连通数”的确定方法:

  1.  以三元关系中的一个实体作为中心,假设另两个实体都只有一个实例
  2. 若中心实体只有一个实例能与另两个实体的一个实例进行关联,则中心实体的连通数为“一”
  3. 若中心实体有多于一个实例能与另两个实体实例进行关联,则中心实体的连通数为“多”

注:什么时候需要使用三元关系的实例请参看:《一步一步设计你的数据库三》中的“关系的度(Degree of a Relationship)”小节。关系的“连通数”概念请参看:《一步一步设计你的数据库三》的“关系的连通数(Connectivity of a Relationship)”小节。

我们来看几个三元关系的实例,注意各个图中关系的度,并理解其中的语义。

 

图4  技术员在项目中使用手册的关系

图4中蕴含的语义为:

  1. 一名技术员对于每一个项目使用一本手册
  2. 每一本手册对于每一个项目属于一名技术员
  3. 一名技术员可能在做多个项目,对于不同的项目维护不同的手册

用数学中的函数依赖表示图4的关系:

  1. emp-id, project-name -> notebook-no
  2. emp-id, notebook-no -> project-name
  3. project-name, notebook-no -> emp-id

 

图5  员工被分配不同地点的项目之间的关系

图5中蕴含的语义为:

  1. 每一个员工在一个地点只能被分配一个项目,但可以在不同地点做不同的项目
  2. 在一个特定的地点,一个员工只能做一个项目
  3. 在一个特定的地点,一个项目可以由多个员工来做

用数学中的函数依赖表示图5的关系:

  1. emp-id, loc-name -> project-name
  2. emp-id, project-name -> loc-name

 

图6  经理管理项目与工程师的关系

图6中蕴含的语义为:

  1. 一名经理手下的一名工程师可能参与多个项目
  2. 一名经理管理的一个项目可能会有多名工程师
  3. 做某一个项目的一名工程师只会有一名经理

用数学中的函数依赖表示图6的关系:

  1. project-name, emp-id -> mgr-id

 

图7  员工在项目中使用技能的关系

图7中蕴含的语义为:

  1. 一名员工在一个项目中可以使用多种技能
  2. 一名员工的一种技能可以在多个项目中使用
  3. 一种技能在一个项目中可以被多名员工使用

图7各实体之间没有函数依赖

上述4种形式的三元关系,连通数为“一”的实体数量与该三元关系反映的函数依赖语义的数目一致。

三元关系也能有属性。属性值由三个实体的键的组合唯一确定。

n元关系(General n-ary Relationships)

三元关系可以扩展到n元关系,描述n个实体之间的关系。

一般而言,n元关系中每一个连通数为“一”的实体的键都会出现在一个函数依赖表达式的右侧。

对于n元关系,使用语言来表达其中的约束相对较为困难。建议使用数学形式即函数依赖(FD)来表现。

n元关系的函数依赖条目数量与关系图中“一”端实体的数量相同(0~n条)。

n元关系的函数依赖表达式包含n个元素,n-1个元素出现在表达式左侧,1个元素出现在右侧。

 

图8  n元关系图例

排他性约束(Exclusion Constraint)

一般(默认)情况下,多种关系之间是兼容的“或”关系,即允许任意或所有实体参与这些关系。

在某些情况下,多种关系之间是非兼容性“或”关系,即参与关系的实体只能选择其中一种关系,不能同时选择多种关系。

下图表示的语义为:一项工作任务要么被归为外部项目中,要么被归为内部项目中,不可能同时属于外部项目和内部项目。

 

图9  排他性约束关系图例

 

我们对上一篇《一步一步设计你的数据库三》与本篇的重点内容做一个总的回顾

  1. 我们讨论了ER模型及构图的基本概念
  2. 一个实体可以是一个人,地方,东西或事件
  3. 属性是实体的描述信息
  4. 属性可以是唯一标识或非唯一的描述
  5. 关系描述了实体之间“一对一”,“一对多”,“多对多”的联系
  6. 关系的度反映了参与关系的实体数量,如二元关系,三元关系,n元关系
  7. 角色(名)定义了一个实体在一个关系中所具有的功能
  8. 关系的存在概念表示一个实体在关系中是强制存在还是可选的
  9. 泛化允许把实体抽象成超类与子类
  10. 三元关系可使用函数依赖来定义

原文链接:http://www.cnblogs.com/DBFocus/archive/2011/05/07/2039674.html

 

【编辑推荐】

  1. 一步一步设计你的数据库一
  2. 一步一步设计你的数据库二
  3. 一步一步设计你的数据库三
  4. 数据库设计,你了解多少
  5. 几步走,教你创建简单访问数据库方法

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/260560.html<

(0)
管理的头像管理
上一篇2025-05-03 05:29
下一篇 2025-05-03 05:30

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注