最近參與了一個項目的開發,在開發的過程中發現數據庫的設計有點意思,順便拿來給大家分享一下。
對於一個項目來說,數據庫無疑是很重要,如果數據庫設計不好,項目就很難開發的優秀,所以一個數據庫的設計就顯得尤其重要。
在我這個項目中,有一個訂單表(orderform),一個商品信息表(googsinfo),一個系統參數表(Syspram)暫且拿這幾張表做例子.在表orderform和googsinfo中,所有的字段一律全部都爲WG01, WG02, WG03, WG04…..WG30這樣的30個字段,這些字段全都是無意義的,如圖:
然後在系統參數表(Sysparam)裏就標明這些表的意義,包括表裏字段的意義,如圖
這裏每個表裏的所有字段都被清楚的表述出它的意義,然後我們在操作SQL語句的時候就只操作系統參數表。比如一條select語句:
原句:SELECT WG01,WG02 FROM FreightInfo
改變後的:SELECT (SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’配送編號’),
(SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’聯繫人電話’) FROM FreightInfo.
當然,大家現在看起來好像改變後的比原句複雜多了,但是如果我們寫一個公共類來解析系統參數表裏的字段,那我們在寫類似SELECT WG01,WG02 FROM FreightInfo
這樣的查詢語句時,就完全沒有必要硬編碼在代碼中,只要通過改變你傳入的參數就可以獲取到不通過的字段,如果你的公共類做得更強大的話,那SQL語句的類型(比如:SELECT,UPDAE,DELETE,INSERT)等你都可以通過傳入參數來得到不同的SQL語句,這就有點像HRIBERNATE,不過不同的是HREBERNATE把配置寫到了XML文件裏,而這裏是把配置寫到了數據庫裏,操作起來更方便。在以後我們就根本不用關心表的結構問題,哪怕它換成了其他的系統,我也只要改動一下系統參數表裏的數據就可以了,完全不用擔心字段的問題,因爲所有的字段都是無意義,這樣使用的重複性就可以大大提高。
這就是我的見解,有什麼不足的地方,還請多多請教!