我的家園

          我的家園

          導語:數(shù)據(jù)庫設計是整個程序的重點之一,為了支持相關程序運行,最佳的數(shù)據(jù)庫設計往往不可能一蹴而就,只能反復探尋并逐步求精,這是一個復雜的過程,也是規(guī)劃和結構化數(shù)據(jù)庫中的數(shù)據(jù)對象以及這些數(shù)據(jù)對象之間關系的過程。下面給出了20個數(shù)據(jù)庫設計最佳實踐,當然,所謂最佳,還是要看它是否適合你的程序。一起來了解了解吧。

          1. 使用明確、統(tǒng)一的標明和列名,例如 School, SchoolCourse, CourceID。
          2. 數(shù)據(jù)表名使用單數(shù)而不是復數(shù),例如 StudentCourse,而不是StudentCourses。
          3. 數(shù)據(jù)表名不要使用空格。
          4. 數(shù)據(jù)表名不要使用不必要的前綴或者后綴,例如使用School,而不是TblSchool,或者SchoolTable等等。
          5. 數(shù)據(jù)庫中的密碼要加密,到應用中再解密。 (其實就是散列存儲、單向加密)
          6. 使用整數(shù)作為ID字段,也許現(xiàn)在沒有這個必要,但是將來需要,例如關聯(lián)表,索引等等。
          7. 使用整數(shù)字段做索引,否則會帶來很大的性能問題 。
          8. 使用 bit 作為布爾字段,使用整數(shù)或者varcha是浪費。同時,這類字段應該以“Is”開頭。
          9. 要經過認證才能訪問數(shù)據(jù)庫,不要給每一個用戶管理員權限。
          10. 盡量避免使用“select *”,而使用“select [required_column_list]”以獲得更好的性能。
          11. 假如程序代碼比較復雜,使用ORM框架,例如hibernate,iBatis。ORM框架的性能問題可以通過詳細的配置去解決。
          12. 分割不常使用的數(shù)據(jù)表到不同的物理存儲以獲得更好的性能。
          13. 對于關鍵數(shù)據(jù)庫,使用安全備份系統(tǒng),例如集群,同步等等。
          14. 使用外鍵,非空等限制來保證數(shù)據(jù)的完整性,不要把所有的東西都扔給程序。
          15. 缺乏數(shù)據(jù)庫文檔是致命的。你應該為你的數(shù)據(jù)庫設計寫文檔,包括觸發(fā)器、存儲過程和其他腳本。
          16. 對于經常使用的查詢和大型數(shù)據(jù)表,要使用索引。數(shù)據(jù)分析工具可以幫助你決定如何建立索引。
          17. 數(shù)據(jù)庫服務器和網頁服務器應該放在不同的機器上。這回提高安全性,并減輕CPU壓力。
          18. Image和blob字段不應該定義在常用的數(shù)據(jù)表中,否則會影響性能。
          19. 范式(Normalization)要按照要求使用以提高性能。Normalization做的不夠會導致數(shù)據(jù)冗余,而過度Normalization 會導致太多的join和數(shù)據(jù)表,這兩種情況都會影響性能。
          20. 多花點時間在數(shù)據(jù)庫設計上,否則你將來會付出加倍的時間來償還。(oschina.net蟲蟲譯)

          譯文來自:oschina.net 

          英文原址:javacodegeeks.com 


          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 仲巴县| 左云县| 崇州市| 广昌县| 资溪县| 汽车| 乡宁县| 南澳县| 景东| 安顺市| 杨浦区| 光泽县| 伊宁市| 高台县| 乳源| 潞城市| 闻喜县| 藁城市| 巴林左旗| 牙克石市| 河东区| 崇义县| 浦城县| 化隆| 年辖:市辖区| 静海县| 津市市| 海安县| 志丹县| 澄城县| 新密市| 娱乐| 麻江县| 灯塔市| 商丘市| 吉木萨尔县| 凭祥市| 称多县| 三都| 静乐县| 五原县|