2009-06-12 7 views
5

मैं रेल में स्टैक ओवरव्लो जैसी साइट बना रहा हूं लेकिन मुझे यकीन नहीं है कि डेटाबेस में एक अलग तालिका में एक प्रश्न पर वोटों के लिए जरूरी है या नहीं।StackOverflow जैसी साइट पर प्रश्न और उसके वोट अलग-अलग टेबल हो सकते हैं?

क्या डेटा को अलग करने का कोई अच्छा कारण है?

या क्या मैं प्रश्न तालिका के क्षेत्र में वोटों को एक ही राशि के रूप में स्टोर कर सकता हूं?

+3

आप संरचना एसओ का उपयोग यहां देख सकते हैं: http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/ और यदि आप इसे आयात करना चाहते हैं तो यहां एक अच्छा ट्यूटोरियल है डेटा आसानी से: http://www.brentozar.com/archive/2009/06/how-to-import-the-stackoverflow-xml-into-sql-server/ –

+0

धन्यवाद। यह उपयोगी है। तो बैज, टिप्पणियां, पोस्ट, उपयोगकर्ता और वोट सभी अलग-अलग टेबल हैं। –

उत्तर

5

आपको कैसे पता चलेगा कि उपयोगकर्ता ने वोट टेबल रखने के बिना किसी प्रश्न पर मतदान किया है? या इस वेबसाइट की तरह जो आपको एक दिन में एक्स वोट देता है, आप कैसे जानेंगे कि उपयोगकर्ता ने दिन में कितने वोट बनाए? आप कैसे ट्रैक करेंगे कि उपयोगकर्ता ने कितने ऊपर और नीचे वोट किए हैं? मुझे लगता है कि अच्छे डिजाइन प्रथाओं को डेटा को सामान्य बनाने और वोट टेबल रखने के लिए बहुत चिल्लाती है, संभवतः आसानी से लाने के लिए प्रश्न पंक्ति में वर्तमान +/- denormalized फ़ील्ड को रखने के साथ।

+1

+1 सामान्यीकरण का उल्लेख करने और denormalisation द्वारा गति के लिए अनुकूलन के लिए +1। – lexu

1

कई आयामों में अपने डेटा के बारे में सोचें। वोटों की संख्या की तुलना में कहीं अधिक चल रहा है। नहीं है:

  • कौन वोट
  • डाली जब वे पार्टियों

आप बर्दाश्त कर सकते हैं के किसी भी संख्या पर मतदान का वोट

  • प्रभाव (एक वित्तीय लेनदेन की तरह लगता है) डाली इस डेटा को छोड़ दें? क्या आपको कभी इसकी आवश्यकता होगी? स्टैक ओवरफ्लो में, यह जानना चाहिए कि क्या मैंने यह निर्धारित करने के लिए कुछ चुना है कि क्या मैं मतदान कर सकता हूं; वोट क्या था, इसलिए मैं इसे बदल सकता हूं; वोट के प्रभाव को तो अगर मैं इसे बदलूं तो इसे वापस लाया जा सकता है; आदि

  • 5

    हाँ! किसी ऑब्जेक्ट परिप्रेक्ष्य से इसके बारे में सोचें। मॉडल संचालित विकास (वस्तुओं को पहले) में आपके पास प्रश्नों का एक कंटेनर (टेबल) होगा, और वोटों का एक कंटेनर होगा। बेशक आप उन्हें एक समग्र रूप में आसानी से रोल कर सकते हैं। हालांकि ऐसा करने से आप बहुत सारे मीट्रिक विवरण खो देते हैं जैसे कि वोट किसने डाला, कब, इत्यादि। यह वास्तव में इस बात पर निर्भर करता है कि आपको विस्तार की आवश्यकता है या नहीं। अंतरिक्ष सस्ता है इसलिए विस्तार नहीं रखना आमतौर पर एक अच्छा विचार नहीं है। भविष्य में क्या जरूरत है यह देखना मुश्किल है!

    +0

    तकनीकी रूप से बोलते हुए, यदि आप वस्तुओं के बारे में सोच रहे हैं, तो "कई वोट हैं" के लिए एक प्रश्न कहा जा सकता है। – user109878

    0

    वोटों को दोनों प्रश्नों और उत्तरों पर भी लागू होने की आवश्यकता होगी, हालांकि दोनों प्रश्न और उत्तर पोस्ट या कुछ समान नामक तालिका/वर्ग में संग्रहीत किए जा सकते हैं क्योंकि वे एक अलग शीर्षक के साथ समान डेटा हैं।

    0

    पिछले दो उत्तरों की तरह कहते हैं: एक अलग वोट तालिका रखें।

    लेकिन यह सलाह दी जाएगी कि कुल वोट प्रति उपयोगकर्ता, प्रति प्रश्न आदि वोट दें ताकि आपको उस जानकारी की आवश्यकता होने पर मैन्युअल क्वेरी करने की आवश्यकता न हो।

    jrh

    0

    हाँ, मैं अब तक जाना होगा के रूप में कहना है कि यह संभावना कम करने में मदद के लिए महत्वपूर्ण है कि पूर्वाग्रह सकता है एक व्यक्ति बार-बार कुछ ऊपर या नीचे मतदान द्वारा परिणाम।

    वास्तव में ओओपी के साथ बहुत कम करना है, और शोषण को रोकने के साथ और अधिक करना है।

    प्रदर्शन कारणों से आप प्रश्न तालिका में एक स्थिर वोट गिनती का उपयोग कर सकते हैं जो किसी प्रश्न के लिए वोट डेटा बदलते समय अद्यतन हो जाता है। हालांकि मैं केवल तब तक वोट गिनती का उपयोग नहीं करता जबतक कि आप वास्तव में विशेष लोगों द्वारा पक्षपातपूर्ण परिणामों की परवाह नहीं करते हैं।

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