数据库:实体关系图(ER图)「建议收藏」

数据库:实体关系图(ER图)「建议收藏」1,组成元素元素 描述 表示形似 实体 客观存在并可以相互区别的事物 用矩形框,矩形框内写明实体名 属性 实体所具有的一个属性 用椭圆型表示,并用无向边将其与相应的实体连接起来 关系 实体和实体之间以及实体内部的关系 用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来, 同时在无向边旁边标上联系的类型 2,关系详解一,一对一一对一关系是指对于实体集A与实体集B,A中的每一个实体至多与B中

大家好,又见面了,我是你们的朋友全栈君。

1,组成元素

元素 描述 表示形似
实体 客观存在并可以相互区别的事物 用矩形框,矩形框内写明实体名
属性 实体所具有的一个属性 用椭圆型表示,并用无向边将其与相应的实体连接起来
关系 实体和实体之间以及实体内部的关系 用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁边标上联系的类型

2,关系详解

一对一:一对一关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

数据库:实体关系图(ER图)「建议收藏」

一对多:一对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。

数据库:实体关系图(ER图)「建议收藏」

多对多:多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。

数据库:实体关系图(ER图)「建议收藏」

3,实例详解

问题描述:

  • 一个学生可选修多门课,一门课有若干学生选修;
  • 一个教师可讲授多门课,一门课只有一个教师讲授;
  • 一个学生选修一门课,仅有一个成绩。
  • 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。

ER图:

数据库:实体关系图(ER图)「建议收藏」

4,ER图的集成

确定公共实体类型:一般仅根据实体型名称和主键来认定公共实体型,即把同名实体型作为一个候选的公共实体型或把具有相同主键的实体型也作为一个候选的公共实体型。

合并分ER图:采用逐步合并的方式,首先将两个具有公共实体型的分E-R图进行合并,然后每次将一个新的、与前面已合并的E-R图具有公共实体型的分ER图合并起来……这样即可最终获得全局的初步E-R图。

检查并消除冲突:各个局部应用所面向的问题不同,各个子系统的E-R图之间必定会存在许多不一致的地方,称之为冲突。冲突类型:属性冲突、命名冲突、结构冲突。

属性冲突 属性域冲突,即属性值的类型、取值范围或取值集合不同 零件号,有的部门把它定义为整数,有的部门把它定义为字符型。
属性取值单位冲突 零件的重量有的以公斤为单位,有的以斤为单位,有的以克为单位
解决办法 通过讨论、协商等行政手段加以解决。
命名冲突 同名异义,即不同意义的对象在不同的局部应用中具有相同的名字。 对科研项目,财务科称为项目,科研处称为课题,生产管理处称为工程。
异名同义(一义多名),即同一意义的对象在不同的局部应用中具有不同的名字。
通过讨论、协商等行政手段加以解决
结构冲突 同一对象在不同应用中具有不同的抽象 职工在某一局部应用中被当作实体,而在另一局部应用中则被当作属性
把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象
一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同。 实体E1在ER1中三个属性,在ER2中四个属性。
使该实体的属性取各子系统的E-R图中属性的并集,再适当调整属性的次序。
实体间的联系在不同的E-R图中为不同的类型。 实体E1E2在一个E-R图中是多对多联系,在另一个E-R图中是一对多联系
是根据应用的语义对实体联系的类型进行综合或调整。

5,ER图的优化

所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。

(1)实体型的合并,以减少实体类型的个数:合并不是指前面的“公共实体型”的分E-R图的合并, 而是指两个有联系的实体型的合并。

例如:两个具有1:1联系的实体型通常可以合并成一个实体型。

对于具有相同主键的两个实体型, 如果经常需要同时处理它们, 则也可以将它们合并, 但可能产生大量的空值。

(2)尽可能消除实体中的冗余属性:通常在各个分E-R图中是不允许冗余属性存在的, 但在合并为全局的初步E-R图以后, 可能产生全局范围的冗余属性。

例如:在某大学的数据库设计中, 一个分E-R图中可能有已毕业学生数、招生数、在校学生数和即将毕业的学生数,而另一个分E-R图中可能有毕业学生数、招生数、各年级在校学生数和即将毕业学生数,则这两个分E-R图自身都没有冗余,但合并为一个全局E-R图时,“在校学生数”就成为冗余属性,因此可以考虑将其删除。

(3)尽可能消除冗余的联系:除分析的方法外, 还可应用规范化理论来发现和消除冗余的联系。

确定分E-R图实体之间的数据依赖。实体之间一对一、一对多、多对多的联系可以用实体码之间的函数依赖来表示。于是有函数依赖集FL

求FL的最小覆盖GL,差集为 D=FL-GL。逐一考察D中的函数依赖,确定是否是冗余的联系,若是,就把它去掉。

例如:部门和职工之间有一个一对一的 “领导”联系和一个一对多的“属于”联系 , 其“属于”联系表示为:  职工号→部门号。而其“领导”联系则应表示为:负责人.职工号→部门号  或  部门号→负责人.职工号。

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

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

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


相关推荐

  • 爱的思念与牵挂_惦记牵挂短语

    爱的思念与牵挂_惦记牵挂短语爱和喜欢是同等的,由喜欢到真诚,由真诚到爱,是一个即复杂又简单的过程;说复杂,爱又是简单的;说简单,爱又是真诚,思念,挂念的综合;我挂念她;挂念她的一切;她心情不好了;我挂念她是否生意上有什么难处;她心情不好了;我挂念她是否又遇到什么烦心的事,我挂念她的身体,她经常头疼;是不是有因为什么事烦了她;是不是有什么人无谓的惹她生气;我让她好好休息,我祈祷一切烦恼远离她;我知道她心很软;知道她心很善良;知

    2022年9月20日
    0
  • python和c++哪个好_python地名识别

    python和c++哪个好_python地名识别Ctrl+N按文件名搜索py文件ctrl+n可以搜索py文件勾选上面这个框可以搜索工程以外的文件Ctrl+shift+N按文件名搜索所有类型的文件Ctrl+shift+N可以搜索py文件,也可以搜索其它类型的文件。除了搜索不同类型的文件,Ctrl+shift+N还有一个强大之处是可以搜索路径,只需要在你搜索的词前面或后面加上/ctrl+shift+f全局字符串搜索这种搜索的名字叫做”fin…

    2022年8月28日
    1
  • Android :ScaleAnimation「建议收藏」

    Android :ScaleAnimation「建议收藏」publicScaleAnimation(floatfromX,floattoX,floatfromY,floattoY,intpivotXType,floatpivotXValue,intpivotYType,floatpivotYValue)ScaleAnimation类是Android系统中的尺寸变化动画类,用于控制View对象的尺寸变化参数说明

    2022年10月16日
    0
  • 近场动力学matlab程序_一阶惯性环节matlab

    近场动力学matlab程序_一阶惯性环节matlab本发明属于过程控制技术领域,尤其涉及一种镇定一阶惯性加纯滞后系统的线性自抗扰控制器设计方法,进一步涉及一种用于具有时滞的工业过程控制系统的自抗扰控制器设计方法。背景技术:时滞作为一种常见的物理现象,在工业过程和生产生活中随处可见,例如管道对油气的输送、线缆对信号的传递、锅炉的燃烧等过程。这一类过程具有的共性即被控量不能立即对控制量的作用做出反应,这样的特点决定了被控对象输入与输出之间不同步的开环特…

    2022年9月27日
    0
  • dns地址和ip地址的区别_ip地址和域名一样吗

    dns地址和ip地址的区别_ip地址和域名一样吗IP:每个连接到Internet上的主机都会分配一个IP地址,此ip是该计算机在互联网上的逻辑地址的唯一标识,计算机之间的访问就是通过IP地址来进行的。写法:十进制的形式,用“.”分开,叫做“点分十进制表示法”,如:127.0.0.1。IP地址采用二进制的形式表示的话很长,比较麻烦,为了便于使用,IP地址经常被写成十进制的形式。域名:ip是数字标识,使用时不好记忆和书写,因此在将IP地址符号化…

    2022年9月1日
    0
  • django drf_golang源码分析

    django drf_golang源码分析序列化与反序列化一般后端数据返回给前端的数据格式都是json格式,简单易懂,但是我们使用的语言本身并不是json格式,像我们使用的Python如果直接返回给前端,前端用的javascript语言是识

    2022年7月30日
    2

发表回复

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

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