必须要清楚数据库中的实体-联系 | 数据库教程2:数据库实体—关系模型(ER模型)
实体和ER图
实体和实体集
在关系数据库中,
实体可以是有形的、实际存在的事物(如每个员工),也可以是抽象的、概念上的事物(如一个部门)。实体是独立存在、可区别于其他实体的(特征)。
实体集是具有相同类型及相同性质的实体集合。是某类事物的集合。把每一类数据对象的个体称为实体。
实体集可以相交(如销售部门的员工既属于销售员工实体集也属于员工实体集)。
属性
属性是指实体集中每个实体都具有的特征描述。属性的域指一个属性所允许的取值范围或集合。
联系与联系集
联系指多个实体间的相互关联。联系集指同类联系的集合。
图形化表示
实体或实体集用矩形表示;实体的属性用椭圆表示;实体间的联系用菱形表示;
E-R图
E-R图也称实体-联系图(Entity Relationship Diagram
,通常比较习惯称为实体关系图),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
可简写为ERD
。
ER图分为实体、属性、关系三个核心部分。
如下为一个ER-图的表示示例
实体-联系方法(Entity-Relationship Approach)是概念模型的一种表示方法,也就是用E-R图来描述现实世界的概念模型。
E-R方法也称为E-R模型。
实体间的关系
实体间的关系有三种:
-
一对一:实体A中的一个实例对应B中一个实例,记为1:1。如 一个学生只有一个成绩单。
-
一对多:A中一个实例对应B中多个实例,记为1:N。如 一个学院有多名学生。
-
多对多:多实例到多实例,记为M:N。如 一位老师上多门课,一门课有多位老师。
关系的类型通常标在实体-关系的边上。如上图中的1
。
对于强实体和弱实体还可以通过符号区分,如弱实体用双边矩形,强弱联系用双边菱形。如下:
一般在1:1或1:n中的两个实体,前者为强实体(可以理解为独立存在、可以通过属性明确表示的实体),后者为弱实体(可以理解为必须依赖于其他实体而存在、其属性无法明确表示其自身)。
复合实体(也称联合实体或桥接实体),常用于实现两个或多个实体间的M:N联系,它由每个关联实体的主码组成,用长方体内加一个菱形来表示。
下图就是一个典型的复合实体,因为只是举例,相对粗糙,用户和商品两个实体是M:N的关系,中间有订单这个实体联系,因此订单这个实体是一个复合实体,同时如果用户实体不存在,就没有订单实体的存在,因此对于用户实体来讲订单是弱实体,同理商品实体如果不存在,同样不存在订单实体,因此对商品实体而言订单是弱实体,具体如图:
另外可以看一下,一个教学管理的ER图:
数据库中的实现
实体在数据库中的实现就是表(也可以称为实体集,每一条记录是一个具体的实体对象)。
实体间一对一的关系的实现方式
-
唯一外键方式:两个表中任意一个表中添加唯一外键(先添加外键,再添加唯一键)。
-
主键关联方式:AB两个的主键相同,则可以认为是关联的一组数据。
-
中间关系表:创建一张新表作为中间关系表,两列分别记录两个表,且每一列的值都不能重复(即将这两列均设置为唯一外键)。注意:将这两列“既设置为主键,又设置为外键”的方式不能实现该功能,因为联合主键可能会出现一列相等而另一列不相等的情况。
实体间多对一、一对多的实现方式
-
在多的一方添加外键:比如一个班级对应多个学生,在学生表中添加一列,记录该学生是哪一个班的,该列设置成外键,取值为班级表的主键。
-
建立中间表:创建一个新表,该表至少有两列,分别记录两个表,多的一方的列要设置为"唯一外键",少的一方的列设置为"外键"。
比如一个班级对应多个学生,新建表至少两列表示学生和班级。学生列要设置成为“外键+唯一键”,以防有两行数据的学生列的值一样(防止一个学生有两个班级的情况出现)。班级列不必设置成唯一键,设置成为外键即可,因为不同学生可以有一样的班级。
实体间多对多的实现方式
只有一种方式,建立中间关系表。
比如学生和课程,一个学生可以选多门课,一门课可以由多个学生选。新建一张表,一列记录学生,一列记录课程。两列均为外键,一列取值为学生表中的唯一标识,一列取值为课程中的唯一标识。两列不用设置成为唯一键,因为每一列中均可有重复,但不能有两行数据在两列上完全重复。所以将两列均设置成为主键+外键(即联合主键+外键)
查看管理ERD的软件介绍
SSMS中查看实体关系图(SQL Server)
在SQL Server Management Studio(SSMS)对象资源管理器中,数据库节点下,可以直接看到"数据库关系图"节点。
点击该节点+
展开,第一次展开时会提示创建支持对象。
点击确定后,就可以右键"数据库关系图",新建。
添加表后,可以看到所选表的关系图。后续还可以添加表或新建表
设计好后,可以直接保存为一个ER图,便于后期查看或修改。可以在此边设计表,边画ER图。
要查看关系图,数据库必须指定所有者。
PgAdmin4中查看实体关系图(PostgreSQL)
PgAdmin 4 从V4.3版本开始,提供了ERD Tool,可以用来管理数据库的关系图。(低版本中没有ERD Tool)
编辑测试并不很好用,用来生成关系图到时很好的工具。
其他工具
大多数数据库系统管理软件都提供了查看ER图的功能。如Navicat
、SQL Developer
,以及支持几乎所有数据库的开源管理工具DBeaver
参考
转载自:https://juejin.cn/post/6970075418997047332