資料庫設計的最佳實踐

2021-12-29 22:57:21 字數 1460 閱讀 5587

資料庫設計的最佳實踐

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

資料庫設計的幾條最佳實踐

以下幾條經驗是我在幾年工作中總結出來的,而且現在工作中一直在使用的原則 1.減少關聯查詢的表數量,控制在3個以內 2.表設計時能冗餘就冗餘,資料的一致性靠業務邏輯去控制 3.忘掉外來鍵,不要依靠底層db給你檢查資料的不一致,同上 忘掉書本裡的那些概念吧,聽起來有些叛逆 4.查詢語句中盡量不用in,n...

資料庫設計的幾條最佳實踐

以下幾條經驗是我在幾年工作中總結出來的,而且現在工作中一直在使用的原則 1.減少關聯查詢的表數量,控制在3個以內 2.表設計時能冗餘就冗餘,資料的一致性靠業務邏輯去控制 3.忘掉外來鍵,不要依靠底層db給你檢查資料的不一致,同上 忘掉書本裡的那些概念吧,聽起來有些叛逆 4.查詢語句中盡量不用in,n...

資料庫優化的最佳實踐

1 謹慎而有效地使用索引 選擇合理的索引 字首性及可選性 刪除沒有用的索引。2 使用規範化,但不要使用過頭 規範化 至少是第三正規化 是乙個易於理解且標準的方法。然而,在有些情況下,你可能希望違反這些規則。查詢表通常是規範化的產物,也就是說,你建立了乙個特殊的表,這個表包含了在其他表中被頻繁使用的相...