- A+
所属分类:MySQL
第一范式
确保数据表中每列(字段)的原子性,即每个字段都是最小单位,不可拆分。
如:用户表(user)中的 user_name,password,nick_name。
第二范式
在第一范式的基础上,保证表中的每列都与主键相关。
如果一个关系满足第一范式,并且除了主键外的其余字段都依赖于主键,则满足第二范式。
如:一个用户只有一个角色,而一个角色对于多个角色,可参考以下建表:
user 用户表:user_id,user_name,password,nick_name,role_id
role 角色表:role_id,role_name
第三范式
在第二范式的基础上,确保表中的列都与主键直接相关,而不是间接相关。
如:一个用户可以多个角色,一个角色也可以对应多个用户,可参考以下建表:
user 用户表:user_id,user_name,password,nick_name
role 角色表:role_id,role_name
user_role 中间表: id,role_id,user_id
像这样,通过中间表来建立用户表与角色表,且符合范式化的原则,就可以称为第三范式。
反范式
反范式指的是通过增加冗余或者重复的数据来数据库的读性能。
如:在上述 user_role 表中加入 role_name ,减少 join 次数。