2008-10-31 12 views
12
प्रकाशन प्रकार

क्या मुझे अपने डेटाबेस में एक टेबल या en क्वेरी का उपयोग करना चाहिए?

 

ID | Type 
---------- 
1 | Article 
2 | Abstract 
3 | Book 
.... 

जो एक प्रकाशन तालिकाओं जो क्षेत्र TypeID है करने के लिए आईडी कुंजी के माध्यम से संबंधित है:

मेरी डेटाबेस में मैं तालिकाओं के लिए उदाहरण

टेबल प्रकार को परिभाषित किया है।

मैं तो एक PublicationTable डेटा तालिका मेरी .NET अनुप्रयोग जो मैं प्रकाशन प्रकार के आधार पर फ़िल्टर करना चाहते हैं पैदा करते हैं। उदाहरण के लिए निम्नलिखित फ़ंक्शन मुझे एक विशिष्ट लेखक और प्रकाशन प्रकार के लिए प्रकाशनों की संख्या देता है।

 

    Public Function countPublications(ByVal authorID As Integer, _ 
             ByVal publicationType As Integer) As Integer 

     Dim authPubs As New PublicationsDataSet.tblPublicationsDataTable 
     authPubs = Me.getAuthorsPublications(authorID) 

     Dim dv As New DataView(authPubs) 
     dv.RowFilter = "status='published' AND type='" + _ 
         publicationType.ToString + "'" 

     Return dv.Count 

    End Function 

एक विशिष्ट प्रकार के लेखक द्वारा लेख की एक संख्या प्राप्त करने के लिए इस फ़ंक्शन को कॉल करने के लिए, मैं कर सकता

  1. दो पूर्णांकों के साथ फ़ंक्शन को कॉल

    countPublications (authorID, 1)

  2. सेटअप एक enum ताकि मैं

    countPublications (authorid, pubType.Article)

    या

  3. किसी भी तरह प्रकाशन डेटा सेट को फ़िल्टर करने के लिए प्रकाशन प्रकार तालिका का उपयोग कर सकता हूं लेकिन मैं हेवन लिख सकता हूं यह कैसे करना है इसके आसपास मेरा सिर नहीं मिला।

क्या अन्य तरीकों मैं विचार करना चाहिए।

धन्यवाद

उत्तर

5

यदि प्रकाशन प्रकार अनिवार्य रूप से स्थिर हैं, enums ठीक हैं

वहाँ एक प्रश्न में

inner join lookuptable lt on lt.id = (int)myenum.sometype 

embedding और

inner join lookuptable lt on lt.name = "somehardcodeddescription" 

जोड़ने के बीच यकीनन थोड़ा अंतर है वे दोनों एम्बेडेड स्थिरांक हैं, पूर्व में सिर्फ एक अच्छी तरह से डी है efined प्रकार के पीछे यह

बारी-बारी से आप इस्तेमाल कर सकते हैं

inner join lookuptable lt on lt.name = myenum.sometype.ToString 

मैं पसंद करते हैं पूर्व

अगर, दूसरे हाथ पर, नया देखने प्रकार जोड़ा जा सकता है के बाद कोड तैनात किया जाता है, तो एक enum होगा जल्दी से पुराना हो गया;

लेकिन अगर वहाँ स्थिर enum मूल्यों है कि कोड की जरूरत है और बाकी नहीं है के मूल सेट है बात तो पूर्व समाधान अभी भी ठीक

हमेशा की तरह है, "यह निर्भर करता है" ;-)

+0

जैसा कि मैंने संदेह किया था।समस्या को बनाए रखने के लिए नीचे आता है यदि मेरे प्रकार की तालिका में डेटा को बदलने की जरूरत है (लेकिन आप तालिका तालिका स्थिर होने के अधिकांश भाग के लिए सही हैं)। – Azim

+0

आपके उत्तर – Azim

+0

के लिए धन्यवाद आपका स्वागत है, मुझे आशा है कि इससे मदद मिलेगी! –

5

पिछले जीवन में इस तरह की चीज को बनाए रखने के बाद, मैं स्टीवन से सहमत हूं कि enum काफी उचित है। आपका कोड स्पष्ट है, और enum का अर्थ है कि यदि आप डेटा प्रकार जोड़ते हैं तो आपको केवल एक फ़ाइल को अपडेट करने की आवश्यकता है।

मैं enum पर टिप्पणी करने का भी सुझाव देता हूं, जिससे यह स्पष्ट हो जाता है कि मानों को आपके डेटाबेस में Publication Types तालिका में उन लोगों से मेल खाना चाहिए।

अच्छा सवाल, वैसे भी! प्रश्न को स्पष्ट रूप से स्पष्ट करने और पोस्ट करने से पहले समाधानों को समझने के लिए समय निकालने के लिए +1।

2

मुझे लगता है कि यह इस बात पर निर्भर करता है कि भविष्य में प्रकाशन प्रकारों की आपकी सूची कितनी बार बदल जाएगी, और आप कितनी आसानी से अपने आवेदन के अपडेट को दबा सकते हैं। यदि सूची अक्सर नहीं बदलेगी, या यदि फ़ील्ड में अपना ऐप अपडेट करना आसान है, तो एक enum समझ में आता है। यदि सूची में अक्सर परिवर्तन होने की संभावना है, या यदि आपका ऐप अपडेट करना विशेष रूप से कठिन है, तो डेटाबेस में किसी तालिका में सूची को समझना समझदार है।

0

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

countPublications(authorID, publicationType.JournalArticle) 

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

आपके उत्तरों के लिए सभी को धन्यवाद। अब मैं आसानी से अपने दिमाग से आगे बढ़ सकता हूं।

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

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