/ फेसबुक के लिए / डेटाबेस डिजाइन "पसंद" - डेटाबेस, फेसबुक, डिजाइन, डेटाबेस-डिजाइन

फेसबुक के लिए डेटाबेस डिजाइन "पसंद" - डेटाबेस, फेसबुक, डिज़ाइन, डेटाबेस-डिज़ाइन

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

मान लें कि आपके पास 3 टेबल हैं: उपयोगकर्ता, फ़ोटो और एल्बम। मान लें कि उपयोगकर्ता किसी फ़ोटो या एल्बम को पसंद कर सकता है।

क्या मुझे दोनों प्रकार की पसंदों के लिए 1 तालिका का उपयोग करना चाहिए? इसका मतलब शायद यह होगा कि इसका एक user_id होगा, like_type (0-photo, 1-album etc), like_value (यह जो भी कंटेंट है उसका आइडियल वैल्यू, चाहे वह photo_id हो या album_id)?

या प्रत्येक पसंद के लिए 2 अलग-अलग टेबल हैं (उदा। फ़ोटो_ लाइक और एल्बम_ लाइक)? जिसमें केवल user_id और photo / album_id होगा

मैं यह सुनिश्चित करना चाहता हूं कि डेटाबेस डिजाइन स्वच्छ और अर्ध-स्केलप्रूफ है, चाहे हम भविष्य में कई और वस्तुओं को जोड़ते हैं (वीडियो, टिप्पणियां, नोट्स, आदि) या पसंद का एक टन है।

धन्यवाद!

उत्तर:

जवाब के लिए 5 № 1

आप एक विरासत तालिका दृष्टिकोण देखने की कोशिश कर सकते हैं कार्यान्वयन तालिका विरासत अधिक अनिश्चित विस्तार के लिए।

लेकिन अनिवार्य रूप से यह कोड में विरासत की तरह ही काम करता है, आपके पास एक बेस टेबल है "लाइक" और फिर टेबल्स जो कि "इनहेरिट" होती हैं "कमेंटलाइक", "फोटोलाइक" आदि।

एक त्वरित मॉकअप के लिए संलग्न आरेख देखें।

टेबल डिजाइन का उदाहरण


जवाब के लिए 3 № 2

दो अलग-अलग टेबल। इस तरह यदि आपके पास कभी कोई ऐसी वस्तु है जिसे आप बाद में पसंद में जोड़ना चाहते हैं तो आप बस एक नई तालिका "object_likes" बना सकते हैं और पसंद को वहां संग्रहीत कर सकते हैं।

यदि आप उन सभी को एक तालिका में संग्रहीत करना चाहते थे, तो आपएक प्रकार की तालिका की आवश्यकता होगी, जो सभी प्रकार की वस्तुओं को संग्रहीत करेगी, और आपकी पसंद तालिका में आपको type_id को संदर्भित करना होगा। यह आपको बाद में प्रकार जोड़ने देगा।

मेरे लिए पहला तरीका ज्यादा बेहतर है।