mysql范式与反范式_MySQL 三种范式以及反范式 | 剑花烟雨江南
第一范式
確保數(shù)據(jù)表中每列(字段)的原子性,即每個(gè)字段都是最小單位,不可拆分。
如:用戶表(user)中的 user_name,password,nick_name。
第二范式
在第一范式的基礎(chǔ)上,保證表中的每列都與主鍵相關(guān)。
如果一個(gè)關(guān)系滿足第一范式,并且除了主鍵外的其余字段都依賴于主鍵,則滿足第二范式。
如:一個(gè)用戶只有一個(gè)角色,而一個(gè)角色對于多個(gè)角色,可參考以下建表:
user 用戶表:user_id,user_name,password,nick_name,role_id
role 角色表:role_id,role_name
第三范式
在第二范式的基礎(chǔ)上,確保表中的列都與主鍵直接相關(guān),而不是間接相關(guān)。
如:一個(gè)用戶可以多個(gè)角色,一個(gè)角色也可以對應(yīng)多個(gè)用戶,可參考以下建表:
user 用戶表:user_id,user_name,password,nick_name
role 角色表:role_id,role_name
user_role 中間表: id,role_id,user_id
像這樣,通過中間表來建立用戶表與角色表,且符合范式化的原則,就可以稱為第三范式。
反范式
反范式指的是通過增加冗余或者重復(fù)的數(shù)據(jù)來數(shù)據(jù)庫的讀性能。
如:在上述 user_role 表中加入 role_name ,減少 join 次數(shù)。
總結(jié)
以上是生活随笔為你收集整理的mysql范式与反范式_MySQL 三种范式以及反范式 | 剑花烟雨江南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web系统数据库服务器,Web Gate
- 下一篇: trace java_使用java动态字