前期工作一定義標准的對象命名規范
一定要定義數據庫對象的命名規范這是筆者一再堅持的一個觀點在開發數據庫項目之前項目開發團隊要先討論確定數據庫對象的命名規范包括函數過程表視圖字段等的命名規則因為我們在數據庫開發過程中會重復的引用這些對象若沒有一個統一的命名規則只有對象的所有者知道其所代表的含義那麼其他數據庫開發人員想引用某個對象的時候就會茫然不知道從何下手所以制定一個統一的數據庫對象命名規范這是數據庫設計的一個必要的前期准備工作
利用前綴區分各個對象在Oracle數據庫中基本的對象有函數過程表視圖等等對於表以外的對象筆者建議通過前綴來對他們進行區分如函數名就用FUN前綴視圖就用View前綴等等如此當在其他對象中調用視圖或者函數的時候就可以通過輸入View前綴讓數據庫系統只列出數據庫當前的所有視圖對象通過這種方法就是縮小我們選擇的范圍提高對象引用的效率
可以根據不同的功能模塊來對基礎表進行命名如對於ERP來說光基礎表就有上千張這麼多的表如何進行有序的管理?筆者建議可以按軟件功能模塊的簡稱作為其前綴如對於財務模塊用到的基礎表可以利用FI前綴;銷售模塊涉及到的基礎表則采用SA前綴通過這種命名規則一看到前綴就可以聯想到表的用途無疑這可以提高表命名的可讀性;也方便數據庫開發人員對表對象的引用
對於字段來說命名規范所涉及到的技巧更加多了如筆者常常會在一些字段的後面加入一個後綴表示這個字段所對應的數據類型如訂單數量是一個典型的數字類型字段則筆者會在後面加入NUM後綴這麼處理後當他們要在其他對象中引用這個字段的時候就不用費心的去想去找資料確定這個字段的數據類型了如在設置字段列名的時候筆者喜歡把表的前綴加入到字段名中如現在銷售訂單中有個銷售訂單ID的字段筆者把它命名為Or_Order_ID;在出貨單上也需要用到這個字段筆者命名為OU_Order_ID當我們在做定單出貨明細表的時候引用這兩個字段時就不需要在前面輸入具體的表名若我們把加入表的前綴兩張表中的字段都命名為Order_ID則在引用他們的時候被參考的表的ID字段要加入表名若其關聯查詢的表越多則每一張表都要加入表名才能夠對其進行引用很明顯前者的引用方式要節省工作量
當然上述的命名規范要根據自己的項目團隊的愛好來定總之一個基本的原則就是命名規范要統一不能夠一個開發團隊三個開發人員一人一套這不利於項目團隊之間的合作
前期工作二考慮系統的靈活性
一個優秀的數據庫管理員在數據庫開發的時候往往會考慮用戶未來的需求變化以提高數據庫的靈活性若用戶每次變更一下需求都要通過變更數據庫對象來實現那這個數據庫也太過於僵硬了
故筆者認為數據庫管理員在對數據庫開發之前要跟客戶進行溝通確定在未來哪些方面可能會發生變更然後采取某些策略對其進行控制力保在不對數據庫進行調整的情況下通過一些簡單的配置實現對需求的調整
如筆者一次在開發一個超市零售系統數據庫的時候筆者在跟客戶的溝通中就遇到了這麼一個細節問題超市產品的價格可能會有一些季節性的調價問題按照以前的設計系統只能夠實現有規律的條件如某類產品統一上挑多少個百分點等等但是這遠遠不能夠滿足企業的需求因為在調整價格之前他們都會通過Excle表格的形式跟供應商確認條件的事情所以超市管理員希望能夠直接根據這份表格對系統中的價格進行更新筆者了解這個信息後就涉及了一個價格更新的批處理程序方便用戶對價格進行成批的更新
這些功能不要看其小但是卻可以給客戶一種很好的感覺說實話現在同類系統之間的抄襲現象已經很嚴重同質化現象越來越突出我們只有在用戶友好性與系統靈活性上下功夫才能夠拉攏客戶引得比較好的知名度
前期工作三充分重視報表的設計工作
用戶在使用系統的時候做多用到的功能是什麼呢?不是數據的更新而是查詢而查詢中%以上都是通過報表功能來實現的所以從數據庫對象的角度來考慮用戶用到的最多的就是報表同時因為報表需要對多張表實現關聯查詢而且其包含的記錄又比較多所以其設計的好壞又直接關系到數據庫的性能
在對報表進行設計的時候除了要充分考慮用戶的需求之外還需要考慮如下幾個關鍵問題
一是記錄的排序問題在報表設計的時候我們希望能夠實現報表一生成其記錄排序就符合用戶的常規需要而不需要用戶再進行調整如有一張庫存交易記錄報表在排序的時候可以按產品來進行排序也可以按交易日期來排序又可以根據單據類型來排序此時數據庫開發人員就需要跟客戶進行溝通看看其喜愛的排序方式是什麼當從數據庫查詢出數據然後用戶再對其重新排序的時候若記錄比較多的話則其仍然需要幾十秒不等的等待時間故合理設置報表紀錄的排序問題是數據庫報表設計之前首先要跟客戶確認的問題
二是在報表中要盡量避免采用系統主鍵由系統產生的主鍵在報表中很難管理如當用戶在具有系統生成主鍵的表內用副鍵進行查找往往會返回多條重復記錄所以在報表中采用系統主鍵來進行檢索不但效率低而且容易引起數據查詢的混亂故在報表設計的時候寧可利用用戶主鍵也不要采用系統主鍵
三是數據匯總盡量通過前台程序實現有時候用戶往往需要對報表中的記錄進行匯總如銷售訂單總的銷售金額當前的出貨累計金額等等這些匯總的功能即可以在報表視圖中實現也可以通過前台程序控制筆者比較傾向與後者因為在數據庫設計的時候即使數據庫管理員跟客戶進行了充分的溝通也難保其後續需求的變化為了提高數據庫的靈活性最好能夠在前台實現報表自定義功能讓用戶根據自身的需求在前台對相關匯總選項進行控制此時就需要數據庫管理員跟前台程序開發人員進行協商確定相關的參數
前期工作四做好ER圖表與數字字典的維護工作
在數據庫開發項目之前項目團隊還是有必要做一份ER圖表並且建立數字字典確實要做好這兩件工作會花費比較多的時間與精力但是若你數據庫開發項目是一個團隊而不是單槍匹馬的話則就會起到很大的作用
ER圖表與數字字典有利於幫助其他開發人員了解數據庫的整個設計思路在數據庫設計之間做好ER圖表以及數字字典可以有效的避免今後可能面臨的管理混亂問題而且數字字典中包換每個字段的數據類型;ER圖表中包含每個表的主外鍵這就方便了項目團隊成員對其他人建立的對象的引用
若做個形象的比喻ER圖表就好像是寫作文的提綱一個提綱列的好壞直接跟文章的質量有關建立了ER圖表之後作為項目負責人就可以給各個項目成員分配工作有利於項目管理員協調各個項目成員的工作
故筆者認為在數據庫項目正式開始之前項目團隊花些時間做好ER圖表以及數據字典的相關工作這是必須的雖然需要耗費比較長的時間可是這個投資到時候肯定會有回報
以上四個前期准備工作是筆者在數據庫開發之前必需要完成的准備工作只要有一項沒有完成筆者就會覺得還有什麼東西忘了似的不敢貿然進行數據庫的開發筆者在這裡強烈建議在數據庫開發之前認真做好這四項基本的准備工作
From:http://tw.wingwit.com/Article/program/Oracle/201311/16980.html