資料庫欄位前綴 (前置詞) 的必要性探討

在「資料庫表單及欄位命名規則實例 」在第二項提到的前綴,相信有很多人也會提出這樣的疑問,為什麼要加前綴,這樣欄位變那麼長,實在一點意義都沒有。


我舉一個例子,不用前綴欄位來命名一個 user 的表單:

name 使用者名稱。

再命名一個 product 表單:

name 產品品稱。

假設今天我們程式都寫好了,突然有一天你要找出所有用到 product.name 欄位的程式時,會發生什麼事呢?

一般的 select 都是 SELECT name FROM product ,不會下成 SELECT product.name FROM product 。

如果用 M$ 的 ADO ,用法是 rs.fields(“name”).value ,那這樣要如可精準的找出 product 表單裡的 name 而不是 user 表單裡的 name 就是非常麻煩的一件事。

雖然使用前綴命名有欄位太長的缺點,但是在大系統程式的維護,前綴的命名可謂非常方便的一項技巧,當然也可以針對比較容易重覆的欄位名稱使用前綴,可以視狀況自行考慮是否使用前綴來提高未來維護的方便性。

(2005.03.13 05:50 新增於 Joyce art 工作室)

那有沒有兼顧不要加前置詞,又能夠輕鬆維護程式的方法?

答案是有的,只是程式架構一開始就要訂好。

所有存取資料庫的動作都必需由自己寫好的 Data Object (註1) 來處理,以 product 為例,要改產品的名字,就必需經由 doProduct 物件來作,以下為 Virtual Code:

doProduct = new Product("23"); //產生一個產品編號為 23 的 Data Object
doProduct.setName("測試商品"); //設定要更改的名稱。
doProudct.update(); //更新至資料庫。

如此如果欄位有任何變動,或是想對資料庫的動作做更改,只需更改 Data Object 裡面的欄位即可。

通常軟體大量用 OOP 的方式來處理資料庫,的確會降低整體程式的效能。但是以目前硬體飛快進步的腳步來看,以寫出易維護、可攜性高的程式為優先考量也是無可厚非的。^^

註1:
Data Object 或稱為 Data Access Object ,不過因為 DAO 這個名字 M$ 早期已經拿去用了,所以簡稱 Data Object 會比較不會弄混。

(2005.03.26 12:54PM 新增)

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar