1. 程式人生 > >資料庫設計的最佳實踐

資料庫設計的最佳實踐

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倍的維護/重新設計成本。