資料庫MySQL-設計規範

  • 2020 年 2 月 13 日
  • 筆記

一、MYSQL資料庫設計規範

1、資料庫命名規範

a、採用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下劃線』_'組成; b、命名簡潔明確(長度不能超過30個字元); c、例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log給資料庫加個前綴; d、除非是備份資料庫可以加0-9的自然數:user_db_20151210;

2、資料庫表名命名規範

a、採用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下劃線』『組成; b、命名簡潔明確,多個單詞用下劃線』'分隔; 例如:

user_login, user_profile, user_detail, user_role, user_role_relation,         user_role_right, user_role_right_relation

註:表前綴』user_'可以有效的把相同關係的表顯示在一起;

3、資料庫表欄位名命名規範

a、採用26個英文字母(區分大小寫)和0-9的自然數(經常不需要)加上下劃線』『組成; b、命名簡潔明確,多個單詞用下劃線』'分隔; 例如:user_login表欄位 user_id, user_name, pass_word, eamil, tickit, status, mobile, add_time; c、每個表中必須有自增主鍵,add_time(默認系統時間) d、表與表之間的相關聯欄位名稱要求儘可能的相同;

4、資料庫表欄位類型規範

用盡量少的存儲空間來存數一個欄位的數據; 例如:能使用int就不要使用varchar、char,能用varchar(16)就不要使用varchar(256); IP地址最好使用int類型; 固定長度的類型最好使用char,例如:郵編; 能使用tinyint就不要使用smallint,int; 最好給每個欄位一個默認值,最好不能為null;

5、資料庫表索引規範

命名簡潔明確,例如:user_login表user_name欄位的索引應為user_name_index唯一索引; 為每個表創建一個主鍵索引; 為每個表創建合理的索引; 建立複合索引請慎重;

6、簡單熟悉資料庫範式

1、第一範式(1NF):欄位值具有原子性,不能再分(所有關係型資料庫系統都滿足第一範式); 例如:姓名欄位,其中姓和名是一個整體,如果區分姓和名那麼必須設立兩個獨立欄位;

2、第二範式(2NF):一個表必須有主鍵,即每行數據都能被唯一的區分; 備註:必須先滿足第一範式; 3、第三範式(3NF):一個表中不能包涵其他相關表中非關鍵欄位的資訊,即數據表不能有沉余欄位;

備註:必須先滿足第二範式; 備註:往往我們在設計表中不能遵守第三範式,因為合理的沉余欄位將會給我們減少join的查詢;

例如:相冊表中會添加圖片的點擊數欄位,在相冊圖片表中也會添加圖片的點擊數欄位;