2012-08-04 20 views
5

मुझे आश्चर्य है,
कई वेबसाइटों पर एक पोस्ट को पसंद/नापसंद करने का विकल्प है।
यहां तक ​​कि निश्चित रूप से, स्टैक ओवरफ्लो पर भी।डेटाबेस-डिज़ाइन: पसंद की तालिका?

तो तकनीकी रूप से यह एक बड़ी पसंद तालिका है?

user_id post_id 

user_id - जो मतदान
post_id - जो बाद यह

है कि सभी के बारे में है?
एक बड़ी पसंद तालिका?
कुछ और अधिक कुशल/परिष्कृत नहीं है?

+0

आप किस आधार पर मानते हैं कि यह एक बड़ी तालिका है? –

+0

यदि आपको किसी पोस्ट को पसंद/नापसंद करने के बारे में जानकारी रखने की आवश्यकता है, तो यह उस डेटा का न्यूनतम परिवेश है जिसे आपको स्टोर करने की आवश्यकता है। – JJJ

उत्तर

5

इसके सबसे बुनियादी स्तर पर, हाँ, यह सब कुछ है।

लेकिन तब ऐसा लगता है जैसे सवालों के जवाब देने की कोशिश कर रहा विस्तार करने के लिए शुरू होता है,:

  • कितना किया इस पोस्ट की तरह उपयोगकर्ता?
  • उन्हें पोस्ट कब पसंद आया?
  • उन्हें पोस्ट कैसे मिला?
  • क्या उन्होंने पोस्ट पर टिप्पणी की थी?
  • कैसे पूरे समूह/समुदाय पोस्ट

तो फिर तुम मित्रों और समुदाय के बारे में गहराई से सवाल में अधिक उत्तर देना चाहते हैं के लिए शुरू की तरह करता है।

1

मुझे लगता है कि मैं आपकी चिंता को समझ सकता हूं। प्रत्येक बार पृष्ठ को प्रस्तुत करने की आवश्यकता होने पर COUNT() जारी करने की आवश्यकता होती है।

आपको निश्चित रूप से यह मूल तालिका होना है, जो COUNT() के लिए आधार होगा, लेकिन आपको प्रत्येक पहुंच के लिए वास्तव में COUNT() की आवश्यकता नहीं है।

कुल तालिका बनाएं और इसे ट्रिगर का उपयोग करते हुए पृष्ठ को पसंद या नापसंद करते समय अपडेट करें, या समय-समय पर इसे अपडेट करने के लिए संग्रहीत प्रक्रिया को कॉल करें।

मैं कहूंगा कि प्रत्येक विधि अलग-अलग साइट व्यक्तित्वों, यानी, अधिक रीडिंग या अधिक लेखों के लिए अधिक संकेतित है, लेकिन आप पहले ही जानते हैं कि जब पसंद या नापसंद की बात आती है तो कुछ भी संभव नहीं है।

+0

तो व्यावहारिक रूप से, मान लीजिए कि मुझे एक पोस्ट टेबल मिली है जिसे पसंद किया जा सकता है। इसमें फ़ील्ड "lik_counter" होना चाहिए जो पसंद की संख्या को गिनती है इसलिए मुझे COUNT() का उपयोग करने की आवश्यकता नहीं है। सही? – socksocket

+0

सही। अपनी लक्ष्य तालिका का उपयोग करके, इसमें एक कॉलम जोड़ना एक ऐसा दृष्टिकोण है जो सर्वर में एक अतिरिक्त तालिका सहेजता है। यदि आपको लक्ष्य तालिका की संरचना को बदलने की अनुमति है, तो बढ़िया। यदि नहीं, तो एक अलग तालिका बनाएं जिसमें दो कॉलम होंगे: targetTableName, कुल पसंद। मुझे लगता है कि आपके पास डीबी तक पूर्ण पहुंच है। मेरे विचार अलग-अलग डिजाइन विकल्पों पर ध्यान देने के लिए गलती से थे। –

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