ER 图(实体-关系图)的两种主要风格分别是 Chen 风格 和 Crow’s Foot 风格。
ER图绘制首先要了解关系是什么,理解起来就是:
- 一对一是夫妻、居民和身份证这种钢铁一般稳固的关系,为啥还要分成两个实体?因为居民拥有多种属性,身份证只是其成立的一种属性,我去乘车会带上身份证证明身份,但是出门吃饭泡澡就不需要这种强证明的实体,因此分成两个实体适合不同场景的需要
- 一对多就是舔狗关系,李狗蛋一心一意追求小美,然而小美是海王,追求者来者不拒
- 多对多就是“她只是我的妹妹~妹妹说紫色很有韵味~我没有思想准备~看到你身旁还有一位~不知道他是谁”
- 说到现在的关系好像只是数量上的多寡,有身份关系,有情感关系,总结起来关系有两种:
1、引用关系,某个实体是另一个实体的属性,比如订单实体中,有买家实体、卖家实体,居民实体有身份证这个属性,而身份证也可以成为一个实体,记录犯罪信息。
2、继承关系,某个实体从属于另一个实体,但是有一方更加具体。比如,用户实体就是很宽泛的实体,但是会员实体就比较具体,从数据量上也能体现。更愿意白嫖的占大多数。
1. Chen 风格
特点
- 传统的 ER 图表示方法。
- 使用 菱形 表示关系,矩形 表示实体,椭圆 表示属性。
- 强调实体、属性和关系的三层结构。
以上就是典型的Chen风格的ER图。只有两个实体已经显得非常臃肿,一旦实体数量增加,不仅属性占用的空间极大且乱,而且每个关系的定义也会让数据管理者头疼。
表示方法
实体
- 用矩形框表示实体。用户和商品就是两个实体,实体在物理层可以理解成一个个表。
属性
- 用椭圆表示属性。属性可以理解为表的字段。
- 椭圆通过直线连接到对应的实体或关系。
关系
- 用菱形表示关系。关系是一种抽象的逻辑概念,外键则是实现这种关系的工具。
- 菱形通过线连接到参与关系的实体。
- 在关系的连线上标注基数(如 1、n 等)表示参与实体的多重性。
多对多关系
- 两个实体通过菱形连接。
- 菱形连接线两侧分别标注
n
或m
,表示多对多。
2. Crow’s Foot 风格
特点
- 又称 "爪形符号法",常用于数据库设计工具。
- 不使用菱形和椭圆,而是直接用实体和关系线表示。
- 使用线条和符号(如爪形、垂直线等)表示关系的多重性。
具体案例:
这里把地址实体单拎出来看看,地址和行政区划是多对一的关系,一家药房不能既在安徽又在江苏(在南京的话另算),地址和供应商、仓库、门店都是一对一的关系,而且是引用关系。地址和员工这里,我认为画错了,应该是一对多的关系。
员工实体从自己身上画了一条指向自己的**一对多关系**线,这是一种典型的**自关联**设计,通常用于表示员工之间的层级或从属关系。
- 一个员工可以管理多个下属,即一个员工可能是其他员工的直属领导。
- 每个员工只能有一个直属领导(除非是最高层的员工,如CEO,没有上级)。
表示方法
实体
- 用矩形框表示实体。
- 实体名称写在矩形框内。
属性
- 通常不单独绘制,而是直接作为实体的字段列出。
- 主键和外键通常以特殊标记(如下划线)突出显示。
关系
- 实体之间的关系直接用线条连接。
- 线条两端的符号表示基数:
|
表示 "1"(一)。- 爪形
<
或>
表示 "多"(n)。
多对多关系
- 两个实体之间用线条连接,线条两端均为爪形。