数据建模:三大范式和反范式
范式是数据库规范化的⼀个⼿段,是数据库设计中的⼀系列原理和技术,⽤于减少数据库中的数据冗余,并增进数据的⼀致性。 数据规范化通常是将⼤表分成较⼩的表,并且定义它们之间的关系。这样做的⽬的是为了避免冗余存放数据,并确保数据的⼀致性。添加、删除和修改数据等操作可能需要修改多个表,但只需要修改⼀个地⽅即可保证所有表中相关数据的⼀致性。由于数据分布在多个表之间,因此检索信息可能需要根据表之间的关系联合查询多个表。 数据规范化的实质是简单写、复杂读。写⼊操作⽐较简单,对于不同的信息,分别修改不同的表即可;⽽读取数据则相对复杂,检索数据的时候,可能需要编写复杂的SQL来联合查询多个表。 第一范式(1NF) 第⼀范式是指数据库表的每⼀列(属性)都是不可分割的基本数据项,这就要求数据库的 每⼀列都只能存放单⼀值 ,即实体中的某个属性不能有多个值或不能有重复的属性。 第⼀范式是对关系模式的基本要求。 关键点: 每⼀列都只能存放单⼀值 例如:我们开发微博时的 User 表和微博表,⼀个⽤户可以发表多个微博,但设计时需要将⽤户 数据和微博数据单独存放。 第二范式(2NF) 第⼆范式(2NF)是在第⼀范式(1NF)的基础上建⽴起来的,⼀个数据表符合第⼆范式的前提是该数据表符合第⼀范式。 它的规则是要求数据表⾥的所有数据都要和该数据表的主键有完全相依的关系; 如果有哪些数据只和主键的⼀部分有关的话