什么样的表符合3NF (范式)

表的范式,是首先符合1NF,才能满足2NF , 进一步满足3NF

 

第一范式(1NF): 

即表的列具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sqlserver),就自动的满足1NF。

 

数据库的分类

  • 关系型数据库:mysql/oracle/db2/informix/sysbase/sql server
  • 非关系型数据库:

关系型数据库有一些结构上的缺陷,所以有些人设计了非关系型数据库。

特点: 面向对象或者集合

  • NoSql数据库:

例如,MongoDB(特点:面向文档)

 

 

第二范式(2NF): 

表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现

主键通常不包含业务逻辑,一般是自增的,因为主键不含业务逻辑,所以比较稳定

第三范式(3NF):

 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放. 比如下面的设计就是不满足3NF:

 

反3NF :

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,将降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余

 

反三范式在一对多的关系中很容易遇到

案例 :


相册的浏览次数是可以通过其他表的数据推导出来的,但是这样就会降低效率。

 

你可能感兴趣的:(什么样的表符合3NF (范式))