熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

正規化的表格設計能提升應用性能(一)

2013-11-13 12:45:56  來源: Oracle 
在動態網站的設計中數據庫設計的重要性不言而喻如果設計不當查詢起來就非常吃力程序的性能也會受到影響無論你使用的是MySQL或者Oracle數據庫通過進行正規化的表格設計可以令你的PHP代碼更具可讀性更容易擴展從而也會提升應用的性能

  

  

  簡單說來正規化就是在表格設計時消除冗余性和不協調的從屬關系在本文中我將通過五個漸進的過程來告訴你在設計中應該了解的正規化技巧從而建立一個可行而且 效率高的數據庫本文也會詳細分析一下可以利用的關系類型

  

  

  這裡假定我們要建立一個用戶信息的表格其中要存儲用戶的名字公司公司地址和一些個人的收藏夾或url在開始時你可能定義一個如下的表格結構

  

  

  零狀態形式

  

  

  users

  

  name company company_address url url

  

  Joe ABC Work Lane

  

  Jill XYZ Job Street

  

  

  由於沒有進行任何的正規化處理我們將這種形式的表稱為零狀態形式的表留意其中的url和url字段如果我們在應用中需要第三個url呢?這樣你就要在表格中多加一列很明顯這不是一個好辦法如果你要創建一個富有擴展性的系統你就要考慮使用第一個正規化的形式並且應用到該表格中

  

  

  第一級正規化形式

  

  

  消除每個表格中重復的組

  

  

  為每套相關的數據建立一個獨立的表格

  

  

  使用一個主鍵來標識每套相關的數據

  

  

  以上的表格明顯違反了上面第一條的規定那麼第三條的主鍵又是什麼意思呢?很簡單它只是在每個記錄中加入一個唯一的自動增加的整型值通過這個值就可以將兩個姓名一樣的記錄區分開來通過應用第一級正規化形式我們得到了以下的表格

  

  

  users

  

  userId name company company_address url

  

   Joe ABC Work Lane

  

   Joe ABC Work Lane

  

   Jill XYZ Job Street

  

   Jill XYZ Job Street

  

  

  現在我們的表格可以說已經處在第一級正規化的形式了它已經解決了url字段的限制問題不過這樣的處理後又帶來了一個新的問題每次在user表中插入一條記錄的時候我們都必須重復所有的公司和用戶數據這樣不僅令數據庫比以前大了而且很容易出錯因此還要經過第二級正規化處理

  

  

  第二級正規化形式

  

  

  為應用在多條記錄的字段建立獨立的表格

  

  

  通過一個foreign key來關聯這些表格的值


From:http://tw.wingwit.com/Article/program/Oracle/201311/16547.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.