简介:
三大范式是数据库设计表结构所遵循的规范和指导方法,目的为了减少冗余,建立合理的数据库结构。
三大范式有依赖关系,第二范式依赖第一范式,第三范式依赖第二范式。
第一范式:原子性
表中的数据要具有原子性,不可拆分。
比如有一个表存储的咖啡店的点餐信息,字段名是下单的产品order_product,存储的值是:大杯热生椰拿铁,这个字段明显不够原子。因为它可以再次拆分。
因为这个字段将咖啡容量、冷热、品种都放在一起了,这样不方便管理。
应该将表分为至少三个字段:容量、品种、冷热。
这样划分数据就具有原子性了,不能再继续进行拆分了。
第二范式:唯一性
表中的每一行数据都要具有唯一性,唯一性通过主键来确定,其他字段都是依赖于主键的。
一个表一般只要求存储一类信息,不相关的信息不要存储在一起,比如学生表和课程表,其中的学生信息和课程信息要分开存储在两个表中。
让两个表之间产生依赖关系就可以了。
第三范式:独立性
表中的非主键字段不能相互依赖,它们之间要相互独立,都应该是依赖于主键的。
通常在实际操作中,满足三范式只要做到一个表只存一种数据+主键基本就比较合理。
注意点:
范式只是一种规范指导,并不是绝对要求,实际表的创建中可以根据具体情况来灵活处理,比如存储地址信息,如果按照原子性,把省、市、区等等都要划分字段,但实际使用过程中会使用一个完整的字符串直接存储到相应的字段中。
数据的设计过程
需求分析
1、提出数据库的技术方案
比如说到底要选择SQL还是NOSQL,是否需要考虑性能优化的问题。
2、分析系统功能
分析具体的功能模块,因为我们要根据功能模块的具体需求,来设计数据库,比如:有一个商品管理的系统,功能结构如下:
3、画思维导图分析功能及各个模块对应的字段
E-R图设计
概念
全程叫做实体关系模型,E-R模型由三个部分来组成:实体、属性、联系。
表示方法:
实体:用矩形框来进行表示,矩形内要写实体名,实体实际上就是表。
实体的属性:用椭圆形来表示,框内来写属性名,并用无向线与实体相连接,属性其实就是表的字段
实体之间联系用菱形框来表示,表示表和表之间的互动关系,联系以适当的含义命名,名字写在菱形框中。在连线上写清楚联系的类型
一般联系的类型有三种
一对一:1-1;
一对多:1-N;
多对多:N-M
图示
学生、成绩、家长、课程表之间的关系