20個資料庫設計的最佳實踐

2021-06-03 17:22:01 字數 1461 閱讀 4751

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

20個資料庫設計最佳實踐

使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...

20個資料庫設計最佳實踐

使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。資料表名不要使用空格。資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tblschool,或...

20個資料庫設計最佳實踐

1 使用明確 統一的標明和列名,例如 school,schoolcourse,courceid。2 資料表名使用單數而不是複數,例如 studentcourse,而不是studentcourses。3 資料表名不要使用空格。4 資料表名不要使用不必要的字首或者字尾,例如使用school,而不是tbl...