实体关系模型
# 1.什么是实体
E: entity(实体)
R: relation(关系)
# 1) 实体
实体的定义
客观存在并相互区别的一个事物称为实体(Entity)
举例: 如一个学生、一件商品、一个部门、一个课程, 相当于数据表中一条记录
# 2) 实体属性
属性的定义
实体的某些特性称为实体的属性(Attribute),一个实体可以拥有多个属性
举例: 如学生有学号、姓名、性别、出生日期等, 相当于字段
# 3) 实体集
定义
实体的集合, 相当于一张表
# 2.关系
表与表之间的关系一共有4种
- 一对一
- 一对多
- 多对一
- 多对多
# 1) 一对一关系
定义
一张表的一条记录对应另一张表的一条记录
举例
看如下两张表
用户表(user)和用户详情表(user_info)
user表中的一条记录, 比如xiaoming, 对应的user_info的一条记录
关联条件
user.id=user_info.user_id
# 2) 一对多关系
定义
一张表的一条记录对应另一张表的多条记录
举例
看如下两张表
用户表(user)和文章表(article)
user表中的一条记录, 比如xiaoming, 对应的article中的多条记录
说明: 一个用户可以拥有(has)多篇文章 hasMany
关联条件
user.id=article.user_id
# 3) 多对一关系
定义
一张表的多条记录对应另一张表的一条记录
举例
看如下两张表
用户表(user)和国家表(country)
user表中的多条记录, 对应的country中的一条记录
说明: 多个用户属于(belongsto)一个国家
关联条件
user.country=country.id
# 4) 多对多关系
定义
表A的一条记录对应表B的多条记录
同时, 表B的一条记录也对应表A的多条记录
举例
看如下两张表
用户表(user)和角色表(role)
说明: 一个用户拥有多个角色, 一个角色也拥有多个用户
关联条件
建立中间表, 将多对多转换成两个一对多处理
父表: 一的那方叫做父表
子表: 多的那方叫做子表
在子表中建立一个字段, 让这个字段=父表的id, 那么在子表中建立的这个字段就叫做外键