2012-04-23 13 views
5

मैं कुछ प्रोजेक्ट पर जा रहा हूं और मैं अनुयायी और ट्विटर जैसे सिस्टम के बारे में सोच रहा हूं। मेरे पास डेटाबेस पर सदस्य तालिका है। मैं अनुयायी प्रणाली कैसे कर सकता हूं। क्या तर्क तर्क है? मैंने इस तरह कुछ काम किया: मैंने नया बनाया तालिका जो नाम चल रही है और मेरे पास 3 पंक्तियां हैं। ये पंक्तियां आईडी, user_id, follower_id हैं। क्या यह मेरे लिए पर्याप्त है? मुझे इस बारे में नहीं पता कि इस प्रणाली को कैसे किया जा सकता है? क्या आप मेरी मदद कर सकते हैं?निम्नलिखित और अनुयायियों के सिस्टम का तर्क क्या है?

+1

यह एक पूरी तरह से स्वीकार्य डिजाइन लगता है। आप उस उपयोगकर्ता को 'user_id' में खोजकर उपयोगकर्ता के अनुयायियों को ढूंढ सकते हैं और उस उपयोगकर्ता को 'follower_id' में खोजकर उपयोगकर्ता का अनुसरण कर सकते हैं। आप टाइमस्टैम्प जैसे कुछ अतिरिक्त मेटाडेटा को शामिल करना चाह सकते हैं, ताकि आपको पता चले कि रिश्ते को आखिरी बार अपडेट किया गया था। आपके उपयोग के मामले के आधार पर, जब आप रिश्ते शुरू या समाप्त होते हैं तो आप ट्रैक करना भी चाह सकते हैं। – Ina

+0

_ "मैंने नई तालिका बनाई है जिसका नाम है और मेरे पास 3 पंक्तियां हैं" _ - आपका मतलब है "3 ** कॉलम **"? –

उत्तर

5

हाँ, है कि डिजाइन एक सरल निम्नलिखित प्रणाली के लिए पर्याप्त है जैसे कि ट्विटर का। बेशक, कुछ अतिरिक्त डेटा (जैसे टाइमस्टैम्प, जैसा कि @Ina द्वारा सुझाया गया है) उपयोगी हो सकता है और आपको इसमें id की कड़ाई से आवश्यकता नहीं है।

userID INT PRIMARY, 
followID INT PRIMARY, 
creationTime DATETIME 
0

मान लें कि आपके पास People की एक इकाई है, आपको People से People से कई से अधिक रिश्तों को बनाने की आवश्यकता है। आपकी एसोसिएशन टेबल में, आपके पास दो कॉलम होंगे, PeopleID और Following

किसी उपयोगकर्ता के अनुयायियों को खोजने के लिए, उस उपयोगकर्ता की आईडी को Following कॉलम में खोजें। यह पता लगाने के लिए कि कौन उपयोगकर्ता का अनुसरण कर रहा है, PeopleID कॉलम में खोजें।

5

"अनुयायी" (या "इसके बाद") दो तालिका इकाइयों के बीच एक रिश्ता है जो आपकी तालिका प्रतिबिंबित करता है।

इसका मतलब यह है कि जब तक आप अलग-अलग प्रविष्टियों के रूप में एक ही उपयोगकर्ता के बीच एकाधिक अनुवर्ती और अनुवर्ती व्यवहार करने की योजना बना रहे हैं, तो आपको id की भी आवश्यकता नहीं है।

एक FOREIGN KEY साथ user_id और follower_id संदर्भ user करें, उन दोनों को एक समग्र प्राथमिक कुंजी बनाने के लिए और सूचकांक (उपयोगकर्ताओं की सूची एक तेजी से इस प्रकार प्राप्त करने के लिए) follower_id पर बनाने के लिए:

CREATE TABLE 
     follows 
     (
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 
     PRIMARY KEY 
       (user_id, follower_id) 
     KEY follower_id (follower_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 

आप अन्य जोड़ सकते हैं गुण भी।

आप ट्रैक करना चाहते हैं इस प्रकार है और एक ही उपयोगकर्ताओं के बीच फ़ॉलो करता तो आप एक इकाई में इस को बढ़ावा देने की जरूरत है, एक किराए प्राथमिक कुंजी जोड़ने:

CREATE TABLE 
     follows 
     (
     id INT NOT NULL PRIMARY KEY, 
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 

     -- These are additional attributes 

     follows_from DATETIME NOT NULL, 
     follows_till DATETIME, 

     -- 

     KEY follower_id (follower_id), 
     KEY user_id (user_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 
0

मान लिया जाये कि आप पहले से ही एक साइट जहां उपयोगकर्ता प्रवेश, आप दो कॉलम के साथ अपने डेटाबेस के लिए एक मेज जोड़ना चाहें, है, या तो 'FRIEND1' और ':

मैं की तरह कुछ की सलाह देते हैं दोस्त 2 '(मानते हुए दोस्ती एक द्विपक्षीय संबंध है) या' नेता 'और' अनुयायी '(एक सदस्यता के unidirectional संबंध के लिए)। फिर, आप एक छोटी PHP स्क्रिप्ट चाहते हैं जो दोस्त 1 और दोस्त 2 को इनपुट के रूप में ले लेता है (उदाहरण के लिए, POST या GET चर के रूप में) और उस जोड़ी को डेटाबेस में दर्ज करता है। अंत में, अपनी वेबसाइट पर एक बटन जोड़ें जो या तो उस PHP स्क्रिप्ट पर AJAX कॉल करता है, या एक HTML फॉर्म का हिस्सा है जिसका लक्ष्य PHP स्क्रिप्ट है।

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