數據表命名和字段命名方法

在開發過程中,我採用多分節數據表命名方法(下劃線命名法)。從實踐來看,望文生義,維護效率很高,自己開發時,我很少看文檔。 

一. 關於大小寫

因爲在編寫軟件過程中,會遇到很多語句會直接輸入sql語句,所以應該作到全部表名,字段名小寫。偶爾見到有的人把字段的開頭用大寫,但是在不區分大小的時候沒問題,在區分大小寫時,簡直就是絆腳石。

我們可以看sql2000的master表。

二。命名方法

1. 表命名方法

主要分連寫法和下劃線兩種方法。

連寫法

如: sysindexkeys,sysfilegroups這適合於較小的數據運用項目,這樣命名簡短使用,編寫sql語句時比較方便。但是在稍微複雜的按模組分類的系統中就顯得力不從心了,因爲涉及到多分層,連續拼寫的英文會比較模糊。並且層次感不強。在強制小寫的情況下,匈牙利命名法顯得無奈。

在不區分大小寫的情況下,駱駝式和pascal命名法失效了。這種方法不適合超過50張表的系統。

下劃線法

這種方法我在使用中是按[模組]+[子模塊]+[表名]+[附加項]

可以看出明顯的層次結構。缺點就是比較長,但是你可以在分模塊時,定義一些明確的縮寫,來強制使用。

比如設計一個用戶表,然後這個表還有多個外鍵表。我是如此命名的:

cust_info

cust_info_city(fk)   cust_info_area(fk)

cust_info_modified  cust_info_deleted  cust_info_stop

這裏有個原則,就是主要的表儘量要短,因爲使用頻率很高。而Fk表我是用dw作成通用件,在需要的欄位用dddw方式展示。

這種方法適合系統不大,細化程度不高的情況。因爲如果細化程度很高,在cust_info的層次上還會有多種細分層次(如cust_info_modified  cust_info_deleted ),所以命名就會增加到四節。就太長了。而且系統升級頻繁的話,命名也存在歧義。比如cust_info_city(fk) 還有外鍵的話。(當然對於一些fk表,一般是char(2)+varchar(16),或者smallint+varchar(16),我們變通的做法是集中在一張表裏,外加一個tabName字段來區分(tab+id+description)。然後在作fk的dw時,where條件裏區分開不同表的FK即可(select id,description from fk_table where tab="tabname")。我認爲是最好的方法。

當然我還見過正規的數據庫,它沒有采用這種字母的分節方法,而是採用模組+數字方式,但原則還是分節,只是更具有系統性。比如INV00100100101,字母在這裏起到分模組的標識作用,而後面的數字分四節,而且前三層可以命名999個子模塊,最後一節可以命名99張表。可以知道,這是大型系統採用的最好方法。在數據字典的強制作用下,設計和編寫都會很規範。並且擴充容易。不容易混亂。對ERP系統等,是最好的方法。(最後的兩位用於某表專署的外鍵或資源等)

這種方法適合table數量在300以上的系統,即使有1000張表也不存在任何問題。一般的ERP系統在500張表以上。是很複雜的,分模組,模塊就顯示必要。

對於procedure命名,同樣實用。因爲存儲器存在系統存儲器,所以首節最好區分開。我實用pr來分開(系統是sp_)。

2. 字段命名

2.1常規命名法

我的原則,儘量短,不用下劃線。並且強制規範化。要縮短長度,必須考慮簡寫。如provider,customer,information,這些必須考慮全局強制統一簡寫法如:prv,cust,info。而對於常用的結構性描述詞,則需全局通用化,比如userid,name,city,town,account,amount,type,class,area,country等。都是簡短有用的,望文生義的詞,不必要縮寫。在不同的表裏儘量強制統一。不要出現雜亂的局面。

字段名如果使用下劃線,在編寫sql語句時非常討厭。因爲表名尚且可以用別名,而字段名沒法偷懶。

2.2. 醜陋的命名法

拼音命名法,數字命名法是很醜陋的。要杜絕

2.3.漢字命名法

在針對報表,導出數據臨時表等非關鍵部分,可以採用漢字命名字段名,也是可以接受的。比如我在項目中有時設計到某個字段用漢字描述都很難理解,試想要用英文來命名更若天書,乾脆就用了漢字命名。但是要遵守一下匈牙利方法,比如:客戶代號,客戶名稱,客戶地址,費用應收產成,費用應收折後。太隨意跟拼音命名法就沒區別了。

 
發佈了159 篇原創文章 · 獲贊 3 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章