2009-04-26 5 views
8

मेरी डेटाबेस तालिकाओं UserType, SalesType तरह कॉलम, आदि कहोक्या मुझे डेटाबेस में एनम आईडी/मानों को स्टोर करना चाहिए या सी # गणना?

मैं UserTypeID, userTypeName साथ डेटाबेस तालिकाओं होना चाहिए या मैं सिर्फ एक सी # गणन बनाना चाहिए?

+0

इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/492096/persisting-data-suited-for-enums/ –

उत्तर

11

दोनों के साथ क्या गलत है? यदि मान उपयोगकर्ता परिभाषित या बदल रहे हैं, तो निश्चित रूप से enum उपयुक्त नहीं होगा।

यदि मान सख्ती से गैर-बदलते (जैसे लिंग) हैं, तो आप उन्हें आवेदन में संदर्भ के लिए enums और डीबी में विदेशी कुंजी को लागू करने के लिए अलग-अलग तालिका के रूप में और संदर्भ के रूप में भी हो सकते हैं।

0

यदि सूची एनम का उपयोग करने के लिए पर्याप्त स्थिर है, तो मैं डेटाबेस में एक एनम का उपयोग करता हूं और डेटाबेस में एक तालिका (डेटा स्थिरता के लिए इसे एक विदेशी कुंजी बना देता हूं)।

6

यह निर्भर करता है। मैंने नीचे प्रत्येक दृष्टिकोण के लिए कुछ पेशेवरों और विपक्ष सूचीबद्ध किए हैं। आम तौर पर, अगर मुझे निर्णय लेने के लिए आवेदन का उपयोग करने की आवश्यकता होती है तो मैं दृढ़ता से enums पसंद करता हूं। जैसा कि मेहद्राद ने उल्लेख किया है, आप दोनों दृष्टिकोणों का उपयोग कर सकते हैं लेकिन सूचियों को सिंक में रखने के लिए इसे अतिरिक्त प्रयास की आवश्यकता है।

लुक टेबल:

  • Referential अखंडता लागू किया जा सकता विदेशी कुंजी के माध्यम से जोड़ने या निकालने का
  • आसान मौजूदा मूल्यों
  • तालिका (आदि सक्रिय चिह्न,) अतिरिक्त फ़ील्ड जोड़ने के लिए बढ़ाया जा सकता है
  • व्यावसायिक वस्तुओं का उपयोग करते हुए अतिरिक्त कक्षा की आवश्यकता है
  • रिपोर्ट में मूल्य और विवरण का उपयोग करने में आसान

Enum:

  • चेक बाधा डेटा अखंडता को लागू कर सकते
  • बेस्ट विकल्प कोड शाखाओं के लिए मूल्य का उपयोग करने की जरूरत है (उदाहरण के लिए एक्स == SalesType.Web बनाम एक्स == "वेब")
  • सॉफ्टवेयर रिलीज आवश्यक मूल्यों को बदलने के लिए
  • (मामला बिना एसक्यूएल प्रश्नों में वर्णन) दिखा नहीं सकता
  • Enum यूआई में प्रदर्शन के लिए उपयुक्त नहीं हो सकता (वर्कअराउंड हैं)
0

मेरी परियोजनाओं में, मैं डेटाबेस से सी # कॉन्स उत्पन्न करने के लिए अपने आवेदन dbscript का उपयोग करता हूं, इसलिए कोड हमेशा डीबी मानों से मेल खाता है।

बेशक, यदि आपके कोड टाइप फ़ील्ड के मान के आधार पर कुछ कोड विशिष्ट है तो आपको केवल सी # एनम्स होना चाहिए।

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

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