1. ER 模型(实体-关系模型)
定义:ER 模型用于表示数据的结构和关系,通过图形化方式展示实体、属性及其相互关系。
关键概念:
- 实体:表示现实世界中的对象或概念,如学生、课程。
- 属性:描述实体的特征,如学生的姓名、年龄。
- 关系:表示实体之间的联系,如学生选课的关系。
表示方法:
- ER 图:用矩形表示实体,用椭圆表示属性,用菱形表示关系。线连接实体和关系,标注基数(如一对一、一对多)。
示例:
假设有“学生”和“课程”两个实体,可以表示为:
- 学生(学生ID、姓名、年龄)
- 课程(课程ID、课程名称、学分)
关系:学生选修课程。
2. 文档模型
定义:文档模型是非关系型数据库的一种数据模型,使用文档(通常为 JSON、BSON 或 XML 格式)来存储数据,适合存储层次化和灵活结构的数据。
关键概念:
- 文档:类似于一个 JSON 对象,包含键值对,可以嵌套其他文档或数组。
- 集合:文档的集合,相当于关系型数据库中的表,但没有固定的模式。
特点:
- 灵活性:文档可以有不同的结构,支持动态模式。
- 嵌套数据:可以在文档内嵌套数组和其他文档,适合表示复杂数据关系。
示例:
一个学生文档可能表示为:
{
"student_id": 1,
"name": "Alice",
"age": 21,
"courses": [
{"course_id": 101, "course_name": "Mathematics"},
{"course_id": 102, "course_name": "Physics"}
]
}
3. 图模型
定义:图模型通过节点、关系和属性来表示数据,专注于数据之间的连接性,适合处理复杂的网络关系。
关键概念:
- 节点:表示实体,如用户、产品。
- 关系:表示节点之间的连接,可以有方向和类型,如“朋友”、“购买”。
- 属性:附加在节点或关系上的数据,如用户的年龄或购买的时间。
特点:
- 高效的关系查询:可以快速遍历节点和关系,适合社交网络、推荐系统等场景。
- 灵活性:可以轻松添加新的节点和关系,适应变化的数据结构。
示例:
一个社交网络的图模型可能表示为:
- 节点:用户(Alice、Bob)、课程(Math、Physics)
- 关系:
- Alice 朋友 Bob
- Alice 报名 Math 课程
图表示为:
(Alice) --[FRIENDS_WITH]--> (Bob)
(Alice) --[ENROLLED_IN]--> (Math)
总结
- ER 模型:适合设计和理解关系型数据库的结构。
- 文档模型:灵活存储层次化数据,适合快速开发和变化频繁的应用。
- 图模型:高效处理复杂关系,适合社交网络、推荐系统等。