文章目录
article
ER建模
AI文章摘要
qwen-turbo-latest
加载中...
ER概念模型
世界是由一组称作实体(Entity)的基本对象和这些对象之间的联系(Relationship)构成的。
实体
现实世界中客观存在(可以是可触摸的实物, 也可以是无形的虚物)并可相互区分的事物. 实体有两个抽象层次.
- 具象层实体: 指代具体的一个实体, 具象实体也称为实例. 一个读者, 一个水杯, 一个鼠标, 毛泽东思想等
- 属性: 实体具有的性质(由事物所决定的事实). 性质可以是物理性质(质量\高度)、化学性质(酸性\碱性)、名称、交流、合作等
- 单一属性与复合属性: 属性不可再分的为单一属性, 否则为复合属性. 例如家庭住址
- 单值属性与多值属性: 属性值只能取一个的为单值属性, 否则为多值属性. 例如电话号码
- 导出属性: 该属性能通过其他属性计算得到.
- 属性值: 属性的描述参数叫做属性值, 例如 姓名: 张三, 性别:男 , 年龄:18 身高: 169cm, 体重: 60kg , 肤色: 黄种人
- 具象实体的的刻画: 具象概念实体用一个或若干个属性值刻画, 只需列出具象实体所要研究的属性的值即可 例如: 实例1(001, 45092XXX, 张三, 男, 18, 169cm, 60kg…..)
- 属性: 实体具有的性质(由事物所决定的事实). 性质可以是物理性质(质量\高度)、化学性质(酸性\碱性)、名称、交流、合作等
- 抽象层实体: 具有一些相同属性的具象实体的抽象描述, 例如每一个具象读者都有借书证号, 姓名, 年龄, 住址等属性, 将这些具象实体抽象为读者实体.
- 实例: 实例是与抽象实体相对应一个具象实体
- 抽象实体的刻画: 抽象实体用一个或者多个属性刻画, 不需要列出所有属性, 但要求列出一个主键
- e.g. 读者(借书证号, 身份证号, 姓名,性别, 年龄, 身高, 体重…..)
- 候选键/关键字/码: 指抽象实体的一个属性或者属性组合, 它能唯一标识抽象实体中的每一个实例.
- e.g. 借书证号和身份证号都是候选键
- 主候选键(或叫主键)/主关键字/主码: 一个抽象实体可以有多个候选键, 但是必须选择唯一一个作为主键. 用下划线标注出来
- e.g. 身份证号
- 泛化: 对具有相似属性的抽象实体再抽象的过程, 会产生一个更加抽象的一般实体. 一般实体描述了一些共拥有的属性.
- e.g. 工人(工号, 身份证号, …..)和读者(借书证号, 身份证号, …..)进行抽象, 形成了中国人民(身份证号, …..)实体
- 细化: 对一个抽象实体进行相对详细描述的过程, 会产生一个相对具体的抽象实体或叫分类实体. 分类实体一定要产生与原实体不同的属性, 否则细化是没有意义的
- e.g. 中国人民(身份证号, …..)可以进行细化 医生(医生号, 身份证号, …..)
- 外键(继承属性): 即继承自其他实体关键字的属性. 例如 医生的身份证号是继承自中国人民的身份证号
- 外键的取值必须为NULL或者其他实体的实例的主键值
💡对于实体的理解, 可以参考整数, 我们可以将1说成整数, 也可一说成1,2,3,4,5….是整数, 这里的整数和实体有着十分相似的关系
💡实体指代的是那一层的意思要看上下文的理解, 一般说的实体指的是抽象层的实体!!!!!!
联系
指的是不同实体的实例之间可能发生的联系, 例如读者实体的实例 “张三” , 借走了图书实体的实例 “流浪地球”, 这是一个借阅联系
- 度/元: 参与联系的实体数目. 实体是固定不变的, 但联系是多样化的, 不可能是固定的, 它基于你对问题的理解
- 角色: 一元联系中的多个属性来自同一个实体的不同实例, 那就要显式指定不同属性的角色作用.
- e.g. 装配关系中, 零件号都来自零件实体, 那就要显式指定父件与子件
- 联系基数: 联系基数是联系约束的实体A的一个实例能与另一个实体B发生实例关联的数目. 它基于你对业务规则的理解
- 表示形式: 最小基数..最大基数 注意: 最小基数缺省为0
- 部分参与联系: 也就是实体A的实例参与联系时, 实体B可以不参与联系, 最小基数为0, 在联系中实体B相应的属性设置允许空值实现
- 完全参与联系: 也就是实体A的实例参与联系时, 实体B至少一个实例参与联系, 最小基数为1. 在联系中实体B相应属性设置不允许空值实现
- e.g. 有 “图书实体” 和 “书架实体” 以及 “存放图书联系”, 联系限制图书实例与书架实例联系的数目为1..1, 书架实例与图书实例的联系数目为0..n
- 二元联系: 映射基数或叫联系基数比率, 对于描述二元联系十分方便. 根据映射基数对二元联系进行分类有以下几种:
- 映射基数比为1:1的联系: 商店实体和经理实体,联系限制经理唯一映射商店, 商店唯一映射经理.
- 映射基数比为1:n的联系: 作品实体和作者实体, 联系限制作品唯一映射一个作者, 作者可以映射多个作品.
- 映射基数比为n:m的联系: 学生实体和课程实体, 学生映射多门课程, 课程也可以映射多个学生 .
- 分类联系: 一般实体通过外键将主键继承到分类实体的主键, 实现一般实体的属性扩展
- 分类实体应完全继承一般实体的主键
- 分类实体一般省略与一般实体相同的普通属性, 也不需要存储这些属性, 通过继承关系自动获得一般实体的普通属性
- 分类联系有一个鉴别器属性, 它来自一般实体的属性, 用于区分一般实体的不同实例, 分配到不同的分类实体中
- 分类联系一定不能看成是对一般实体的实例进行简单的分类, 分类实体一定要有区别于一般实体的属性
- 完全分类联系与非完全分类联系: 列举的分类实体涵括所有的实例就是完全分类联系, 否则就是非完全分类联系
- e.g 人类实体和工人实体与医生实体, 人类自然不止工人与医生, 所以这个分类是非完全分类联系
- 联系的实现形式:
- 联表形式: 联系可以看作一个特殊的实体, 它的属性继承自需要联系的实体的主键. 联系的基数是通过控制外键的UNIQUE 和 NOT NULL约束实现的
- 外键形式: 一个实体通过继承另一个实体的主关键字可以实现二元联系中的1:1和1:n联系, n:m联系必须使用联表形式
Chen ERD
Crow’s foot ERD
erDiagram PROVIDER }o--o{ PROJECT : SUPPLY PROVIDER{ STRING ID STRING NAME STRING ADDRESS STRING PHONE STRING ACCOUNT } WAREHOUSE{ STRING ID DOUBLE SIZE STRING PHONE } WORKER{ STRING ID STRING NAME INT AGE STRING MAJOR } PROJECT{ STRING ID DOUBLE COST DATE START_DATE } PART{ STRING ID STRING NAME STRING SPECIFICATIONS STRING DESCRIPTRION DOUBLE PRICE }
IDEF1x ERD
IDEF是ICAM提出的项目规范化管理模型 其中IDEF0是功能模型, IDEF1是信息模型, IDEF2是动态模型 而IDEF1x模型是对ER模型扩充语义或概念细化而形成的, 是ER模型的扩展 工程化设计规范中, 都是建议采用IDEF1x模型来设计
IDEF1x模型对E-R模型扩展的语义
- 独立实体(强实体): 实体的实例可以被唯一标识且不依赖其他实体的实例
- 独立实体<=>关键字属性不包含外键.
- 关键字属性完全是自身属性, 实例唯一标识时, 是不依赖其他实体实例存在的
- 普通属性的外键是允许的, 因为外键可以取空值, 并不一定依赖参照实体实例的存在!!!!
- 独立实体<=>关键字属性不包含外键.
- 从属实体(弱实体): 实体的实例可以被唯一标识且必须依赖其他实体的实例
- 从属实体<=>关键字属性包含外键
- 关键字属性包含外键时, 外键就有非空特性, 必须是依赖参照实体实例的存在
- 普通属性的外键也是允许的, 参照独立实体的解释
- 分类实体是一个从属实体!!!
- 从属实体<=>关键字属性包含外键
- 实体设计规范
- 唯一实体名原则: 实体命名唯一, 相同的实体名视为同一实体
- 唯一属性名原则: 属性命名唯一, 相同的属性名视为相同含义(属性继承除外)
- 实体相互联系原则: 模型中的实体都能发生相互联系
- 属性可继承: 属性并不一定是实体特有的, 它还可以继承自其他实体.
- 属性值非空原则: 空值的处理过程是非常复杂的, 一般不希望属性允许为空值
- 实例不重复原则: 实体的实例不能重复
- 第三范式原则: 实体满足第三范式的规范
- 作用名: 即对外键重命名后实际使用的名字
- 标定联系: 指从属实体和独立实体的外键联系
- 非标定联系: 指独立实体之间的外键联系
- 非确定联系: 独立实体间的多对多联系, 一般使用一个相交实体(本质是从属实体一种), 然后转化为独立实体于从属实体的标定联系实现
- 分类联系: 和ER模型中的分类联系是一致的
- 联系的基数: IDEF1x的联系都通过外键实现的, 淡化了联系的概念.
- 主键一方的实体的基数为1, 外键一方的实体基数为n
- 基数标志为Z的表示基数0..1
- 基数标志为P的表示基数1..n
- 省略标志的表示基数为0..n