我有存儲所有客戶信息的XML。每當我的PHP代碼運行時,它都會將來自XML的客戶數據插入到數據庫中。這是桌子。並非所有客戶都是網絡用戶,所以我將所有客戶信息直接保存到一張名爲「客戶」的表格中。如何使用規範化去除冗餘?
客戶:
customer_id int(40) primary key
CustomerAccountNumber varchar(60)
CustomerAccountName varchar(255)
AccountBalance double
InvAddressLine1 varchar(500)
Rep varchar(20)
要存儲「網絡用戶」登錄名和用戶名,我有一個名爲「Web_customers」不同的網絡賬戶表中有一個「CustomerAccountNumber」作爲主鍵。
Web_customers:
web_id int(11) primary key
UserName varchar(39)
CustomerAccountNumber varchar(39)
EmailAddress varchar(255)
Pwd varchar(70)
customer_type varchar(10)
的樣本數據:
customer_id CustomerAccountNumber CustomerAccountName AccountBalance InvAddressLine1 Rep
1 Accnt1 Myname1 1098 address1 Mik
2 Accnt2 Myname2 2398 address2 Richi
3 Accnt3 Myname3 2234398 address3 Santa
4 Accnt4 Myname4 2233398 address4 Den
由於我運行PHP腳本經常不斷地重新加載數據的變化CUSTOMER_ID,這就是爲什麼我不能選擇它作爲外鍵在我的其他表中是這裏:
WEB_CUST:
web_id UserName CustomerAccountNumber EmailAddress Pwd customer_type
1 Accnt1 Accnt1 [email protected] 123 simple
2 Accnt212 Accnt2 [email protected] 123 complex
3 Accnt313 Accnt2 [email protected] 123 complex
4 Accnt315 Accnt2 [email protected] 123 complex
我有兩種類型的客戶,「簡單」和「複雜」。簡單的客戶有一個CustomerAccountNumber,並且在相應的WEB_CUST表中只有一個用戶名。
複雜的客戶是指那些具有相同帳號的客戶。但問題是「複雜」的客戶。當使用用戶名Accnt313和Accnt2的WEB客戶更改信息時,它會更新我的XML表「客戶」中具有相同Accnt2的所有其他客戶。 注意 我的XML中的所有字段都使用插入批處理方法直接插入到客戶表中。因爲我的XML有超過60,000個,並且將數據解析並插入到子表中可能會產生性能問題。因此,我沒有打破它,這就是爲什麼我正在尋找替代解決方案。
我該如何防止這種情況發生?我如何在這種情況下正常化?有沒有一種方法可以在不影響XML解析效率和重新加載原因的主要XML表「客戶」的情況下正常化?
這個「複雜」類型的客戶不止一個人?即一羣人? – SparKot 2013-02-28 08:05:32
我想你可以將'customer_type'從'web_cust'移動到'customer'表。如果您不允許任何複雜的客戶用戶更改數據,那麼他們如何改變數據? – SparKot 2013-02-28 08:08:46
@ DoSparKot.Thanks for your response.Yes.Multiple username can be assigned to same account number.I need to break the main customer table in this case?如果是這樣,那麼我怎樣才能使用兩個表進行標準化? – BiL 2013-02-28 08:15:31