資料庫設計技巧(二)_PHP教程

來源:互聯網
上載者:User
1.為應用在多條記錄的欄位建立獨立的表格
2.通過一個foreign key來關聯這些表格的值
  我們將url的值放在一個獨立的表格中,這樣我們就可以在以後加入更多的資料,而無需擔心產生重複的值。我們還通
過主索引值來關聯這些欄位:
  users
  userId name company company_address
  1 Joe ABC 1 Work Lane
  2 Jill XYZ 1 Job Street
  urls
  urlId relUserId url
  1 1 abc.com
  2 1 xyz.com
  3 2 abc.com
  4 2 xyz.com
  如上所示,我們建立了獨立的表格,users表中的主鍵userid現在與url表中的foreign key relUserId關聯。現在的情
況好象已經得到了明顯的改善。不過,如果我們要為ABC公司加入一個員工記錄呢?或者更多,200個?這樣我們就必須重
複使用公司名和地址,這明顯不夠冗餘。因此我們將應用第三級正規化方法:
  第三級正規化形式
  1.消除不依賴於該鍵的欄位
  公司名及地址與User Id都是沒有關係的,因此它們應用擁有自己的公司Id:
  users
  userId name relCompId
  1 Joe 1
  2 Jill 2
  companies
  compId company company_address
  1 ABC 1 Work Lane
  2 XYZ 1 Job Street
  urls
  urlId relUserId url
  1 1 abc.com
  2 1 xyz.com
  3 2 abc.com
  4 2 xyz.com
  這樣我們就將companies表中的主鍵comId和users表中名字為relCompId的foreign key關聯起來,就算為ABC公司加入
200個員工,在companies中也只有一條記錄。我們的users和urls表可以不斷地擴大,而無需擔心插入不必要的資料。大部
分的開發人員都認為經過三步的正規化就足夠了,這個資料庫的設計已經可以很方便地處理整個企業的負擔,此看法在大多
數的情況下是正確的。
  我們可以留意一下URL的欄位--你注意到資料的冗餘了嗎?如果給使用者使用者輸入這些url資料的HTML頁面是一個文本
框,可任意輸入的話,這並沒有問題,兩個使用者輸入同樣收藏夾的機率較少,不過,如果是通過一個下拉式的菜單,只讓
使用者選擇兩個url輸入,或者更多一點。這種情況下,我們的資料庫還可以進行下一層級的最佳化--第四步,對於大多數的開
發者來說,這一步都是忽略的,因為它要依賴一個很特別的關係--一個多對多的關係,這在我們的應用中是還沒有遇到過的.

http://www.bkjia.com/PHPjc/631071.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631071.htmlTechArticle1.為應用在多條記錄的欄位建立獨立的表格 2.通過一個foreign key來關聯這些表格的值 我們將url的值放在一個獨立的表格中,這樣我們就可以在...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.