一步一步设计你的数据库之纵览高级ER模型 (一步一步设计妈妈的最后防线)

教程大全 2025-07-12 05:21:46 浏览

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

泛化(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之间的聚合关系

一步一步设计库之纵览高级ER模型 三元关系(Ternary Relationships)

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

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

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

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

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

图4中蕴含的语义为:

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

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

图5中蕴含的语义为:

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

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

图6中蕴含的语义为:

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

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

图7中蕴含的语义为:

图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 排他性约束关系图例

原文链接:

【编辑推荐】


SQL的ER图结构转换表个数

对于1:N联系,则产生两个表,并且在其中一个中创建一个外键如果是M∶N联系,则每个实体是一个表,然后把联系单独创建一个表,并用两个实体的主键联合作为主键,因此是3个表

一亩地是什么概念。五十亩又是什么概念,相当于多大?

亩是中国市制土地面积单位,一亩地等于六十平方丈,大约666.67平方米;50亩约等于.3平方米,用概念来形容的话就是一般足球场的中间区域大约为20亩,50亩就相当于两个半那么大。 可以自己想象一下。 拓展资料单位换算1亩=10分;1亩=60平方丈=6000平方尺;1米=3尺;1平方米=9平方尺;倒过来 1平方尺=1/9 平方米;所以 1亩=6000/9 平方米;1分=600/9 平方米=66.67平方米平方米换为亩,计算口诀为“加半左移三”。 1平方米=0.0015亩,如128平方米等于多少亩?计算方法是先用128加128的一半:128+64=192,再把小数点左移3位,即得出128平方米的亩数为0.192。 亩换平方米,计算口诀为“除以三加倍右移三”。 如要计算24.6亩等于多少平方米,24.6÷3=8.2,8.2加倍后为16.4,然后再将小数点右移3位,即得出平方米数为参考资料亩 (度量)——网络百科

博客数据库的逻辑关系怎么做ER图?

事实上,你的理解有误差。

ER图,不是依靠数据库做出来的。

ER图,要依据用户需求以及用户流向,以及用户操作以及功能来划分的。

而数据库,则是最终产物。

博客模块,也可以划分:

登录——》身份——》授权(根据角色)

——》用户操作(写文章,编辑,删除。 。 。 )

——》用户异常中断OR正常退出

——》用户流程结束。

这其中,ER图,就要根据关系去展示,

用户登录,如何同你的用户角色以及权限设置以及资源去关联;

这才是你要考虑的设计问题。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐