1.为什么要使用数据库:
- 持久化:把数据保存到可掉电式存储设备中以供以后使用。数据持久化意味着将内存中的数据保存到硬盘中加以固化,而持久化的实现过程大多通过各种关系数据库来完成;持久化的主要作用是将内存中的数据存储在关系型数据库中,也可以存储在磁盘文件、xml数据文件中。
2.数据库的相关概念:
- 数据库:即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
- 数据库管理系统:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。 例如:MySQL
- SQL结构化查询语言:专门用来与数据库通信的语言。
总结:用SQL语言编写代码,在MySQL(数据库管理系统)软件中运行,对数据库中的文件进行操作。
2.1数据库与数据库管理系统的关系:
数据库管理系统可以管理多个数据库,一般开发人员会针对每一个应用船舰一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体用户的数据。
3.RDBMS:关系型数据库。
3.1实质:
- 这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单二维表格形式(二元关系)。
- 关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表组成了一个库。
- 表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
3.2优势:
- 复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持:使得对于安全性能很高的数据访问得以实现。
4.关系型数据库设计规则
- 关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的。
- 将数据放到表中,再将表放到库中。
- 一个数据库可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
- 表有一些特征,这些特征定义了数据在表中如何存储,类似Java中“类”的设计。
4.1表、记录、字段
- E-R(entity-relationship,实体-联系)模型中有三个主要概念:实体集、属性、联系集。
- 一个实体集对应于数据库中的一个表,一个实体则对应于数据库表中的一行,也称一条记录;一个属性对应于数据库表中的一列,也称为一个字段。
ORM思想(Object Relational Mapping,对象关系映射):
数据库中的一个表<--->Java中的一个类
表中的一条数据<--->类中的一个对象(实体)
表中的一个列<--->类中的一个属性(字段)
4.2表的关联关系
- 表与表之间的数据记录有关系。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
- 四种:一对一关联,一对多关联,多对多关联,自我引用。
4.2.1一对一关联
- 在实际应用中并不多,因为一对一可以创建成一张表。
- 例如:设计学生表
学号、姓名、手机号、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人…
拆分成两个表:两个表的记录是一一对应关系。
基础信息表(常用):学号、姓名、手机号、班级、系别。
档案信息表(不常用):学号、身份证号码、家庭住址、籍贯、紧急联系人…
4.2.2一对多关联
- 常见实例场景:客户表和订单表(一个客户有多个订单)、分类表和商品表(牛奶区有多种牛奶)、部门表和员工表(一个部门有多个员工)
- 例如:
部门表:编号、名称、简介
员工表:编号、姓名、工号 - 一表多键原则:在从表创建一个字段,字段作为外键指向主表的主键。
4.2.3多对多的关系
- 要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个多对一关系。将这两个表的主键都插入到第三个表中。
- 例1:学生选课
学生信息表: 一行代表一个学生的信息(学号、姓名、班级、手机号码…)
课程信息表: 一行代表一个课程信息(课程编号、授课老师、简介)
==选课信息表:==一个学生可以选多门课,一个课程可被多个学生选
- 例2:产品-订单
订单表和产品表有一种多对多的关系,这种关系是靠订单明细表建立两个一对多关系来定义的,一个订单中有多个产品,每个产品可以出现在多个订单中。