Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP/MySQL में किसी मित्र का मित्र?

इसका उत्तर यह है कि वे किसी मित्र तालिका पर चयन नहीं कर रहे हैं, वे सबसे अधिक संभावना एक डी-सामान्यीकृत समाचार-घटना तालिका का उपयोग कर रहे हैं। हमने DoInk.com पर Facebook के समान एक समाचार-फ़ीड लागू किया, हमने यह कैसे किया:

"न्यूज़एवेंट" की धारणा है, इसमें एक प्रकार, एक आरंभकर्ता (एक उपयोगकर्ता आईडी) और एक लक्षित उपयोगकर्ता (एक उपयोगकर्ता आईडी भी) है। (इवेंट से संबंधित अन्य संपत्तियों के लिए आपके पास अतिरिक्त कॉलम भी हो सकते हैं, या उनमें शामिल हो सकते हैं)

जब कोई उपयोगकर्ता किसी अन्य उपयोगकर्ता वॉल पर कुछ पोस्ट करता है तो हम इस तरह की एक घटना उत्पन्न करते हैं:

INSERT INTO events VALUES (wall_post_event, user1, user1)

उपयोगकर्ता 1 की प्रोफ़ाइल देखते समय, आप उन सभी ईवेंट के लिए चयन करेंगे जहां उपयोगकर्ता 1 या तो आरंभकर्ता या लक्ष्य है। इस तरह आप प्रोफ़ाइल फ़ीड प्रदर्शित करते हैं। (आप अपने गोपनीयता मॉडल के आधार पर फैंसी प्राप्त कर सकते हैं और घटनाओं को फ़िल्टर कर सकते हैं। आप प्रदर्शन कारणों से स्मृति में ऐसा करने पर विचार कर सकते हैं)

उदाहरण:

SELECT * FROM events WHERE initiator = user1 or target = user1 //to see their profile feed

SELECT * FROM events WHERE initiator IN (your set of friend ids) //to see your newsfeed

जब आप अपने मित्रों से संबंधित सभी ईवेंट के लिए न्यूज़फ़ीड देखना चाहते हैं, तो आप उन सभी ईवेंट्स के लिए चयन कर एक क्वेरी कर सकते हैं जहाँ आरंभकर्ता आपके मित्रों के समूह में है।

उप-चयनों के साथ कार्यान्वयन से बचें, जटिलता के आधार पर, वे स्केल नहीं करेंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेडीस्टेडमेंट का उपयोग करके सम्मिलित करें। मैं आईडी को ऑटो-इन्क्रीमेंट कैसे करूं?

  2. date_format के साथ दिनांक सीमा MySQL का चयन करना

  3. ऑब्जेक्ट को MySQLi PHP में एक स्ट्रिंग में परिवर्तित नहीं किया जा सकता है

  4. MYSQL और क्वेरी एक ही कॉलम पर संतुष्ट करने के लिए

  5. मैं mysql कमांड लाइन में उच्च-सटीक क्वेरी समय कैसे देख सकता हूं?