盡管軟件發展中的熱點技術層出不窮不斷地變化有一些東西卻一直未曾改變其中之一就是開發人員對數據庫的使用和設計開發
你可能會興奮地緊跟時尚創建一個AJAX Web界面或者使用最近迷人的Windows用戶界面但是透過這些各種各樣的外觀界面你可能依然需要從後台數據庫中提取或存取所需要的數據——這一點就如同十多年以前人們對數據庫的操作是一樣的
然而令人吃驚的是現在還有很多開發者依然在不斷地重復著很多年以前就存在的數據庫使用和開發上的錯誤或許是有太多的開發者只是來學習如何使用一個數據庫而不是真正的去研究它以下是筆者作為一個開發者個人在平時的開發工作中所精選出的數據庫開發者常犯的十大錯誤以飨讀者和同行
選擇了錯誤的數據庫
不是所有的數據庫都可以用來完成你的任務這意味著當你在使用數據庫來做任何開發工作和其他事情前你必須選擇合適的數據庫例如我們經常看到一些Access數據庫沒有能力處理的大容量數據集對於SQL Server來說卻像玩小孩子的游戲一樣輕松地完成處理但是對於只需要處理幾百行數據的需求有的人卻花錢來購買SQL Server這些都是錯誤的做法
廣泛地來說在當今市場中的數據庫可以分為三個層次桌面和嵌入數據庫——適合於處理小型任務一些大型數據庫產品的Express版也是不錯的可以處理數G條數據而真正的企業級數據庫像SQL ServerOracle和DB的數據處理能力是非常驚人的你可以毫不猶豫地把數據拋給它們
因此在你選擇數據庫前你需要對於你的數據進行一次客觀真實的分析從而選擇適合你的開發工作和實際需求的數據庫產品
選擇了太多的數據庫
諸如ODBCJDBC和OLEDB等應用程序編程接口的出現大大促進和提升了數據庫獨立性也就是說開發人員可以這樣來編寫你的應用程序你可以讓你的應用程序支持使用任何數據庫來進行數據存儲
然而這種情況是要付出一些代價的我曾經看到有的開發團隊為了追求應用程序的數據庫無關性專門編寫了應用程序將所有的SQL語句轉換成一些底層的語言以便讓所有的數據庫都能理解並執行但是這樣做的同時也喪失了現有數據庫的一些高級功能
那麼為什麼這麼做呢?可能是出於這樣的考慮某些客戶在將來的使用中可能想切換到Oracle或DB或FoxPro或其他的什麼數據庫采用上面的這種做法或許是現在先准備好了未雨綢缪
對於此另一種相反的做法是當你開始開發一個新產品的時候選擇一個存儲引擎並開始在此基礎上編寫你的應用程序如果你的產品足夠好人們會安裝你指定的數據庫因此你不用浪費時間和精力來支持一種假想的用戶需求
了解你的數據
在我們使用數據庫的過程中會碰到很多需要考慮的問題例如有些客戶編號可能並不是我們通常認為的七位而是六位而有一些公司和企業出於保護個人隱私的考慮可能不一定非要求員工輸入他們的身份證號碼或者銀行帳號因此這中數據類型在數據庫搭建和開發中必須設置成可以為空(NULL)
也就是說數據庫開發和設計不能脫離實際情況進行不能遠離實際業務規則對數據庫開發者來說必須要完全了解用戶真正輸入數據的需求是什麼並根據這些數據來合理地設計數據字段的大小類型以及什麼規則等等否則等待你的將是一次又一次地返回頭來進行修改工作因此你要學會在開始的時候就對你需要處理的數據具有非常全面深入的了解要盡量考慮到各種意外的情況
數據庫不像Excel一樣人人會用
現在有一種認識上的誤區尤其是在一些小單位的管理者眼中他們總認為任何開發者都知道如何去合理地搭建一個數據庫
很明顯這種誤解讓我很困惑既然你不會假定任何開發者都知道如何用C#編程或創建一個Web服務那麼為什麼要假定每個開發者都是數據庫專家呢?
這種假設所帶來的最後結果是太多的數據庫被一些甚至從來沒有聽說過術語規范化(term normalization)的人所設計很多數據庫的功能根本沒有被合理地運用如果你是這樣一個開發者的話那麼在你設計數據庫之前你需要加強這方面的培訓和學習了高效的數據庫設計是你必須了解和掌握的技巧而不要奢望可以通過失敗的教訓來了解到這一點
[] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16316.html