数据库设计系列5---关系建模

简介:
标示了数据库系统的实体之后,下一步骤就是标示实体之间的关系,以及存在于关系之上的约束。这种约束的例子包括:一个分公司必须有多名会员,每个分公司都必须有员工,关系上的约束类型称为多样性。多样性的定义为:一个实体中可能和相关实体的一个存在关联的实体事件的数目。
       最常用的关系是度为2的二元关系,二元关系上的多样性约束一般分为一对一,一对多,多对多三种。使用以下的业务规则来考查这三种类型的关系,一名员工管理一个分公司,一个分公司有许多员工,演员出演某部影片。对于每个业务规则,我们说明在没有明确制定的情况下找到其中的多样性约束,并说明怎样在ER模型中表示他们。
1.        一对一关系是最常见的关系,比如一名员工管理一个分公司,但是并不是所有的员工都有分公司可以管理,如下图表示:
一个员工管理一个单位,找出多样性通常需要用样例数据检查特定事务规则的数据之间的关系,可以从填好的表格,报表甚至从与用户的讨论中得到样例数据。为了得出正确的结论,强调被检查和讨论的样例数据能够真实地代表所有数据是非常重要的。
       为了图形化表示1:1关系的,在关系的两端放上,0..1或者1..1表示他们之间的描述关系,为了表示一个员工管理01个公司,在Branch的一端放上0..1的字样,为了表示一个分公司必须由一个员工管理,在Staff的一端放上1..1,在上图中左边的   表示0..1,同时也表示是可选参与,即当Staff的一个实体确定时,他所管理的分公司可以有,或者没有。而在右边的  表示当一个Branch确定的时候,必须有一个Staff员工来进行管理,即参与。
2.一对多关系也比较常见,比如一个公司有多名员工的情况就属于一对多的关系。
为了表示 Branch Has Staff ,我们在实体 Staff 的一端标记 1..* ,表示一个公司 1 到多多名员工,而一个员工只属于一个分公司,在上图中,   表示 1..*, 如果知道多样性约束的最大值和最小值,则可以显示这些信息,例如一个分公司有 2-10 个员工,可以标记 2..20
1.        多对多约束,角色和拥有的权限之间的关系是一个典型的多对多关系,一个角色可以拥有多个权限,一个权限可以被分配到不同的角色中。使用 UML 图形的表示如下图所示:
为了图形化表示多对多的关系,在互相关联的实体分别标记 0..* ,如上图中的   所示,
1.        复杂关系的多样性约束。一般来说, n 元关系的多样性约束代表关系中其他 n-1 元关系固定的情况下某个实体潜在的实体事件的数目,
以上所描述的约束中,如果其他 n-1 元关系确定的情况下,某个实体的参与个数如果大于等一,则为强制参与,否则为可选参与,在一个关系中参与的实体的数目,成为关系的基数。
2.        关系中相关的性质称为关系上的属性,比如在课程和学生之间存在多对多的关系,在多对多的关系中存在分数这个属性,学生对应的某个课程有考试成绩。
ER 模型中的设计问题:
        ER 模型中可能存在如下的两种陷阱,扇形陷阱和深坑陷阱。
        扇形陷阱:从第三个实体与扇出的两个实体之间有 1..* 的关系,但是扇出的两个实体之间应该有直接关系以提供必要的关系,实际却没有,其形状如下图所示:
如一个工头负责多个工程,同时也管理多个民工,他们都是一对多的关系,民工和工程之间应该有直接的关系表明某个民工在某个工程上工作,但是却没有明确的说明。解决的办法是在工程和民工之间添加一个关系,表示民工在那个工地上工作。
深坑陷阱:一个模型,假设他们之间存在关系,但是这些实体之间不存在路径。深坑陷阱存在的地方是存在可选参与的关系组成了相关实体之间的路径,例如一个公司分配了若各个汽车,部分员工可以使用汽车,这样就有了如下的关系
由于并不是所有的员工都是用汽车,根据这个模型并不能看出来公司拥有多少员工,或者员工属于哪个公司。解决办法是在公司和员工之间添加一个关系,表明公司和员工之间的关系。
扇形陷阱和深坑陷阱之间的区别不是很好理解,在实际的设计中也很少出现此类陷阱。大致有个了解就可以了,不需要深究。
本文转自凌辉博客51CTO博客,原文链接http://blog.51cto.com/tianli/49417如需转载请自行联系原作者

lili00okok
相关文章
|
7天前
|
数据库
7.4关系数据库设计基础知识
7.4关系数据库设计基础知识
|
9月前
|
设计模式 Java uml
UML的六种关系-系统学习四
众所周知设计模式是程序界的内功心法,那么这内功心法中包含UML图(宏观部分)、场景(场段)、代码(实操),UML图中最重要的元素当属六大关系了至此有了小编的这边总结文章。
|
11月前
|
存储 SQL 数据可视化
「数据架构」什么是实体关系图(ERD)?
「数据架构」什么是实体关系图(ERD)?
|
存储 数据库
关系数据库设计核心
关系数据库设计核心
315 0
关系数据库设计核心
|
数据可视化 测试技术 uml
UML——概述(事物、关系、图)
UML——概述(事物、关系、图)
175 0
UML——概述(事物、关系、图)
量价关系分析
量价关系分析
305 0
量价关系分析
|
运维 测试技术 uml
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(一)
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(一)
335 0
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(一)
|
测试技术 uml
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(三)
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(三)
262 0
【UML 建模】UML建模语言入门-视图,事物,关系,通用机制(三)
|
存储 SQL NoSQL
一文搞定关系数据库设计要领,值得收藏!
本文讨论关系数据库设计相关的一些内容,涉及关系模型,表结构设计等内容,以学生选修课程讲述设计过程,在尽量讲清楚设计要领的前提下,简化设计内容。
一文搞定关系数据库设计要领,值得收藏!
|
SQL 数据库 机器学习/深度学习
数据库设计---PowerDesigner(物理模型和概念模型)
原文:数据库设计---PowerDesigner(物理模型和概念模型) 内容   第一种方法:概念模型转物理模型   1、首先新建模型--选择概念模型(CDM)     2、新建实体(学生和卡),设置相应的属性         3、一共四种关系(1:1,1:n,...
1895 0

热门文章

最新文章