第一范式
每列都是不可再分的数据单元。比如,我们设计地址字段时,不应该将省份与城市合并在一起,应该拆分成省份与城市两个不同的字段。
第二范式
表中的非主键列不存在对主键的部分依赖。这句不好理解,太拗口了。实质就是:每张表只应该描述一件事。
比如:订单表,就只应该包括订单信息,而不应该有产品的具体信息,产品信息应该单独归为一张产品表。
第三范式
表中的列不存在对非主键列的传递依赖。
通俗版解释:任何字段不能由其他字段派生出来,字段没有冗余。
比如订单表中有顾客编号与顾客姓名两个字段,顾客姓名可以由顾客编号找出,因此,该字段属于冗余字段,不符合第三范式。
反范式
实际上,没有冗余的数据表并非是最好的设计,有些场景,如果某些字段联表查询或者实时计算太耗时,我们就需要添加冗余字段,这种就是以空间换时间的作法。