資料庫設計第一範式

來源:互聯網
上載者: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 欄位的限制問題,不過這樣的處理後又帶來了一個新的問題。每次在users 表中插入一條記錄的時候,我們都必須重複所有的公司和使用者資料。這樣不僅令資料庫比以前大了,而且很容易出錯。因此還要經過第二級正規化處理。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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