मेरे पास एक्सएमएल है जिसमें सभी ग्राहक जानकारी संग्रहीत की जाती है। जब भी मेरा PHP कोड चलता है, यह ग्राहक डेटा को एक्सएमएल से डाटाबेस में डालता है। टेबल यहाँ है। सभी ग्राहक वेब नहीं हैं, इसलिए मैंने सभी ग्राहक जानकारी सीधे "ग्राहक" नामक एक तालिका में सहेजी है।सामान्यीकरण का उपयोग कर रिडंडेंसी कैसे निकालें?
ग्राहक:
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
जब से मैं डेटा लगातार CUSTOMER_ID अक्सर बदलती रहती है फिर से लोड करने PHP स्क्रिप्ट चलाने के लिए और यही वजह है कि मैं इसे के रूप में चयन नहीं कर सकते मेरी दूसरी तालिका में विदेशी कुंजी जो यहां है:
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
मेरे पास दो प्रकार के ग्राहक हैं, "सरल" और "जटिल"। सरल ग्राहकों के पास एक ग्राहक खाता संख्या है और संबंधित WEB_CUST तालिका में केवल एक ही उपयोगकर्ता नाम है।
जटिल ग्राहक वे ग्राहक हैं जो एक ही खाता संख्या हैं। लेकिन समस्या "जटिल" ग्राहक है। जब उपयोगकर्ता नाम Accnt313 और Accnt2 के साथ WEB ग्राहक जानकारी बदलता है, तो यह मेरे एक्सएमएल टेबल "ग्राहक" में एक ही Accnt2 वाले सभी अन्य ग्राहकों को अपडेट करता है। नोट मेरे एक्सएमएल में सभी फ़ील्ड सीधे डालने विधि का उपयोग कर ग्राहक तालिका में डाले जाते हैं। चूंकि, मेरे एक्सएमएल में 60,000 से अधिक थे और बाल तालिकाओं में डेटा डालने और डालने से प्रदर्शन समस्या बढ़ सकती थी। इसलिए, मैं इसे तोड़ नहीं दिया और यही कारण है कि मैं वैकल्पिक समाधान की तलाश में हूं।
मैं इसे कैसे रोक सकता हूं? मैं इस मामले में सामान्य कैसे हो सकता हूं? क्या एक्सएमएल पार्सिंग दक्षता और पुनः लोड करने के कारणों के कारण मुख्य एक्सएमएल टेबल "ग्राहक" को परेशान किए बिना मैं सामान्य कर सकता हूं?
यह 'जटिल 'प्रकार ग्राहक एक से अधिक व्यक्ति है? यानी व्यक्तियों का एक समूह? – SparKot
मुझे लगता है कि आप 'web_cust' से' ग्राहक' तालिका 'में 'customer_type' स्थानांतरित कर सकते हैं। और यदि आप किसी जटिल ग्राहक उपयोगकर्ता को डेटा बदलने की अनुमति नहीं देते हैं तो वे इसे बदल सकते हैं यदि वे चाहते हैं? – SparKot
@ DoSparKot। आपकी प्रतिक्रिया के लिए धन्यवाद। हाँ। एकाधिक उपयोगकर्ता नाम एक ही खाता संख्या में असाइन किया जा सकता है। मुझे इस मामले में मुख्य ग्राहक तालिका तोड़ने की जरूरत है?यदि हां, तो मैं दोनों टेबलों का उपयोग करके सामान्य कैसे कर सकता हूं? – BiL