資料庫定義規範(可以借鑑,不是硬性標準)

十五樓亮哥發表於2015-01-28
 一:表名定義規範:
(1)資料庫表的命名以是名詞的複數形式且都為小寫,如cities, categories, friends等等 

這一條不是硬性規定,可以看個人習慣,統一就好。


(2)如果表名由幾個單片語成,則單詞間用下劃線("_")分割,如subscribed_pois,poi_categories等 


(3)表名儘量用全名 


(4)表名限制在30個字元內。當表的全名超過30字元時,可用縮寫來減少表名的長度,如description --> desc;information --> info;address --> addr等 
 
(5)同類資料庫物件要有統一的字首名
  一個比較複雜的系統,資料庫表往往很多,要快速定位自己需要的表,不太容易。因此,可以在同一個模組     中的表,加上一個統一的字首。
  比如許可權管理相關的表可以統一加一個字首p_。使用者表p_user;角色表p_role;組織表p_orgnization;
  許可權表p_power;
  中間表加字首rel_
 
 
 
 
 二:欄位名定義規範

(1)資料庫欄位全部採用小寫英文單詞


(2)欄位長度不宜過長,儘量簡潔明瞭
 欄位名限制在30個字元內。當欄位名超過30字元時,可用縮寫來減少欄位名的長度,

 如description --> desc;information --> info;address --> addr等 


(3)如果表或者是欄位的名稱僅有一個單詞,那麼建議不使用縮寫,而是用完整的單詞。


(4)如果表或者欄位由多個單詞構成,單詞之間用”_”隔開。

    實體屬性的首字母小寫,如果有多個單詞,其他單詞的首字母大寫。
    比如:
         /**
* 建立時間
*/
@Column(name = "creation_time")
private long creationTime;

(5)常用的欄位例如name,不宜直接用name,最好定義為xx_name.

  防止關聯查詢的時候,兩個表的欄位名稱一樣,不方便處理。可能還需要起別名as


(6)欄位名稱儘量避免中文拼音


(7)欄位儘量避免關鍵字


(8)表中應該避免可為空的列。
雖然表中允許空列,但是,空欄位是一種比較特殊的資料型別。
資料庫在處理的時候,需要進行特殊的處理。如此的話,就會增加資料庫處理記錄的複雜性。
當表中有比較多的空欄位時,在同等條件下,資料庫處理的效能會降低許多。
解決方法:一是通過設定預設值的形式,來避免空欄位的產生。


(8)不能為空的欄位最好加上預設值
所有欄位在設計時,除以下資料型別timestamp、datetime外,必須有預設值。
字元型的預設值為一個空字元值串’’;
數值型的預設值為數值0;
布林型的預設值為數值0;系統中所有邏輯型中數值0表示為“假”;數值1表示為“真”。
datetime、smalldatetime型別的欄位沒有預設值,必須為NULL。







相關文章