लिंक के साथ आप कल्पना करते हैं कि आप बहुत सरल उदाहरण भूमि में रहते हैं - और कल्पना करें कि आपके पास लोगों की एक तालिका है अपने MySQL डेटाबेस:लोगों की एक तालिका मिली, जो मैं एक-दूसरे से लिंक करना चाहता हूं, कई-से-कई, बिडरेक्शनल
create table person (
person_id int,
name text
)
select * from person;
+-------------------------------+
| person_id | name |
+-------------------------------+
| 1 | Alice |
| 2 | Bob |
| 3 | Carol |
+-------------------------------+
और इन लोगों को सहयोग करने के लिए/एक साथ काम करते हैं, तो आप एक लिंक तालिका जो एक व्यक्ति रिकॉर्ड लिंक मिल गया है की जरूरत है:
create table person__person (
person__person_id int,
person_id int,
other_person_id int
)
इस सेटअप मतलब यह है कि बीच लिंक लोग यूनी-दिशात्मक हैं - यानी एलिस बॉब से लिंक कर सकता है, बिना बॉब को ऐलिस से जोड़ने और यहां तक कि डब्ल्यू ओर्स, ऐलिस बॉब और से लिंक कर सकता है बॉब एक ही समय में ऐलिस से दो अलग-अलग लिंक रिकॉर्ड में लिंक कर सकता है। चूंकि ये लिंक कामकाजी रिश्तों का प्रतिनिधित्व करते हैं, असली दुनिया में वे सभी दो तरह के पारस्परिक संबंध हैं। इस स्थापना के बाद सब कर रहे हैं संभव:
select * from person__person;
+---------------------+-----------+--------------------+
| person__person_id | person_id | other_person_id |
+---------------------+-----------+--------------------+
| 1 | 1 | 2 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| 4 | 3 | 1 |
+---------------------+-----------+--------------------+
उदाहरण के लिए, साथ person__person_id = 4 से ऊपर है, जब आप कैरोल के (person_id = 3) प्रोफ़ाइल देखने पर आपको ऐलिस के साथ एक रिश्ता देखना चाहिए (person_id = 1) और जब आप ऐलिस की प्रोफ़ाइल देखते हैं, आपको कैरल के साथ एक रिश्ता देखना चाहिए, भले ही लिंक दूसरी तरफ जाता है।
मुझे एहसास है कि मैं संघ और विशिष्ट प्रश्न कर सकता हूं और यूआई में पारस्परिक संबंधों को रिश्तों को प्रस्तुत करने के लिए क्या नहीं, लेकिन क्या कोई बेहतर तरीका है? मुझे एहसास हुआ है कि एक बेहतर तरीका है, जहां यह समस्या डेटाबेस को व्यवस्थित करके व्यवस्थित ढंग से पिघल जाएगी, लेकिन मैं इसे नहीं देख सकता। किसी को भी बेहतर विचार मिला?
यह सबसे अच्छा प्रारूपित प्रश्न है जिसे मैंने कभी भी <50 प्रतिनिधि उपयोगकर्ता से देखा है! चीयर्स! –
मैंने 'mysql many-to-many' से 'डेटा-मॉडलिंग कई-से-कई' (+1 अच्छा प्रश्न!) – lexu
+1 से टैग को अच्छी तरह से कहा गया प्रश्न बदल दिया। nit-pick: person__person एक भयानक तालिका का नाम है; बस दावा करें कि यह रोशनी के प्रयोजनों के लिए है;) – msw