20個數據庫設計的最佳實踐

20個數據庫設計的最佳實踐


1、使用定義明確的表或列名,並保持一致(例如,School、StudentCourse、CourseID)。 


2、使用單數形式的表名(即,用StudentCourse而非StudentCourses)。表代表了實體的合集,不需要複數形式。 

3、不要在表名中使用空格。否則你將在定義表時不得不使用“{”、“[”等字符(即爲了訪問表Student Course,你須得書寫“Student Course”。使用StudentCourse足夠了)。 

4、不要在表名中加入不必要的前綴或後綴(即,命名School即可,不必爲TblSchool、SchoolTable等)。 

5、加密密碼,保證安全性。需要時可在應用中解密它們。 

6、在所有的表中使用整型ID字段。即便眼下ID還用不着,將來也會有用到的時候(例如在關聯表中、索引等)。 

7、使用整數(或相關)類型的數據列來創建索引。Varchar列索引會導致性能問題。 

8、對布爾值使用bit字段。使用Integer或Varchar類型存儲毫無必要。同時,在這些列名中加入Is描述。 

9、對數據庫訪問進行驗證。任何用戶都不應給予admin角色。 

10、若非必要的話,避免使用“select *”查詢語句。爲了更好的性能,請使用“select [required_columns_list]”。 

11、若程序代碼很大,可使用ORM(對象關係映射)框架(如Hibernate、iBatis)工具。關於其性能問題可通過詳細配置參數來應付。 

12、將那些不使用或不常用而又較大的表(table parts)區隔到不同的物理存儲空間,以便提供更好地查詢性能。 

13、對重要的數據庫系統,使用災難恢復方案和安全服務,比如故障切換集羣(failover clustering)、自動備份、複製等。 

14、爲了保證數據完整性,請使用約束(如外鍵、Check、Not null約束等)。不要給予對應用代碼的完整控制權。 

15、缺乏數據庫文檔的習慣非常不好(evil)。用ER圖對數據庫設計模型進行描述。同時記得編寫觸發器、存儲過程等腳本的代碼。 

16、對頻繁進行的查詢使用索引。Analyser工具可用於決定index在何處定義。對於查詢獲取大量列,聚簇索引(clustered index)通常更好。而對於點查詢,可使用非聚簇索引。 

17、將數據庫服務器與Web服務器放置在不同的計算機中。這可以提供更好的安全性能(攻擊者不能直接訪問數據),而且由於可以限制訪問請求數及進程量,服務器也能獲得更的CPU及內存性能。 

18、圖像和Blob列一定不要定義在查詢頻繁的表中,這也是出於性能考慮。可將這些數據放在單獨的表中,並在查詢表中建立指向它們的指針。 

19、規範化(Normalization)是必須的,以進一步優化應用性能。否則可能面臨過多的數據副本,當然過渡規範化(over-normalization)則會導致大量跨太多表的連接。這兩者都會影響到性能。 

20、同樣也要在數據庫建模及設計上花些功夫。若爲此省下時間,則很可能面臨10倍乃至100/1000倍的維護/重新設計成本。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章