5

すべての顧客情報が格納されている 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」を乱すことなく正規化できる方法はありますか?

4

1 に答える 1

1

システムは設計どおりに機能しています。

共通の口座コードを持つ各 Web 顧客を、個別の請求情報と口座残高を持つ個別の顧客と見なしたい場合は、顧客からすべてのフィールドを Web 顧客テーブルにコピーし、顧客テーブルを決して変更しないでください。

次のようにデータベースを再構築することをお勧めします

AccountCode
    ID
    AccountCode


Customer
    ID
    AccountCodeID   (FK to AccountCode.ID)
    AccountBalance
    InvAddressLine1
    Rep

CustomerUser
    ID
    CustomerID    (FK to Customer.ID)
    Email
    Pwd

XMLを正しく解析します。

于 2013-02-28T13:59:32.740 に答える