第一范式:每一个列都要确保原子性,即每一列都是不可以拆分的最小单元。
例:
用户id 用户名称 地址 电话
01 小明 xx省xx市xx区 1888888
主键为用户id
这里的地址可以拆分,不符合原子性,可将其删去或拆分以满足第一范式。
第二范式
在满足第一范式的基础上满足每一个列与主键相关,即依赖于主键(此处依赖即可,间接依赖或直接依赖都满足第二范式)。
例:
下表主键为用户id
用户id 用户名 用户电话 产品id 订单id
02 小张 228888 91982 202001
这里的产品id和主键用户id无依赖关系,将其删去所得表即可满足第二范式。
分析:此处的用户名,用户电话与主键用户ID是直接依赖关系,一个用户唯一拥有一个id,名称以及电话,用户创建的时候即一同创建。而此处的订单id与用户id是间接依赖关系,用户通过下单,而后产生订单信息以及订单id。
第三范式:在满足第二范式的基础上,每列对主键都是直接依赖的关系。
还是第二范式那个例子,删去与主键是间接依赖的列订单id即可满足第三范式。
若要记录用户与订单的关系,可建用户id,订单id以及订单相关信息的表,其中订单id为主键,用户id为外键。用外键来辅助记录间接关联关系。