为什么使用数据库?为了持久化数据。
数据库的相关概念
- 数据库,DB,database。
- 数据库管理系统,DBMS,database management system。
- 结构化查询语言,SQL,structured query language。
数据库、数据库管理系统、SQL三者之间的关系,可以用下图来描述。
常用的数据库管理系统
DB-Engines Ranking,详见https://db-engines.com/en/ranking。
RDBMS
Relational Database Management System,关系型数据库管理系统,如Oracle、MySQL、Microsoft SQL Server、PostgreSQL等。
非RDBMS
非关系型数据库管理系统, 如MongoDB、Redis、ElasticSearch等。
关系型数据库设计原则
ORM,Object Relational Mapping,对象关系映射,体现在 数据库中的一张表 映射到 Java或Python中的一个类; 表中的一条记录 映射到 类的一个实例(或对象); 表中的一列 映射到 类的一个属性(或者字段)
E-R(Entity-Relationship,实体-联系)模型中主要有3个概念,分别是, 实体集。一个实体,对应表中的一条记录;一个实体集,对应数据库中的一张表。 属性。一个属性,对应数据库表的一列。 联系集。就是表与表之间的关联关系,有四种,分别是
- 一对一关联
A表中的一条记录对应B表中的一条记录。 举个例子。 一张是学生的基础信息表,包含学生的常用信息,比如学号、姓名、手机号、班级、系别。 另一张是学生的档案信息表,包含学生的一些不常用的信息,如学号、身份证号、家庭住址、籍贯、紧急联系人等。 基础信息表中记录与档案信息表中的记录是一一对应的关系。 在实际开发中,一对一关联应用不多,因为一对一可以创建成一张表。 - 一对多关联
常见场景,如 客户表和订单表,一个客户可以下多个订单; 分类表和商品表,一个类别下可以有多个商品; 部门表和员工表,一个部门下会有很多位员工。 - 多对多关联
要表示多对多的关系,必须创建第三个表,通常称为“联接表”,它将多对多关系划分为两个一对多关系。 比如,学生-课程。 学生信息表,一个学生可以选择多门课程; 课程信息表,一门课程可以被多名学生选择; 而选课信息表,就是联接表。 再比如,商品-订单。 商品表,一个商品可以被包含在多个订单里; 订单表,一个订单中可以包含多个商品; 而订单信息表,就是联接表。 - 自我引用
|