首页 > 数据库 >如何画数据库ER图

如何画数据库ER图

时间:2024-04-23 18:33:36浏览次数:25  
标签:关系 联系 数据库 实体 学生 如何 ER 属性

ER图基本概念

ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。

实体(entity):
即数据模型中的数据对象(即数据表),用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance),例如学生实体里包括张三、李四等。
实体还会细分为弱实体和复合实体,一个实体必须依赖于另一个实体存在,那么前者是弱实体,后者是强实体,弱实体必须依赖强实体存在,例如上图的学生实体和成绩单实体,成绩单依赖于学生实体而存在,因此学生是强实体,而成绩单是弱实体。
弱实体和强实体的联系必然只有1:N或者1:1,这是由于弱实体完全依赖于强实体,强实体不存在,那么弱实体就不存在,所以弱实体是完全参与联系的,因此弱实体与联系之间的联系也是用的双线菱形。
复合实体也称联合实体或桥接实体,常常用于实现两个或多个实体间的M:N联系,它由每个关联实体的主码组成,用长方体内加一个菱形来表示。

属性(attribute):
即实体所具有的属性,例如学生具有姓名、学号、年级等属性,用椭圆形表示,属性分为唯一属性( unique attribute)和非唯一属性,唯一属性指的是唯一可用来标识该实体实例或者成员的属性,用下划线表示,一般来讲实体都至少有一个唯一属性。
ER图的属性还细分为复合属性、多值属性和派生属性、可选属性,同时还有用来表示联系的属性,称为联系属性。

复合属性是指具有多个属性的组合,例如名字属性,它可以包含姓氏属性和名字属性。复合属性也有唯一属性,例如学生的所在班级属性,由于多个年级都有班级,所以单单班级属性是不唯一的,但是和年级组成的复合属性后则可以匹配成唯一属性。
多值属性:一个实体的某个属性可以有多个不同的取值,称为多值属性。例如一本书的分类属性,这本书有多个分类。
派生属性:是非永久性存于数据库的属性。派生属性的值可以从别的属性值或其他数据(如当前日期)派生出来,用虚线椭圆表示。
可选属性:并不是所有的属性都必须有值,有些属性的可以没有值,这就是可选属性,在椭圆的文字后用(O)来表示。
联系属性:联系属于用户表示多个实体之间联系所具有的属性,一般来讲M:N的两个实体的联系具有联系属性,在1:1和1:M的实体联系中联系属性并不必要。

关系(relationship):
用来表现数据对象与数据对象之间的联系,例如学生的实体和成绩表的实体之间有一定的联系,每个学生都有自己的成绩表,这就是一种关系,关系用菱形来表示。
关联关系有三种:

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

ER图实例
假设教学管理规定:
一个学生可选修多门课,一门课有若干学生选修;
一个教师可讲授多门课,一门课只有一个教师讲授;
一个学生选修一门课,仅有一个成绩。
学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。

要求:根据上述语义画出ER 图,要求在图中画出实体的属性并注明联系的类型。

参考:https://javaforall.cn/152008.html

标签:关系,联系,数据库,实体,学生,如何,ER,属性
From: https://www.cnblogs.com/kkbk/p/18153539

相关文章

  • Everything搜索非NTFS格式文件
    Everything是一款非常优秀的文件搜索软件,但是普通用户只是通过它来进行文件名的搜索。其实该软件还隐藏了很多的搜索功能,用户只要熟练的使用这些功能,就可以快速查询到自己需要的文件内容。搜索非NTFS格式文件Everything软件在默认情况下只能对NTFS格式的文件进行搜索,但是由于现......
  • Java并发工具类之LongAdder原理总结
    出处: Java并发工具类之LongAdder原理总结LongAdder实现原理图                                高并发下N多线程同时去操作一个变量会造成大量线程CAS失败,然后处于自旋状态,导致严重浪费CPU资源,降低了并发......
  • 离线安装docker、docker-compose
    一、Docker离线安装1.下载Docker下载Docker的最新版本docker-20.10.9.tgz到本地。2.安装Docker#解压下载的Docker压缩包tarxvfdocker-20.10.9.tgz#复制Docker目录到/usr/bin,使Docker命令可执行cp-rdocker/*/usr/bin#清理解压后的文件rm-rf......
  • JMeter 做接口加密测试
    JMeter怎么做接口的加密?JMeter如果需要做加密测试,是需要加密类型对应的jar包的。本文以MD5,加密作为教程。 1、在TestPlan引用jar包; 2、添加BeanShellSampler取样器,并输入调用代码 importmd5.mymd5;//调用jar包StringpassAftermd5=mymd5.getMd5("1234");//......
  • 使用digital amp时通过mtkparser从cfg音频文件转成ini格式
    针对digitalamp主要利用ini里的内容。drivercode会依据iniformattype去parser内容给digitalamp。下面是mtkparser的格式[INIT_TABLE]IniFormatType=x//MtkParser目前固定填0即可count=xx;//xx是后面部分index总数index_x=AA,BB,CC;//x:命令index值......
  • Rust所有权__Ownership Rules
    First,let’stakealookattheownershiprules.Keeptheserulesinmindaswethroughtheexamplesthatillustratethem:     EachvalueinRusthasanowner.     Therecanonlybeoneowneratatime.     Whentheownergoesoutofsc......
  • 【专题STM32F03】FreeRTOS 队列queue传递结构体,野火例程代码简单修改。
    /************************************************************************@filemain.c*@authorfire*@versionV1.0*@date2018-xx-xx*@briefFreeRTOSV9.0.0+STM32消息队列******************************************************......
  • 视频监控/视频集中存储/云存储EasyCVR视频汇聚平台如何切换主子码流?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台支持7*24小时实时高清视频监控,能同时播放多路监控视频流,视频画面1、4、9、16个可选,支持自定义视频轮播。EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家......
  • cmake报错CMake Error: Could not find CMAKE_ROOT
    从cmake的地址下载源码https://cmake.org/files/比如cmake-3.14.0-rc3.tar.gz tarxvfcmake-3.14.0-rc3.tar.gz cd  cmake-3.14.0-rc3../configuremake-j32sudomakeinstall 然后执行cmake发现报了CMakeError:CouldnotfindCMAKE_ROOT的错误。这个错误的原......
  • springboot~mybatis-plus中使用TypeHandler做类型映射
    mybatis-plus中,如果数据表字段类型与java实体字段类型不一样,这时就需要做类型映射与转换了,我们一般可以实现TypeHandler接口,或者继承抽象类BaseTypeHandler,我们下面举例来说明一下它的使用方法。场景数据表里字段是varchar,java里是List集合,例如:我的爱好标签数据表里字段是varc......