# 八、ER 图
Entity-Relationship,有三个组成部分:实体、属性、联系。用来进行关系型数据库系统的概念设计。
# 实体的三种联系
包含一对一,一对多,多对多三种。
- 如果 A 到 B 是一对多关系,那么画个带箭头的线段指向 B;
- 如果是一对一,画两个带箭头的线段;
- 如果是多对多,画两个不带箭头的线段。
下图的 Course 和 Student 是一对多的关系。

# 表示出现多次的关系
一个实体在联系出现几次,就要用几条线连接。
下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。

# 联系的多向性
虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。

# 表示子类
用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。

# 参考资料
- AbrahamSilberschatz, HenryF.Korth, S.Sudarshan, 等. 数据库系统概念 [M]. 机械工业出版社, 2006.
- 施瓦茨. 高性能 MYSQL(第3版)[M]. 电子工业出版社, 2013.
- 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006.
- The InnoDB Storage Engine (opens new window)
- Transaction isolation levels (opens new window)
- Concurrency Control (opens new window)
- The Nightmare of Locking, Blocking and Isolation Levels! (opens new window)
- Database Normalization and Normal Forms with an Example (opens new window)
- The basics of the InnoDB undo logging and history system (opens new window)
- MySQL locking for the busy web developer (opens new window)
- 浅入浅出 MySQL 和 InnoDB (opens new window)
- Innodb 中的事务隔离级别和锁的关系 (opens new window)
← 七、关系数据库设计理论 一、索引 →