動(dòng)態(tài)網(wǎng)站的設計中怎么提升應用性能?
??在動(dòng)態(tài)網(wǎng)站的設計中,數據庫設計的重要性不言而喻動(dòng)態(tài)數據應用。如果設計不當,查詢(xún)起來(lái)就非常吃力,程序的性能也會(huì )受到影響。無(wú)論你使用的是MySQL或者Oracle數據庫,通過(guò)進(jìn)行正規化的表格設計,可以令你的PHP代碼更具可讀性,更容易擴展,從而也會(huì )提升應用的性能。
簡(jiǎn)單說(shuō)來(lái),正規化就是在表格設計時(shí),消除冗余性和不協(xié)調的從屬關(guān)系動(dòng)態(tài)數據應用。在本文中,我將通過(guò)五個(gè)漸進(jìn)的過(guò)程來(lái)告訴你在設計中應該了解的正規化技巧。從而建立一個(gè)可行而且 效率高的數據庫。本文也會(huì )詳細分析一下可以利用的關(guān)系類(lèi)型。
這里假定我們要建立一個(gè)用戶(hù)信息的表格,其中要存儲用戶(hù)的名字、公司、公司地址和一些個(gè)人的收藏夾或url動(dòng)態(tài)數據應用。
??在開(kāi)始時(shí)動(dòng)態(tài)數據應用,你可能定義一個(gè)如下的表格結構:
零狀態(tài)形式
users
name company company_address url1 url2
Joe ABC 1 Work Lane abc動(dòng)態(tài)數據應用。com xyz。com
Jill XYZ 1 Job Street abc動(dòng)態(tài)數據應用。
??com xyz動(dòng)態(tài)數據應用。com
由于沒(méi)有進(jìn)行任何的正規化處理,我們將這種形式的表稱(chēng)為零狀態(tài)形式的表動(dòng)態(tài)數據應用。留意其中的url1和url2字段---如果我們在應用中需要第三個(gè)url呢?這樣你就要在表格中多加一列,很明顯,這不是一個(gè)好辦法。如果你要創(chuàng )建一個(gè)富有擴展性的系統,你就要考慮使用第一個(gè)正規化的形式,并且應用到該表格中。
第一級正規化形式
1動(dòng)態(tài)數據應用。消除每個(gè)表格中重復的組。
2動(dòng)態(tài)數據應用。為每套相關(guān)的數據建立一個(gè)獨立的表格。
*動(dòng)態(tài)數據應用。使用一個(gè)主鍵來(lái)標識每套相關(guān)的數據。
以上的表格明顯違反了上面第一條的規定,那么第三條的主鍵又是什么意思呢?很簡(jiǎn)單,它只是在每個(gè)記錄中加入一個(gè)唯一的、自動(dòng)增加的整型值動(dòng)態(tài)數據應用。
??通過(guò)這個(gè)值,就可以將兩個(gè)姓名一樣的記錄區分開(kāi)來(lái)動(dòng)態(tài)數據應用。通過(guò)應用第一級正規化形式,我們得到了以下的表格:
users
userId name company company_address url動(dòng)態(tài)數據應用。