1. 第一范式
确保数据表中每列(字段)的原子性。
假如数据表中每一个字段都是不可再分的最小数据单位,则满足第一范式。
比方:user用户表,包括字段id,username,password
2. 第二范式
在第一范式的基础上更进一步,目的是确保表中的每列都和主键相干。
假如一个关联满足第一范式,而且除了主键以外的其他列,都依赖于该主键,则满足第二范式。
比方:一个用户只要一种角色,而一个角色对应多个用户。则能够按以下体式格局竖立数据表关联,使其满足第二范式。
user用户表,字段id,username,password,role_id
role角色表,字段id,name
用户表经由过程角色id(role_id)来关联角色表
3. 第三范式
在第二范式的基础上更进一步,目的是确保表中的列都和主键直接相干,而不是间接相干。
比方:一个用户能够对应多个角色,一个角色也能够对应多个用户。则能够按以下体式格局竖立数据表关联,使其满足第三范式。
user用户表,字段id,username,password
role角色表,字段id,name
user_role用户-角色中心表,id,user_id,role_id
像如许,经由过程第三张表(中心表)来竖立用户表和角色表之间的关联,同时又相符范式化的准绳,就能够称为第三范式。
4. 反范式化
反范式化指的是经由过程增添冗余或反复的数据来进步数据库的读机能。
比方:在上例中的user_role用户-角色中心表增添字段role_name。
反范式化能够削减关联查询时,join表的次数。
以上就是我整理到的关于MYSQL数据库的建表范式,愿望以后会对人人有所协助。
相干文章:
MySQL索引优化之掩盖索引
mysql字段范例挑选要领
mysql锁和索引之间的联络
以上就是数据库三范式和反范式的细致内容,更多请关注ki4网别的相干文章!