ER图是啥?
- 格式:pdf
- 大小:138.06 KB
- 文档页数:5
ER图是啥?
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表⽰实体类型、属性和联系的⽅法,⽤来描述现实世界的概念模型。
⽤矩形表⽰实体型,矩形框内写明实体名;⽤椭圆表⽰实体的属性,并⽤⽆向边将其与相应的实体型连接起来;⽤菱形表⽰实体型之间的联系,在菱形框内写明联系名,并⽤⽆向边分别与有关实体型连接起来,同时在⽆向边旁标上联系的类型(1:1,1:n或m:n)。
实体联系模型,是概念数据模型的⾼层描述所使⽤的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号。
下⾯是⼀个最常见的ER图,基本上只要讲解ER图就会碰到它。
通俗的讲,ER图是把现实⽣活中的各种关系,以图⽚的形式,抽象出来,形成⼀个思维导图,通过ER图可以了解现实中的各种关系,⽐如⼀个班有很多学⽣组成。
ER图的应⽤,最最难的地⽅我觉得是抽象思维能⼒,你需要把现实⽣活中各种关系映射到⼤脑⾥⾯,然后以ER图的形式输出可分析和可视化的东西。
通过实例来拆解ER图
⼀、学校⾥的那点事⼉
现实⽣活
⼀个班级有N多的学⽣组成,每个班级有⼀个班级号,每⼀名学⽣有⼀个学号;学⽣可以根据⾃⼰的兴趣爱好选修课程,对于选修的课程需要考试,然后出成绩有学分;⼀名⽼师可以教授⼏门课程。
ER图
通过现实的描述分解出⼏个实体,分别为班级、学⽣、课程、教师。出现了⼏组关系,分别为⼀个班级由多名学⽣组成(1对多)、⼀名学⽣可以选多门课程,同时⼀门课程可能被多名学⽣选修(多对多)、⼀名教师可传授多门课程,同时⼀门课程可能被多名教师传授(多对多)。这个场景⾥⾯没有⼀对⼀的关系。
关系数据库
ER图画出来以后,如何映射到关系数据库中的表呢?这⼀步就⾮常简单了,分步骤进⾏创建:把实体映射为表、把关系映射为表。实体映射为表,⽐较简单,不再赘述。
关系映射为表,相对来说⽐较复杂,以这⾥的ER图为例,存在1对多和多对多两类关系。
1对多或者多对1时,在多⽅添加⼀个外键,对应到1⽅,如学⽣表⾥的所在班级这个外键。多对多时,需要新增⼀个关系表,把两个实体间的关系记录下来,⽐如下⾯的学⽣选课关系表、教师任课关系表。根据ER图创建表如下: 班级表(主键:班级号 )
班级号 班级名 专业 ⼈数C001 动漫⼀班 动漫设计 60
C002 动漫⼆班 动漫设计 80
C003 计算⼀班 计算机应⽤ 70
学⽣表(主键:学号,外键:所在班级 )
学号 姓名 性别 年龄 所在班级S001 ⼩明 男 20 C001
S002 ⼩王 ⼥ 19 C002
S003 ⼩朱 男 21 C003
课程表(主键:课程号)
课程号 课程名 课时 学分 K001 PS 20 5
K002 玛雅 25 6
K003 数据库 30 10
教师表(主键:编号)
编号 职称 姓名 性别 年龄T001 助教 李⽼师 男 30
T002 讲师 朱⽼师 ⼥ 33
T003 教授 王⽼师 男 43
学⽣选课关系表
编号 学号 课程号 成绩SK001 S001 K001 80
SK002 S001 K002 76
SK003 S002 K001 89
SK004 S003 K002 90
教师任课关系表
编号 教师号 课程号 时间TK001 T001 K001 16:00
TK002 T001 K002 14:00
TK003 T002 K001 10:00
TK004 T003 K002 15:00
⼆、说说电商
现实⽣活
我打开淘宝,登录我的账户,查看了⼀下昨天下的单快递到哪⾥了,然后⼜逛了逛,把⼏个中意的⼩家电放到购物车⾥⾯,这次钱不够了,下次再买,嘿嘿。
ER图
通过上⾯简短的描述分解出⼏个实体,分别为⽤户、订单、购物车、商品、供应商。出现了⼏组关系,分别为⼀个⽤户会有多个订单(1对多)、⼀名⽤户只有⼀个购物车(1对1),⼀个购物车选购多种商品,同时⼀个商品可能存在多个⽤户的购物车中(多对多)、⼀个供应商可以供应多种商品,⼀个商品只能属于⼀个供应商(多对1)。
关系数据库
同理,根据ER图映射到数据库表,实体⾸先映射,然后再映射关系,1对1、1对多以及多对1以主外键的形式进⾏关系映射,多对多以新增⼀个关系表来进⾏关系映射。根据ER图创建表如下:
⽤户表(主键:⽤户ID)
⽤户ID ⽤户名 密码 昵称 ⾝份证U001 USER01 *** ⼩马哥 3729***
U002 USER02 *** 购物狂 1010***
U003 USER03 *** 买买买 3302***
订单表(主键:订单ID,外键:⽤户ID)
订单ID ⽤户ID ⾦额 状态D001 U001 500¥ 完成
D002 U001 600¥ 派送中
D003 U003 700¥ 待评价
购物车表(主键:购物车ID)
购物车ID ⽤户ID 总价 优惠价C001 U001 50¥ 45¥
C002 U002 150¥ 120¥
C003 U003 50¥ 40¥
供应商表(主键:注册号)
注册号 名称 联系⼈G001 xx电器公司 ⾼先⽣
G002 yy洗化公司 李先⽣
G003 zz服装公司 王先⽣
商品表(主键:编码,外键:供应商注册号)
编码 名称 分类 重量 单价 供应商注册号P001 热⽔壶 家电 1kg 50¥ G001
P002 洗⾐粉 洗化 3kg 20¥G001
P003 ⽑⾐ 服装 400g 150¥G002
选购关系表
编号 购物车ID 商品编码X001 C001 P001
X002 C001 P002
X003 C002 P001
X004 C003 P002
三、你真的理解1对1、1对多和多对多吗?
要想彻底理解这三类关系,不能只读理论定义,⽽是从SQL查询结果出发,来从实践层⾯加深理解。
1对1,在任意⼀张表中添加外键
1对1的意思是指第⼀张表中的某条记录,根据主外键关联,只能查询到另⼀张表中的0条或者1条记录,同时表中的所有其他记录都满⾜这个特性,反之亦然。
1对1时,需要添加⼀个外键,外键添加到任何⼀张表中都可以。
1对多,1⽅属于主表,多⽅属于从表,在从表添加外键
1对多的意思是指第⼀张表中的某条记录,根据主外键关联,能查询到另⼀张表中的0条、1条或者N条记录,同时表中的所有其他记录都满⾜这个特性,反之是多对1。
1对多时,以1⽅为主表,多⽅为从表,在多⽅添加⼀个外键。
多对多,新增⼀张关系表
多对多的意思是指第⼀张表中的某条记录,根据主外键关联,能查询到另⼀张表中的0条、1条或者N条记录,同时表中的所有其他记录都满⾜这个特性,反之亦然。
多对多时,要新增⼀张关系表,以记录多对多的数据关系,举个栗⼦:
课程表(主键:课程号)
课程号 课程名 课时 学分 K001 PS男 20 5
K002 玛雅 25 6
K003 数据库 30 10
教师表(主键:编号)
编号 职称 姓名 性别 年龄T001 助教 李⽼师 男 30
T002 讲师 朱⽼师 ⼥ 33
T003 教授 王⽼师 男 43
教师任课表(多对多关系衍⽣出来的表)
编号 教师号 课程号 时间TK001 T001 K001 16:00
TK002 T001 K002 14:00
TK003 T002 K001 10:00
TK004 T003 K002 15:00
如果⼤家有兴趣,可以试着分析下⾯ER图如何建表,下篇⽂章公布答案。