- ```markdown
# ER图
## 1. 基本概念
### 1.1 定义
- 实体关系图(Entity-Relationship Diagram)
- 用于数据库设计的可视化工具
- 1976年由Peter Chen提出
## 2. 核心要素
### 2.1 实体(Entity)
#### 2.1.1 强实体
- 独立存在的实体
- 示例:学生、课程
- 表示方式:矩形
#### 2.1.2 弱实体
- 依赖其他实体存在
- 示例:订单项(依赖订单)
- 表示方式:双边框矩形
### 2.2 属性(Attribute)
#### 2.2.1 属性类型
- 简单属性:不可再分(年龄)
- 复合属性:可分解(地址→省/市/区)
- 单值属性:唯一值(学号)
- 多值属性:多个值(联系电话)
- 派生属性:可计算(年龄←出生日期)
- 存储属性:持久保存
- 空值属性:允许空值
#### 2.2.2 属性表示
- 椭圆表示基本属性
- 虚线椭圆表示派生属性
- 双线椭圆表示主键
### 2.3 关系(Relationship)
#### 2.3.1 关系类型
- 结构分类:
- 1:1(部门-经理)
- 1:N(部门-员工)
- M:N(学生-课程)
- 存在性分类:
- 标识关系(强关联)
- 非标识关系(弱关联)
#### 2.3.2 基数约束
- 强制参与:(1,1)
- 可选参与:(0,N)
- 示例:员工必须属于1个部门(1,1),部门可能有0-N员工(0,N)
### 2.4 键(Key)
#### 2.4.1 键类型
- 候选键:可唯一标识实体的属性组合
- 主键:选定的候选键
- 外键:关联其他实体的属性
- 超键:可能包含冗余的标识属性集
- 代理键:人工添加的标识符(如自增ID)
## 3. 扩展元素
### 3.1 特殊关系处理
- 多值属性转换:
- 转换为弱实体
- 创建单独关系表
- 关联实体:用于处理M:N关系的中间实体(如选课记录)
### 3.2 约束规则
- 参与约束:完全/部分参与
- 覆盖约束:父实体删除时的级联规则
- 互斥约束:XOR关系(如员工不能同时是教师和行政人员)
## 4. 绘制步骤
1. 确定实体集合
2. 定义实体属性
3. 识别实体关系
4. 确定主键/外键
5. 绘制初步ER图
6. 验证与优化
7. 添加约束说明
## 5. 应用场景
- 数据库设计
- 系统需求分析
- 业务流程建模
- 数据仓库设计
## 6. 常用符号系统
- Chen表示法:原始符号系统
- Crow's Foot:现代流行符号
- UML类图:面向对象表示法
- Barker表示法:Oracle专用
## 7. 优化原则
- 消除冗余关系
- 合并相似实体
- 拆分复杂属性
- 验证范式合规性
- 保持适当抽象层级
- ```
复制内容
下载markdown文件
在线编辑