萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle數據庫設計要做到五戒

Oracle數據庫設計要做到五戒

眾所周知,數據庫設計的好壞直接關系到數據庫運行的效率。根據筆者的經驗,對於提升數據庫性能來說,合理的數據庫設計,比升級服務器的硬件配置,還要來的有效。但是,筆者無論是在跟同事合作,又或者是在論壇上跟相關同行交流的時候,總是會發現有些人有一些不好的數據庫設計習慣,影響了數據庫的性能,增加了數據庫管理員的工作量。

筆者認為,為了提升數據庫的性能,在Oracle數據庫設計的時候,要做到五戒。

一戒:在小型表上不要建立索引。

毋庸置疑,索引可以提高數據庫查詢的效率。但是,俗話說,過之則不及。索引也必須用在合時的地方。如果索引設置不當,不但不會提升數據庫的性能,反而會起到相反的作用。如在小型數據庫上設置索引,而且這些表用戶更改的比較頻繁。如員工基本信息表,就是簡單的不超過十個字段。這個表用戶需要經常的進行插入與刪除操作。當進行這些變更作業的時候,需要對索引進行維護。而這個維護的工作量可能比掃描表空間消耗更多的存儲空間。從而不但起步到改善數據庫性能的作用,反而是在拖後腿。

所以,在數據庫設計的時候,要做到的第一個戒條就是,不要再用戶經常更改的小型表上建立索引。否則的話,是得不償失的。

二戒:不要用用戶的鍵。

如我們在設計一個ERP系統數據庫的時候,有一張銷售訂單表。在這張表中,有一個銷售訂單號。那麼我們能否利用這個單號作為關聯其他表的外鍵呢?如在銷售出貨單上,需要關聯到銷售訂單。這個時候,我們能否把銷售訂單單號作為跟出貨單關聯的關鍵字呢?

答案是可以的,但是不是最優選擇。我們可以看一下ERP的後台數據庫。在銷售訂單表上,除了銷售訂單號這個唯一表示銷售訂單紀錄的字段外,還有一個字段就是銷售訂單ID。在前台的出貨單界面上雖然顯示的是銷售訂單號碼,但是,在後台卻存儲著的是銷售訂單ID。也就是說,數據庫不是以用戶的鍵作為主鍵,而是采用了數據庫自動維護的單據ID這個字段。

為什麼要這麼設計呢?這就是筆者今天要談的第二個戒條,不要用用戶的鍵。通常情況下,不要選擇用戶可編輯的字段作為外鍵或者主鍵。因為這會增加我們額外的工作量。

如果我們把銷售訂單號作為外鍵的話,則在創建銷售訂單紀錄後還要對用戶編輯字段的行為施加限制,如判斷是否違反外鍵的強制性規則等等。有些系統把銷售訂單號設置為外鍵的話,則往往是把這個字段設置為系統自動編號,並且用戶不可更改。可是,在實際工作中,企業員工往往需要編輯這個字段。員工需要編輯這些不可編輯的字段時系統缺乏靈活性的缺陷就體現出來了。而且,當用戶輸入完數據保存的時候再提示紀錄不符合要求,則也不是很人性化的設計。

另外,我們還必須為此設計一些檢測和糾正鍵沖突的方法。如考慮這個外鍵的直是否在其他數據表中存在等等。雖然這通常只需要我們花點時間就可以搞定。但是從數據庫性能上來說,這個代價就比較大了。再則,如此的話,就不能夠很好的把系統的基本數據跟企業員工的數據實現很好的隔離。

所以,筆者認為,不要用用戶的鍵來作為我們數據庫設計的主鍵或則外鍵。或者說,數據庫設計時用到的鍵要讓數據庫系統進行自動維護,用戶不得更改這個維護規則。

  • 共2頁:
  • 上一頁
  • 1
  • 2
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved