概念模型向逻辑模型的转换规则总结
内容中的“一方”、“多方”都是指实体意义上的一和多,而不是数字的一和多
这些规则都可以从业务实际意义出发推导,这里不赘述

文章目录

  • 一、一对多二元关系
    • (一)强实体——强实体
      • 1、联系无属性
      • 2、联系有属性
    • (二)强实体——弱实体
      • 1、强实体做一方,弱实体做多方
        • (1)联系无属性
        • (2)联系有属性
      • 2、强实体做多方,弱实体做一方
  • 二、一对一二元关系
    • (一)无属性的一对一二元关系
      • 1、强实体——强实体
        • (1)双方强制参与
        • (2)一方强制参与,一方可选参与
        • (3)双方可选参与
      • 2、强实体——弱实体
        • (1)双方强制参与
        • (2)一方强制参与,一方可选参与
          • A、强实体——可选参与、弱实体——强制参与
          • B、强实体——强制参与、弱实体——可选参与
        • (3)双方可选参与
    • (二)有属性的一对一二元关系
      • 1、强实体——强实体
        • (1)双方强制参与
        • (2)一方强制参与,一方可选参与
        • (3)双方可选参与
      • 2、强实体——弱实体
  • 三、多对多二元关系
  • 四、递归二元关系
    • (一)强实体——强实体
      • 1、一对多
      • 2、一对一
        • (1)双方强制参与
        • (2)一方强制参与,一方可选参与
        • (3)双方可选参与
      • 3、多对多
    • (二)强实体——弱实体
  • 五、多元关系
    • (一)基数都大于1
    • (二)基数不都大于1
  • 六、超子类关系
    • (一)强制非不相交
    • (二)强制不相交
    • (三)可选非不相交
    • (四)可选不相交
  • 七、复杂属性
    • (一)组合属性
      • 1、主关键字为组合属性
      • 1、非主关键字为组合属性
    • (二)多值属性
    • (三)导出属性
  • 八、主要规律总结
  • 总结

一、一对多二元关系

(一)强实体——强实体

1、联系无属性

一方的主关键字进入多方做为外部关键字

2、联系有属性

一方的主关键字进入多方做为外部关键字;
联系的属性进入多方

(二)强实体——弱实体

1、强实体做一方,弱实体做多方

(1)联系无属性

一方的主关键字进入多方做主关键字和外部关键字

(2)联系有属性

不存在这种情况,原因待会说

2、强实体做多方,弱实体做一方

不存在这种情况,原因如下:
①业务规定:弱实体依赖强实体,多方依赖一方,而不能反过来。
②假设存在这种情况,根据“八、主要规律总结”第①条,应该一方——弱实体的主关键字进入多方——强实体,但是弱实体没有主关键字,不能进入;同时,弱实体仍然会保持无主关键字的状态,违背了“八、主要规律总结”的第⑤条。

二、一对一二元关系

(一)无属性的一对一二元关系

1、强实体——强实体

(1)双方强制参与

报警:双向关系
解决:根据实际业务需求,设置为一方强制参与

(2)一方强制参与,一方可选参与

强制参与的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字(可选参与方的主关键字进入强制参与方)

(3)双方可选参与

受强制多的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字

2、强实体——弱实体

(1)双方强制参与

报警:双向关系限制
解决:合并两个实体为一个实体,其中原强实体的主关键字为新实体的主关键字

(2)一方强制参与,一方可选参与

A、强实体——可选参与、弱实体——强制参与

同强实体——强实体的一方强制参与、一方可选参与。
强制参与的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字和主关键字(可选参与方的主关键字进入强制参与方)

B、强实体——强制参与、弱实体——可选参与

不存在这样的情况,弱实体就不可能是可选参与
因为强制参与的做为被支配方,而支配方弱实体没有主关键字

(3)双方可选参与

不存在这样的情况,弱实体就不可能是可选参与

(二)有属性的一对一二元关系

1、强实体——强实体

(1)双方强制参与

报警:双向关系限制+无主标识符
解决:
方法1:和无属性的一对一二元关系,强——强双方强制参与处理相同;根据业务需要,改为一方强制参与,一方可选参与,这个是可行的。
方法2:和无属性的一对一二元关系,强——弱双方强制参与处理相同;这个是不可行的,因为强强不能合体。

(2)一方强制参与,一方可选参与

报警:双向关系限制+无主标识符
解决:
合并强制参与方和关系的属性做为新实体
可选参与方的主关键字进入强制参与方做外部关键字

(3)双方可选参与

报警:双向关系限制+无主标识符
解决:
受强制多的一方设为被支配方,支配方的主关键字进入被支配方做外部关键字

2、强实体——弱实体

不存在这样的情况

三、多对多二元关系

只有强实体——强实体能设置多对多二元关系
生成一个新实体表示关系,关系如果有属性,则属性做新实体的属性;
两边实体的主关键字做新实体的主关键字和外部关键字;
一个多对多联系变为两个一对多联系。
可以理解成多对多,关系变成弱实体,然后成为两个一对多强弱二元关系

四、递归二元关系

(一)强实体——强实体

1、一对多

主关键字的副本进入该实体做为外部关键字

2、一对一

(1)双方强制参与

报警:强制自反联系
无法修改

(2)一方强制参与,一方可选参与

报警:强制自反联系
无法修改

(3)双方可选参与

需要设置支配方
主关键字的副本进入该实体做为外部关键字

3、多对多

生成一个新实体代表联系
实体的主关键字做为新实体的主关键字和外部关键字
实体的主关键字的副本也做为新实体的主关键字和外部关键字
一个多对多联系变为两个一对多联系

(二)强实体——弱实体

不存在这样的情况
报错:自反依赖(自己不能依赖自己、自己不能既是弱实体又是强实体)

五、多元关系

(一)基数都大于1

生成一个新实体代表关系;
生成几个一对多关系;
一方的主关键字进入多方做主关键字和外部关键字

(二)基数不都大于1

不存在这样的情况(这个是规定)

六、超子类关系

(一)强制非不相交

合并两个子类和超类作为一个实体,新实体的属性等于子类和超类属性之和

(二)强制不相交

超类实体消失,超类的属性进入子类(伴随着这个“进入,”超类的主关键字做子类的主关键字)

(三)可选非不相交

合并两个子类为一个实体,超类实体的属性进入子类实体(伴随着这个“进入,”超类的主关键字做子类的主关键字)

(四)可选不相交

超类实体不消失,不合并子类,超类实体的属性进入子类实体(伴随着这个“进入,”超类的主关键字做子类的主关键字)

七、复杂属性

powerdesigner不能处理复杂属性,需要人工做一些操作

(一)组合属性

1、主关键字为组合属性

一般只会出现在多对多关系(等其他关系)转换后生成的新实体中。
无需多管,按照之前的方式转换关系,自动就生成了。

1、非主关键字为组合属性

如果出现这样的情况,那么应该在概念模型阶段就将组合属性拆分为若干简单属性

(二)多值属性

如果出现这样的情况,那么应该在概念模型阶段,设置一个新实体,实体的属性即原多值属性(可以做主关键字也可以不做主关键字),并删除原实体的多值属性,生成一个新的双方强制一对多关系,原实体的主关键字进入新实体做外部关键字(可能还会做主关键字)

(三)导出属性

导出属性在物理模型中设置计算规则即可

八、主要规律总结

①一方的主关键字进入多方做外部关键字
②强实体的主关键字进入弱实体做外部关键字和主关键字
③有属性退化成无属性;多对多、递归退化为二元;强弱退化为强强
④转换后的逻辑模型中每个实体都有主关键字,都与其他实体有联系
⑤弱实体依赖强实体,多方依赖一方
⑥一对多关系中,默认一方支配多方;一对一关系中,需要设置谁支配谁;多对多关系中没有支配关系
⑦受限制多的一方做为被支配方,支配方的主关键字进入被支配方做外部关键字。
⑧实体的合并:强实体和弱实体才能合并,强实体和强实体不能合并
实体和关系的属性合并:没有限制
⑨只有一对一的关系考虑参与性
可选方进入强制方

总结

上面的东西都是基于powerdesigner得出的结论规律
这样的优势很明显,很详细全面,面向实际应用;
这样的劣势也很明显,很杂乱无章,没有内在逻辑。

下面从另一个角度来看这个问题,并且脱离powerdesigner去考虑。

补充一个预备知识,可选参与和强制参与。
A和B的一个关系,A与0到n个B对应,B与1到n个A对应。
对于A来说,B是可选出现,所以A是可选参与;对于B来说,A是强制出现,所以B是强制参与。此时A是可选参与方,B是强制参与方。

即,对于甲来说,乙是什么出现,甲就是什么参与。

实体的联系通过外部关键字表示,
外部关键字是由一个实体(称为父实体)进入另一个实体(称为子实体)得到的,
如果子实体是一个弱实体,那么进入的主关键字不仅作为子实体的外部关键字还要作为其主关键字,
所以我们的目标就是确定父实体和子实体,
除此方式之外,还可以合并两个实体

一对多:
直接根据基数确定父实体和子实体;
一方做父实体,多方做子实体;

一对一:
因为基数都是1,所以要依靠参与性确定父实体和子实体;
当双方强制参与时:
如果一强实体一弱实体,则两个实体合并,如果关系有属性,则放入新实体。
如果两个强实体,则应根据业务需要改为一方强制参与。
当一方强制参与时:
可选参与方为父实体,强制参与方为子实体,如果关系有属性,属性放入子实体。
当双方可选参与时:
不存在一个强实体一个弱实体的情况。
如果两个强实体,则应根据业务需要设置受限制少的实体为父实体,受限制多的实体为子实体

多对多:
只有强实体——强实体能设置多对多二元关系
生成一个新实体表示关系,关系如果有属性,则属性做新实体的属性;
两边实体的主关键字做新实体的主关键字和外部关键字;
一个多对多联系变为两个一对多联系。

多元关系:
只有基数都大于1才能设置多元关系
生成一个新实体代表关系,关系的属性称为新实体的属性,若干实体的主关键字进入新实体做主关键字和外部关键字

概念模型向逻辑模型的转换规则相关推荐

  1. 【软件工程】概念模型、逻辑模型、物理模型

    随着系统开发的推进与成熟,系统模式可能代表了不同的细节层次. 系统的模式包含概念模型.逻辑模型.物理模型. 这部分不难令我想到数据库系统的模式分层与数据独立性涉及到的子模式.逻辑模式.物理模式. 概念 ...

  2. 数据库理论——概念模型、逻辑模型、物理模型

    概念模型.逻辑模型.物理模型 1.概念模型 在了解了用户的需求,用户的业务领域工作情况以后,经过分析和总结,提炼出来的用以描述用户业务需求的一些概念的东西. 如销售业务中的"客户" ...

  3. 数据库建模,概念模型、逻辑模型、物理模型的区别和转化

    关于数据库理论中概念模型.逻辑模型.物理模型之间的区别.随机复习上网并复习,并在此记录一下,数据库建模是对现实世界进行分析.抽象.并从中找出内在联系,进而确定数据库的结构. 1.概念模型:就是从现实世 ...

  4. 概念模型、逻辑模型和物理模型的重新理解

    还记得学习数据库系统原理时,米老师带着我们看了一二章.这其中主要讲的就是这三种模型.当时觉得自己可懂了.可是前几天师父在验收软工文档时说,来给我说说这三种模型吧,才发现自己连个一二三都说不出来,在风中 ...

  5. 关于数据库建模,概念模型、逻辑模型、物理模型的区别和转化

    一.关于数据库理论中概念模型.逻辑模型.物理模型之间的区别. 二.数据库建模是对现实世界进行分析.抽象.并从中找出内在联系,进而确定数据库的结构. 1.概念模型:就是从现实世界到信息世界的第一层抽象, ...

  6. 概念模型、逻辑模型、物理模型。

    在数据仓库中的含义 总的来说,数据仓库的结构采用了三级数据模型的方式,即概念模型.逻辑模型.物理模型. 概念模型:也就是业务模型,由企业决策者,商务领域知识专家和IT专家共同研究和分析企业级的跨领域业 ...

  7. 【架构设计】领域模型(概念模型) 、逻辑模型、物理模型、贫血模型、充血模型概念总结【待读与标记】

    本文选自: http://www.jianshu.com/p/fe45506ea358 http://blog.csdn.net/zsy_gemini/article/details/9060105 ...

  8. 概念模型,逻辑模型,物理模型

    自从接触到数据库到如今这三个概念大家理解的还有些不清楚,今天来为大家解答疑惑,共同提高,结合生活理解 概念模型 概念模型就是在了解了用户的需求,用户的业务领域工作情况以后,经过分析和总结,提炼出来的用 ...

  9. 数据模型|组成要素、概念模型、逻辑模型

    数据模型 文章目录 数据模型 组成要素 数据结构 数据操作 数据的完整性约束条件 概念模型 基本概念 表示方法 逻辑模型 层次模型 网状模型 关系模型 关系数据结构 关系操作集合 关系完整性约束 面向 ...

  10. 概念模型、逻辑模型和物理模型的区别

        一直对于概念.逻辑.物理这三个词一知半解.在自考和软考中都遇到了,总是搞混.下面.我们就一起来区分一下吧! 概念模型.     先来看一下概念的解释:人类在认识过程中,从感性认识上升到理性认识 ...

最新文章

  1. python技巧提升
  2. 我在交大的数学建模经验!
  3. 【Android UI设计与开发】第06期:底部菜单栏(一)使用TabActivity实现底部菜单栏
  4. 3,SQL语句及数据库优化
  5. jQuery框架学习第八天:ASP.NET jQuery实施方案
  6. Linux memcache操作命令
  7. Robocopy命令实现文件服务器每日镜像备份/增量备份操作
  8. 【转载】超级弹丸论破2再见绝望学园攻略
  9. 数据可视化--基于excel表格数据生成柱状图
  10. PyQt上位机软件开发简介
  11. 公开说说别人看不到_为什么我在QQ空间里面发表说说别人看不到
  12. 不讲废话,全程硬核,处理结构化数据的终极解决方案
  13. 关于linux网络编程的项目,linux网络编程入门
  14. MacBook Air(2012)维修笔记
  15. 开发版linux随身wifi,让linux下无线网卡变身随身wifi
  16. php获得当前时间差,PHP获取当前时间差8小时的问题
  17. 雷电3接口能干嘛_把雷电3插到TypeC接口了?不认识电脑接口的小伙伴看过来
  18. simkai.ttf 中文楷体文件
  19. consul kv迁移
  20. OO 之美:设计的分寸

热门文章

  1. bugku--never_give_up
  2. dnf 台服服务器pvf修改器,求教怎么用pvf修改器自制装备
  3. 计算机软件项目的效益预测,软件工程经济效益分析.doc
  4. c语言源文件经过编译后生成文件的后缀是什么?
  5. 机器学习中的数学——距离定义(一):欧几里得距离(Euclidean Distance)
  6. 小园丁与老司机_疲倦的园丁
  7. 【BZOJ4200】【NOI2015】小园丁与老司机(动态规划,网络流)
  8. 解决mininet运行报错“ImportError: No module named mininet.log”
  9. Cypress总结回顾
  10. 滴滴DSRC抢楼大赛,十一快车券飞起来