2012-04-30 3 views
5

मैं वर्तमान में एक प्रोजेक्ट के साथ काम कर रहा हूं। अब मुद्दा उठता है, मुझे डेटाबेस तालिका में गतिशील कॉलम को संभालना है।एप्लिकेशन से तालिका में नए कॉलम जोड़ने पर डेटाबेस डिज़ाइन समस्या

मेरे पास एक टेबल Charges है, जहां प्रत्येक Client से संबंधित विभिन्न शुल्क की राशि संग्रहीत की जाएगी। मान लीजिए इस तालिका निम्नलिखित columns-

Client_Id  Charge_1  Charge_2  Charge_3  Charge_4 

अब है, व्यवस्थापक ग्राहकों के लिए new Charges अधिक आवेदन कर सकते हैं। उस स्थिति में, Charges तालिका में column के रूप में नए शुल्क जोड़े जाएंगे। और इसे डेटाबेस रन टाइम में नहीं, एप्लिकेशन रन टाइम में संभालने की आवश्यकता है। यह मेरा विचार है।

लेकिन, यह मेरे लिए उपयुक्त नहीं दिखता है।

क्या इस मुद्दे को संभालने का कोई बेहतर विचार है ?? कृपया मुझे सुझाव दें।

अग्रिम धन्यवाद। और मैं इस डेटाबेस डिजाइन के साथ नया हूँ।

उत्तर

7

एक समग्र तालिका, यानी ClientCharges

बनाओ

आप क्लाइंट प्रभार तालिका है निम्न स्तंभ में अपने मूल प्रभार टेबल और अपने ग्राहक की मेज और रख सकता है:

ClientChargeId, clientid, ChargeId

अपनी चार्ज टेबल में आप जोड़ना जारी रख सकते हैं (जैसा कि आपको कई शुल्क की आवश्यकता है) और उसके बाद क्लाइंट चार्ज तालिका में चार्ज आईडी का संदर्भ लें।

CREATE TABLE ClientCharges 
(
    ClientChargeId   INT IDENTITY(1,1) 
    , ClientId    INT 
    , ChargeId    INT 
) 


INSERT INTO ClientCharges 
(ClientId, ChargeId) 
VALUES 
(1, 1), 
(1,2), 
(1,3), 
(1,4), 
(2,1), 
(3,1), 
(3,2), 
(4,3), 
(4,4) 
  • ग्राहक 1 प्रभार 1, 2, 3 और 4
  • ग्राहक 2 है प्रभार है 1
  • ग्राहक 3 शुल्क 1 और 2
  • ग्राहक 4 शुल्क 3 और 4
  • है है

फिर क्लाइंटआईड और चार्ज आईडी फ़ील्ड पर विदेशी कुंजी बाधाएं जोड़ें।

+0

महान..मैं इस पर काम कर रहा हूं। –

5

ऐसा लगता है कि आप वास्तव में क्या चाहते हैं 1 टेबल संबंधों में से एक है।

आप जो करते हैं वह दो कॉलम, क्लाइंट_आईडी और चार्ज वाली तालिका बनाते हैं, फिर आप प्रत्येक शुल्क के लिए एक नई पंक्ति जोड़ते हैं।

यह मुझे स्पष्ट नहीं है कि आप इसका उपयोग कैसे करना चाहते हैं। क्या ये "शुल्क" व्यक्तिगत लेनदेन हैं? या वे क्लाइंट से जुड़े प्रकार चार्ज कर रहे हैं? किसी भी घटना में, इस तरह के आपके डेटा मॉडल को संशोधित करने के लिए यह खराब फॉर्म है।

जब आपके पास इस तरह के पुनरावर्ती फ़ील्ड होते हैं, तो बस उन्हें अपनी तालिका बनाएं।

संबंधित मुद्दे