如何将ER图转化为关系模型(超详细、含例题)「建议收藏」

如何将ER图转化为关系模型(超详细、含例题)「建议收藏」本文转载自:http://blog.csdn.net/HaoDaWang/article/details/78098937?locationNum=4&fps=1超级感谢博主分享本篇博文中的例题只涉及到N:M和N:M:P的转换,大家看完后可以再去看下百度文库里面的这个例题,这个例题几个转换准则都用到了。https://wenku.baidu.com/view/33849a73a…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文转载自:http://blog.csdn.net/HaoDaWang/article/details/78098937?locationNum=4&fps=1 超级感谢博主分享

本篇博文中的例题只涉及到N:M和N:M:P的转换,大家看完后可以再去看下下面这几个例题

https://blog.csdn.net/Flora_SM/article/details/84645752


如何把ER模型转换为关系模型
这是数据库工程设计进行到逻辑设计的一重大环节,简单的说,如果概念设计是用ER模型, 整合为全局的ER模型,那么在逻辑设计这块, 主要任务就是把ER模型转换为关系模型。

转换只需知道三个转换准则:

1:1
遇到1:1 关系的话在两个实体任选一个添加另一个实体的主键即可。

1:N
1:N 遇到 1:N 关系的话在N端添加另一端的主键,假如有学生和班级两个实体,一个班级可以容纳多个学生,但是一个学生只能选择一个班级, 因此班级和学生是1:N的关系,现在要转换为关系模型, 我们只需在学生的这端加上班级的唯一标识即可,这样做的原因是,因为一个学生只能有一个班级,班级是相对学生唯一的。

N:M
遇到N:M我们需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。例如有学生和老师两个实体, 一个学生可以由多名老师来授课,一名老师也可以授课多名学生,它们是M:N关系的,假如联系为授课,该联系上有成绩属性,因此当我们把它转换为关系模型时,我们把联系转换为联系实体,并添加学生实体的主键(学号)和教师实体的主键(教师编号)作为自己的主键,值得注意的是,授课实体的外键分别是学号和教师编号,但是它的主键是(学号,教师编号),另外它还拥有自己的一个属性成绩。

1:1:N
这是三元联系的对应关系,但是当转换为关系模型时,和1:N的情况是差不多的。我们只需将N端添加另外两端的主键即可。

M:N:P
这种三元联系的三种多对应关系,看上去很复杂,其实转换起来并不是那么复杂了,我们要做的仅仅是将其中的联系转换为联系实体,然后在联系实体上添加M端N端P端的主键,然后加上联系实体自身的属性,就行了。

例子:
说了这么多看个小例子。
如何将ER图转化为关系模型(超详细、含例题)「建议收藏」
这是一份关于商店商品仓库的ER图。

先看仓库和商品之间是M:N的关系,于是我们首先想到的应该是把联系 库存转换为库存实体。
库存 (仓库号,商品号,日期,库存量)
然后是商品实体和仓库实体
商品(商品号,商品名,单价)
仓库(仓库号,仓库名,地址)

除此之外仓库和商品还有一个供应关系,同样是M:N关系:
供应 (仓库号,商品号 ,月份,月供应量)

在上图的商店和仓库之间的关系可能写漏了,但是它们应该也是M:N的关系,一个商店可以被多个仓库供应,一个仓库也可以供应多个商店。上面已经创建了供应实体,现在只需在供应实体中假如商店号即可,也就是商店实体的主键。

供应(仓库号,商品号,商店号 ,月份,月供应量)
商店(商店号,商店名,地址)

总结
至此,转换关系模型也完成了,当然这只是个例子,实际的开发中,我们可能会遇到各式各样奇怪的需求,这就更要求我们做好概念设计的环节,对后来的数据库设计和维护都有好处。ER图的好坏,始终是数据库设计的重要一节。


我的个人博客:www.fangjiaxian.cn

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190808.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QQ空间钓鱼源码_QQ空间视频提取值源码

    QQ空间钓鱼源码_QQ空间视频提取值源码IgotthiswebsitefrommypalwhosharedwithmeconcerningthiswebpageandatthemomentthistimeIamvisitingthiswebsiteandreadingveryinformativearticlesorreviewshere.回复thejjreport.com…

    2022年8月24日
    5
  • Clickhouse修改字段类型[通俗易懂]

    Clickhouse修改字段类型[通俗易懂]Clickhouse的列操作ALTERTABLE[db].name[ONCLUSTERcluster]ADD|DROP|CLEAR|COMMENT|MODIFYCOLUMN…在查询中,指定一个或多个逗号分隔操作的列表。每个操作都是对列的操作。支持以下操作:ADDCOLUMN—Addsanewcolumntothetable. DROPCOLUMN—Deletesthecolumn. CLEARCOLUMN—Resetscolum…

    2022年9月6日
    2
  • activiti 事件监听_js监听事件和处理事件

    activiti 事件监听_js监听事件和处理事件本文个人博客地址:Activiti7事件监听(leafage.top)好久没有记录笔记了,最近做了一些关于工作流的事情,记录一下使用activiti7的一些经验。需求:在流程发起和流程操作的过程中,给相关人员发送流程审批的通知提醒;不要在配置流程时手动添加,不能侵入到流程操作的过程,影响流程执行;这个怎么入手呢?没搞过activiti,activiti7的官方文档写的跟屎一样烂,感觉好难呀????…文档参考性不高,那就试试看官方的示例,找到activiti的repositor

    2022年10月7日
    0
  • Android2017-2018最新面试题(3-5年经验个人面试经历)

    2017-2018最新Android面试题版权声明:本文为博主原创文章,未经博主允许不得转载。原文链接:http://blog.csdn.net/huangqili1314/article/details/72792682大家好,在跟大家讲述自己的面试经历,以及遇到的面试题前,先说说几句题外话。接触Android已经3年,在工作中遇到疑难问题总是在网上(csdn大牛博客,stack…

    2022年4月10日
    40
  • spark处理大数据的几个实例介绍

    spark处理大数据的几个实例介绍在集群中跑应用,而不是在shell中感受写spark应用的过程整个过程为:1、案例分析:要用哪些spark的RDD的API2、编程实现:用到scala,3、提交到集群执行:如何提交到集群,文件是否先传到HDFS上4、监控执行结果:通过web可以看到介绍了四个案例:比如统计1千万个人的平均身高,如果用其他语言,估计要好几小时,因为磁盘读写,要反复计算用了sp

    2022年6月7日
    26
  • Vue学习之样式处理

    Vue学习之样式处理Vue学习之样式处理

    2022年4月23日
    32

发表回复

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

关注全栈程序员社区公众号