すべての顧客情報が格納されている XML があります。PHP コードが実行されるたびに、顧客データが XML からデータベースに挿入されます。これがテーブルです。すべての顧客が Web であるとは限らないため、すべての顧客情報を「customer」という 1 つのテーブルに直接保存しました。
お客様:
customer_id int(40) primary key
CustomerAccountNumber varchar(60)
CustomerAccountName varchar(255)
AccountBalance double
InvAddressLine1 varchar(500)
Rep varchar(20)
「Web 顧客」のログインとユーザー名を保存するために、「CustomerAccountNumber」を主キーとする「Web_customers」という別の Web アカウント テーブルがあります。
Web_顧客:
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 b@gmail.com 123 simple
2 Accnt212 Accnt2 dj@gmail.com 123 complex
3 Accnt313 Accnt2 asdj@gmail.com 123 complex
4 Accnt315 Accnt2 342j@gmail.com 123 complex
「シンプル」と「コンプレックス」の 2 種類の顧客がいます。単純な顧客には CustomerAccountNumber が 1 つあり、対応する WEB_CUST テーブルにユーザー名が 1 つだけあります。
複雑な顧客とは、同じ口座番号を持つ顧客です。しかし、問題は「複雑な」顧客です。ユーザー名 Accnt313 と Accnt2 を持つ WEB 顧客が情報を変更すると、XML テーブル「Customer」で同じ Accnt2 を持つ他のすべての顧客が更新されます。 注 : 私の XML のすべてのフィールドは、挿入バッチ メソッドを使用して顧客テーブルに直接挿入されます。それが、私が別の解決策を探している理由です。
どうすればこれを防ぐことができますか? この場合、どのように正規化できますか?XML 解析の効率とリロードの理由により、メインの XML テーブル「Customer」を乱すことなく正規化できる方法はありますか?