Mam XML, w którym przechowywane są wszystkie informacje o klientach. Ilekroć mój kod PHP działa, wprowadza dane klienta z XML do bazy danych. Oto tabela. Nie wszyscy klienci są stronami internetowymi, więc zapisałem wszystkie informacje o kliencie bezpośrednio w jednej tabeli o nazwie "klient".Jak usunąć nadmiarowość za pomocą normalizacji?
klienta:
customer_id int(40) primary key
CustomerAccountNumber varchar(60)
CustomerAccountName varchar(255)
AccountBalance double
InvAddressLine1 varchar(500)
Rep varchar(20)
Aby zapisać „klientów internetowych” login i nazwy użytkowników, mam inną tabelę konta internetowego o nazwie „Web_customers”, które ma „CustomerAccountNumber” jako klucz podstawowy.
Web_customers:
web_id int(11) primary key
UserName varchar(39)
CustomerAccountNumber varchar(39)
EmailAddress varchar(255)
Pwd varchar(70)
customer_type varchar(10)
dane próbki:
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
Odkąd uruchomić skrypt PHP często przeładować dane w sposób ciągły zmiany customer_id i dlatego nie mogę wybrać go jako klucz obcy w mojej drugiej tabeli, która jest tutaj:
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
Posiadam dwa rodzaje klientów: "Prosty" i "złożony". Zwykli klienci mają jeden numer CustomerAccountNumber i mają tylko jedną nazwę użytkownika w odpowiedniej tabeli WEB_CUST.
Klientami złożonymi są klienci o tym samym numerze konta. Ale problemem jest "złożony" klient. Kiedy klient WEB o nazwie użytkownika Accnt313 i Accnt2 zmienia informacje, aktualizuje wszystkich innych klientów mających ten sam Accnt2 w mojej tabeli XML "Klient". UWAGA Wszystkie pola w moim pliku XML są wstawiane bezpośrednio do tabeli klienta za pomocą metody wsadowej wstawiania. Od tego czasu mój plik XML zawierał więcej niż 60 000, a analizowanie i wstawianie danych do tabel podrzędnych mogło spowodować problemy z wydajnością. Dlatego właśnie nie rozpadł się i dlatego szukam alternatywnego rozwiązania.
Jak mogę temu zapobiec? Jak mogę normalizować w tym przypadku? Czy istnieje sposób, w jaki mógłbym normalizować bez zakłócania głównej tabeli XML "Klient" z powodu wydajności analizowania XML i przeładowywania przyczyn?
ten klient typu "złożonego" to więcej niż jedna osoba? tj. grupę osób? – SparKot
Myślę, że możesz przenieść 'customer_type' z' web_cust' do tabeli 'customer'. A jeśli nie pozwalasz żadnym złożonym użytkownikom na zmianę danych, to jak mogą to zmienić, jeśli chcą? – SparKot
@ DoSparKot. Dziękuję za odpowiedź. Tak. Wielokrotna nazwa użytkownika może być przypisana do tego samego numeru konta. Czy w tym przypadku trzeba złamać główną tabelę klientów?jeśli tak, to jak mogę normalizować używając obu tabel? – BiL