數據庫命名規範(表、字段名)
一.實體和屬性的命名
1.常用單詞已經進行了縮寫,在命名過程當中,根據語義拼湊縮寫即可。注意,由於ORCAL數據庫會將字段名稱統一成大寫或者小寫中的一種,所以要求加上下劃線
舉例:
定義的縮寫 Sales: Sal 銷售;
Order: Ord 訂單;
Detail: Dtl 明細;
則銷售訂單名細表命名爲:Sal_Ord_Dtl;
2. 如果表或者是字段的名稱僅有一個單詞,那麼建議不使用縮寫,而是用完整的單詞。
舉例:
定義的縮寫 Material Ma 物品;
物品表名爲:Material, 而不是 Ma.
但是字段物品編碼則是:Ma_ID;而不是Material_ID
3. 所有的存儲值列表的表前面加上前綴Z
目的是將這些值列表類排序在數據庫最後。
4. 所有的冗餘類的命名(主要是累計表)前面加上前綴X
冗餘類是爲了提高數據庫效率,非規範化數據庫的時候加入的字段。或者表
5. 關聯類通過用下劃線連接兩個基本類之後,再加前綴R的方式命名,後面按照字母順序羅列兩個表名或者表名的縮寫。
關聯表用於保存多對多關係。
如果被關聯的表名大於10個字母,必須將原來的表名的進行縮寫。如果沒有其他原因,建議都使用縮寫。
舉例:表Object與自身存在多對多的關係,則保存多對多關係的表命名爲:R_Object;
表 Depart和Employee;存在多對多的關係;則關聯表命名爲R_Dept_Emp
6.每一個表都將有一個自動ID作爲主健,邏輯上的主健作爲第一組候選主健來定義,如果是數據庫自動生成的編碼,統一命名爲:ID;如果是自定義的邏輯上的編碼則用縮寫加“ID”的方法命名。
舉例:銷售訂單的編號字段命名:Sal_Ord_ID;如果還存在一個數據庫生成的自動編號,則命名爲:ID。
7.所有的屬性加上有關類型的後綴,類型後綴的縮寫定義見文件《類型後綴縮寫定義》,注意,如果還需要其它的後綴,都放在類型後綴之前。
二.關係的命名
關係的命名基本上按照;如有特殊情況,可以靈活處理.
[must/may/can/should][verb/verb+prep][a/many/exatly num][or a/many]的結構命名
三.域的命名
四.觸發器的命名
五.有關於默認的幾點說明
1. 嚴格依賴關係的主細表,主表的後綴Main可以不寫。
2. 數據類型是文本的字段,類型後綴TX可以不寫。
3. 有些類型比較明顯的字段,可以不寫類型後綴。
4. 非常明顯的關係,可以不寫
數據庫設計規範
數據庫表命名規範
此規範包括表名命名規範,索引命名規範,外鍵命名規範和字段名命名規範。
表名命名規則
數據庫表的命名以是名詞的複數形式且都爲小寫,如cities, categories, friends等等
如果表名由幾個單詞組成,則單詞間用下劃線("_")分割,如subscribed_pois,poi_categories等
表名儘量用全名
表名限制在30個字符內。當表的全名超過30字符時,可用縮寫來減少表名的長度,如description --> desc;information --> info;address --> addr等
表字段名命名規則
字段名爲小寫
字段名爲有意義的單詞,或單詞的縮寫
如果字段由幾個單詞組成,則單詞間用下劃線("_")分割,如client_id,post_code等
字段名限制在30個字符內。當字段名超過30字符時,可用縮寫來減少字段名的長度,如description --> desc;information --> info;address --> addr等
索引命名規則
索引須按照IDX_table_<</SPAN>column>_<</SPAN>column>,其中<</SPAN>table>是建立索引的表名,<</SPAN>column>是建立索引的字段名
索引名限制在30個字符內。當索引名超過30字符時,可用縮寫來減少索引名的長度,如description --> desc;information --> info;address --> addr等
主鍵、外鍵命名規則
主鍵按照PK_<</SPAN>table>的規則命名,其中<</SPAN>table>爲數據庫表名
唯一鍵按照UK_<</SPAN>table>_<</SPAN>column>的規則命名,其中<</SPAN>table>爲數據塊表名,<</SPAN>column>爲字段名
外鍵按照FK_<</SPAN>pppp>_<</SPAN>cccc>_<</SPAN>nn>的規則命名,其中<</SPAN>pppp>爲父表名,<</SPAN>cccc>爲子表名,<</SPAN>nn>爲序列號
數據庫規範化設計的一些基本要求:
一、表中應該避免可爲空的列。
雖然表中允許空列,但是,空字段是一種比較特殊的數據類型。數據庫在處理的時候,需要進行特殊的處理。如此的話,就會增加數據庫處理記錄的複雜性。當表中有比較多的空字段時,在同等條件下,數據庫處理的性能會降低許多。
解決方法:一是通過設置默認值的形式,來避免空字段的產生。二是若一張表中,允許爲空的列比較多,接近表全部列數的三分之一。而且,這些列在大部分情況下,都是可有可無的。若數據庫管理員遇到這種情況,建議另外建立一張副表,以保存這些列。
二、表不應該有重複的值或者列。
三、表中記錄應該有一個唯一的標識符。
四、數據庫對象要有統一的前綴名。
五、儘量只存儲單一實體類型的數據。
六、儘量符合數據庫的幾個範式。
設計規範
所有字段在設計時,除以下數據類型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary 、varbinary外,必須有默認值。字符型的默認值爲一個空字符值串’’;數值型的默認值爲數值0;邏輯型的默認值爲數值0;
其中:系統中所有邏輯型中數值0表示爲“假”;數值1表示爲“真”。
datetime、smalldatetime類型的字段沒有默認值,必須爲NULL。
當字段定義爲字符串形時建議使用varchar而不用nvarchar。
字段的描述
數據庫中每個字段的描述(Description)如下:
表內的每一個值只能被表達一次
表內的每一行都應當被唯一的標示
表內不應該存儲依賴於其他鍵的非鍵信息
如果字段事實上是與其它表的關鍵字相關聯而未設計爲外鍵引用,需建索引。
如果字段與其它表的字段相關聯,需建索引。
SQL 開發代碼規範
我們規定sql語句編碼的時候程序員需要遵循以下規範:
a 所有的關鍵字的所有字母必須大寫。如果一個常量由幾個詞組成,我們規定兩個詞之間使用下劃線(_)來劃分。表名、列名、視圖名或它們的別名必須和它們的定義保持一致。
b 註釋必須要規範。
其他設計技巧
1)避免使用觸發器
觸發器的功能通常可以用其他方式實現。在調試程序時觸發器可能成爲幹擾。假如你確實需要採用觸發器,你最好集中對它文檔化。
2)使用常用英語(或者其他任何語言)而不要使用編碼在創建下拉菜單、列表、報表時最好按照英語名排序。假如需要編碼,可以在編碼旁附上用戶知道的英語。
3)保存常用信息。讓一個表專門存放一般數據庫信息非常有用。在這個表裏存放數據庫當前版本、最近檢查/修復、關聯設計文檔的名稱、客戶等信息。這樣可以實現一種簡單機制跟蹤數據庫,當客戶抱怨他們的數據庫沒有達到希望的要求而與你聯繫時,這樣做對非客戶機/服務器環境特別有用。
4)包含版本機制。在數據庫中引入版本控制機制來確定使用中的數據庫的版本。時間一長,用戶的需求總是會改變的。最終可能會要求修改數據庫結構。把版本信息直接存放到數據庫中更爲方便。
5)編制文檔。對所有的快捷方式、命名規範、限制和函數都要編制文檔。採用給表、列、觸發器等加註釋的數據庫工具。對開發、支持和跟蹤修改非常有用。對數據庫文檔化,或者在數據庫自身的內部或者單獨建立文檔。這樣,當過了一年多時間後再回過頭來做第2 個版本,犯錯的機會將大大減少。
6)測試、測試、反覆測試。建立或者修訂數據庫之後,必須用用戶新輸入的數據測試數據字段。最重要的是,讓用戶進行測試並且同用戶一道保證選擇的數據類型滿足商業要求。測試需要在把新數據庫投入實際服務之前完成。
7)檢查設計。在開發期間檢查數據庫設計的常用技術是通過其所支持的應用程序原型檢查數據庫。換句話說,針對每一種最終表達數據的原型應用,保證你檢查了數據模型並且查看如何取出數據。