資料庫正規化和設計技巧(1)_PHP教程

來源:互聯網
上載者:User
在動態網站的設計中,資料庫設計的重要性不言而喻。如果設計不當,查詢起來就非常吃力,程式的效能也會受到影響。無論你使用的是mySQL或者Oracle資料庫,通過進行正規化的表格設計,可以令你的PHP代碼更具可讀性,更容易擴充,從而也會提升應用的效能。
  簡單說來,正規化就是在表格設計時,消除冗餘性和不協調的從屬關係。在本文中,我將通過五個漸進的過程來告訴你在設計中應該瞭解的正規化技巧。從而建立一個可行而且 效率高的資料庫。本文也會詳細分析一下可以利用的關聯類型。
  這裡假定我們要建立一個使用者資訊的表格,其中要儲存使用者的名字、公司、公司地址和一些個人的收藏夾或url。在開始時,你可能定義一個如下的表格結構:
  零狀態形式
  users
  name company company_address url1 url2
  Joe ABC 1 Work Lane abc.com xyz.com
  Jill XYZ 1 Job Street abc.com xyz.com
  由於沒有進行任何的正規化處理,我們將這種形式的表稱為零狀態形式的表。留意其中的url1和url2欄位---如果我們在應用中需要第三個url呢?這樣你就要在表格中多加一列,很明顯,這不是一個好辦法。如果你要建立一個富有擴充性的系統,你就要考慮使用第一個正規化的形式,並且應用到該表格中。
  第一級正規化形式
  1.消除每個表格中重複的組
  2.為每套相關的資料建立一個獨立的表格
  3.使用一個主鍵來標識每套相關的資料
  以上的表格明顯違反了上面第一條的規定,那麼第三條的主鍵又是什麼意思呢?很簡單,它只是在每個記錄中加入一個唯一的、自動增加的整型值。通過這個值,就可以將兩個姓名一樣的記錄區分開來。通過應用第一級正規化形式,我們得到了以下的表格:
  users
  userId name company company_address url
  1 Joe ABC 1 Work Lane abc.com
  1 Joe ABC 1 Work Lane xyz.com
  2 Jill XYZ 1 Job Street abc.com
  2 Jill XYZ 1 Job Street xyz.com
  現在我們的表格可以說已經處在第一級正規化的形式了,它已經解決了url欄位的限制問題,不過這樣的處理後又帶來了一個新的問題。每次在user表中插入一條記錄的時候,我們都必須重複所有的公司和使用者資料。這樣不僅令資料庫比以前大了,而且很容易出錯。因此還要經過第二級正規化處理。

http://www.bkjia.com/PHPjc/631085.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631085.htmlTechArticle在動態網站的設計中,資料庫設計的重要性不言而喻。如果設計不當,查詢起來就非常吃力,程式的效能也會受到影響。無論你使用的是myS...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.