设计数据库
数据建模
分为四步
- 理解和分析业务的需求
- 构建业务的概念模型
- 生成一个数据模型或数据结构用以存储数据(逻辑模型:独立于数据技术的抽象数据模型)
- 构建实体模型
概念模型
我们需要建造一个概念模型来表示业务中的实体、事物以及他们之间的关系。通常这些实体包括人、事件、位置等等。我们可以通过UML图或者实体关系图(ER、Entity Relationship)来构建。实体图软件有draw.io或LucidCharts
以draw.io为例,流程图即UML图,实体关系即ER
navicat也可以创建模型
逻辑模型
为概念模型中每个属性指定类型
括号内的就是逻辑模型
实体模型
根据逻辑模型再去mysql中创建对应的模型
主键
主键,就是唯一标识给定表里每条记录的列,理想状态下主键不能修改,因此主键的值应该永远不变,我i们可以勾选自动增长,可以让mysql自动赋值,这个很有用,可以联合mybatis-plus的自动增长属性对应
外键
每当在两个表之间添加关系时,关系一端的称为主表或者主键表,另一端称为子表或者主键表
每当你的表中有外键,你就需要设置约束,本质上可以保护你的数据不被破坏
标准化
标准化是审查我们的设计,并确保它遵循一些防止数据重复的预定义规则的这一过程,基本上有七个规则,也被称为七范式,对于几乎99%的应用场景,你只需要应用前面的三条范式。、
第一范式
第一范式要求一行中每个单元格都应该有单一值,且不能出现重复列
第二范式
官方语言:要符合第二范式,一组关系必须符合第一范式,并且不能有取决于这组关系任何时候选键的任何真子集的非主属性。
人话:第二范式要求每一张表都应该有一个单一的目的,换句话说,它应该只能代表一种且仅有一种实体类型 ,而那种表中的每一列都应该用来描述那个实体
第三范式
官方语言:我们的实体或者表应该符合第二范式,此外,表中的所有属性只能由那组关系的候选键决定,而不能是任何非主属性
人话:表中的列不应该派生自其他列
eg:某一张表里有了姓名列和名字列,就不再需要姓名列了
实用建议
不要担心记住这些标准化