MYSQL數據庫命名及設計規範

1.設計原則web

1) 標準化和規範化
數據的標準化有助於消除數據庫中的數據冗餘。標準化有好幾種形式,但Third Normal Form(3NF)一般被認爲在性能、擴展性和數據完整性方面達到了最好平衡。簡單來講,遵照3NF 標準的數據庫的表設計原則是:「One Fact in One Place」即某個表只包括其自己基本的屬性,當不是它們自己所具備的屬性時需進行分解。表之間的關係經過外鍵相鏈接。它具備如下特色:有一組表專門存放經過鍵鏈接起來的關聯數據。
舉例:某個存放客戶及其有關定單的3NF 數據庫就可能有兩個表:Customer和Order。Order表不包含定單關聯客戶的任何信息,但表內會存放一個鍵值,該鍵指向Customer表裏包含該客戶信息的那一行。
事實上,爲了效率的緣故,對錶不進行標準化有時也是必要的。
2) 數據驅動
採用數據驅動而非硬編碼的方式,許多策略變動和維護都會方便得多,大大加強系統的靈活性和擴展性。
舉例,假如用戶界面要訪問外部數據源(文件、XML 文檔、其餘數據庫等),不妨把相應的鏈接和路徑信息存儲在用戶界面支持表裏。還有,若是用戶界面執行工做流之類的任務(發送郵件、打印信箋、修改記錄狀態等),那麼產生工做流的數據也能夠存放在數據庫裏。角色權限管理也能夠經過數據驅動來完成。事實上,若是過程是數據驅動的,你就能夠把至關大的責任推給用戶,由用戶來維護本身的工做流過程。
3) 考慮各類變化
在設計數據庫的時候考慮到哪些數據字段未來可能會發生變動。
舉例,姓氏就是如此(注意是西方人的姓氏,好比女性結婚後從夫姓等)。因此,在創建系統存儲客戶信息時,在單獨的一個數據表裏存儲姓氏字段,並且還附加起始日和終止日等字段,這樣就能夠跟蹤這一數據條目的變化。sql


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) 檢查設計在開發期間檢查數據庫設計的經常使用技術是經過其所支持的應用程序原型檢查數據庫.換句話說,針對每一種最終表達數據的原型應用,保證你檢查了數據模型而且查看如何取出數據.

相關文章
相關標籤/搜索