MYSQL資料庫欄位命名及設計規範

2112511463發表於2014-11-14
1.設計原則


1) 標準化和規範化
資料的標準化有助於消除資料庫中的資料冗餘。標準化有好幾種形式,但 Third Normal Form(3NF)通常被認為在效能、擴充套件性和資料完整性方面達到了最好平衡。簡單來說,遵守3NF 標準的資料庫的表設計原 則是:“One Fact in One Place”即某個表只包括其本身基本的屬性,當不是它們本身所具有的屬性時需進行分解。表之間的關係透過外來鍵 相連線。它具有以下特點:有一組表專門存放透過鍵連線起來的關聯資料。
舉例:某個存放客戶及其有關定單的3NF 資料庫就可能有兩個 表:Customer和Order。Order表不包含定單關聯客戶的任何資訊,但表內會存放一個鍵值,該鍵指向Customer表裡包含該客戶資訊的那 一行。
事實上,為了效率的緣故,對錶不進行標準化有時也是必要的。
2) 資料驅動
採用資料驅動而非硬編碼的方式,許多策略變更和 維護都會方便得多,大大增強系統的靈活性和擴充套件性。
舉例,假如使用者介面要訪問外部資料來源(檔案、XML 文件、其他資料庫等),不妨把相應的連線 和路徑資訊儲存在使用者介面支援表裡。還有,如果使用者介面執行工作流之類的任務(傳送郵件、列印信箋、修改記錄狀態等),那麼產生工作流的資料也可以存放在 資料庫裡。角色許可權管理也可以透過資料驅動來完成。事實上,如果過程是資料驅動的,你就可以把相當大的責任推給使用者,由使用者來維護自己的工作流過程。
3) 考 慮各種變化
在設計資料庫的時候考慮到哪些資料欄位將來可能會發生變更。
舉例,姓氏就是如此(注意是西方人的姓氏,比如女性結婚後從夫姓 等)。所以,在建立系統儲存客戶資訊時,在單獨的一個資料表裡儲存姓氏欄位,而且還附加起始日和終止日等欄位,這樣就可以跟蹤這一資料條目的變化。




2. 資料庫涉及字元規範


採用26個英文字母(區分大小寫)和0-9這十個自然數,加上下劃線'_'組成,共63個字元.不能出現其他字元(注 釋除外).
注意事項:
1) 以上命名都不得超過30個字元的系統限制.變數名的長度限制為29(不包括標識字元@).
2) 資料 物件、變數的命名都採用英文字元,禁止使用中文命名.絕對不要在物件名的字元之間留空格.
3) 小心保留詞,要保證你的欄位名沒有和保留詞、資料 庫系統或者常用訪問方法衝突
5) 保持欄位名和型別的一致性,在命名欄位併為其指定資料型別的時候一定要保證一致性.假如資料型別在一個表裡是整 數,那在另一個表裡可就別變成字元型了.




3.資料庫命名規範


資料庫,資料表一律使用字首


正式數 據庫名使用小寫英文以及下劃線組成,儘量說明是那個應用或者系統在使用的.比如:


web_19floor_net
web_car


備 份資料庫名使用正式庫名加上備份時間組成,如:


web_19floor_net_20070403
web_car_20070403


4. 資料庫表命名規範


資料表名使用小寫英文以及下劃線組成,儘量說明是那個應用或者系統在使用的.
相關應用的資料表使用同一字首,如 論壇的表使用cdb_字首,部落格的資料表使用supe_字首,字首名稱一般不超過5字
比如:


web_user
web_group
supe_userspace


備 份資料表名使用正式表名加上備份時間組成,如:


web_user_20070403
web_group_20070403
supe_userspace_20070403


5. 欄位命名規範


欄位名稱使用單片語合完成,首字母小寫,後面單詞的首字母大寫,最好是帶表名字首.
如 web_user 表的字 段: 


userId
userName
userPassword


表與表之間的相關聯欄位要用統一名稱,
如 web_user 表 裡面的 userId 和 web_group 表裡面的 userId 相對應


6.欄位型別規範


規則:用盡量少的儲存空間來存 數一個欄位的資料.
比如能用int的就不用char或者varchar
能用tinyint的就不用int
能用 varchar(20)的就不用varchar(255)
時間戳欄位儘量用int型,如created:表示從 '1970-01-01 08:00:00'開始的int秒數,採用英文單詞的過去式;gmtCreated:表示datetime型別的時間,即形如 '1980-01-01 00:00:00'的時間串,Java中對應的型別為Timestamp


7.資料庫設計文件規範


所 有資料庫設計要寫成文件,文件以模組化形式表達.大致格式如下:


'-------------------------------------------
'    表 名:    web_user
'    作者:    Aeolus(傻魚)
'    日期:    2007-04-11
'    版 本:    1.0
'    描述:    儲存使用者資料
'    具體內容:
'    UserID int,自動增量 使用者 程式碼
'    UserName char(12) 使用者名稱字
'    ......
'--------------------------------------------




8. 索引使用原則:


1) 邏輯主鍵使用唯一的成組索引,對系統鍵(作為儲存過程)採用唯一的非成組索引,對任何外來鍵列採用非成組索引.考慮數 據庫的空間有多大,表如何進行訪問,還有這些訪問是否主要用作讀寫.
2) 大多數資料庫都索引自動建立的主鍵欄位,但是可別忘了索引外來鍵,它們也 是經常使用的鍵,比如執行查詢顯示主表和所有關聯表的某條記錄就用得上.
3) 不要索引blob/text等欄位,不要索引大型欄位(有很多字 符),這樣作會讓索引佔用太多的儲存空間.
4) 不要索引常用的小型表
不要為小型資料表設定任何鍵,假如它們經常有插入和刪除操作就更別 這樣作了.對這些插入和刪除操作的索引維護可能比掃描表空間消耗更多的時間.


9.sql語句規範


所有sql關鍵詞全部大 寫,比如SELECT,UPDATE,FROM,ORDER,BY等,所有的表名和庫名都要用``包含
如:
SELECT COUNT(*) FROM `cdb_members` WHERE `userName` = 'aeolus';


10.其他設計技巧


1) 避免使用觸發器
觸發器的功能通常可以用其他方式實現.在除錯程式時觸發器可能成為干擾.假如你確實需要採用觸發 器,你最好集中對它文件化.
2) 使用常用英語(或者其他任何語言)而不要使用編碼或者拼音首字母縮寫
在建立下拉選單、列表、報表時最好 按照英語名排序.假如需要編碼或者拼音首字母縮寫,可以在旁邊附上使用者知道的英語.
3) 儲存常用資訊
讓一個表專門存放一般資料庫資訊非 常有用.在這個表裡存放資料庫當前版本、最近檢查/修復(對Access)、關聯設計文件的名稱、客戶等資訊.這樣可以實現一種簡單機制跟蹤資料庫,當客 戶抱怨他們的資料庫沒有達到希望的要求而與你聯絡時,這樣做對非客戶機/伺服器環境特別有用.
4) 包含版本機制
在資料庫中引入版本控制 機制來確定使用中的資料庫的版本.時間一長,使用者的需求總是會改變的.最終可能會要求修改資料庫結構.把版本資訊直接存放到資料庫中更為方便. 
5) 編 制文件
對所有的快捷方式、命名規範、限制和函式都要編制文件.
採用給表、列、觸發器等加註釋的資料庫工具.對開發、支援和跟蹤修改非常有 用.
對資料庫文件化,或者在資料庫自身的內部或者單獨建立文件.這樣,當過了一年多時間後再回過頭來做第2 個版本,犯錯的機會將大大減少。
6) 測 試、測試、反覆測試
建立或者修訂資料庫之後,必須用使用者新輸入的資料測試資料欄位.最重要的是,讓使用者進行測試並且同使用者一道保證選擇的資料型別 滿足商業要求.測試需要在把新資料庫投入實際服務之前完成。
7) 檢查設計
在開發期間檢查資料庫設計的常用技術是透過其所支援的應用程式 原型檢查資料庫.換句話說,針對每一種最終表達資料的原型應用,保證你檢查了資料模型並且檢視如何取出資料。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29874631/viewspace-1332528/,如需轉載,請註明出處,否則將追究法律責任。

相關文章