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

MySQL में अनेक:अनेक संबंध कोडिंग पर कुछ सलाह और प्रतिक्रिया की आवश्यकता है

एक बच्चे के 2 से अधिक माता-पिता नहीं हो सकते हैं, दोनों की विशिष्ट भूमिकाएँ हैं (माँ बनाम पिता) और ऐसी स्थिति हो सकती है जहाँ एक या दोनों माता-पिता अज्ञात हों।

तो यह वास्तविक "कई से कई" संबंध नहीं है, यह वास्तव में "कई से शून्य या एक या दो" है, जिसे स्वाभाविक रूप से इस तरह दर्शाया जा सकता है (दोनों MotherID और FatherID पूर्ण-सक्षम हैं):

अगर आप LastName डालते हैं दोनों Parent . में और Player (या आपके मामले में एक सामान्य सुपरक्लास), यह स्वाभाविक रूप से उस स्थिति को भी कवर करता है जहां माता-पिता के अपने बच्चों से अलग उपनाम होते हैं।

फिर आप इस तरह आसानी से "बच्चों के प्रति माता-पिता" प्राप्त कर सकते हैं (SQL Fiddle )...

SELECT
    ParentID,
    Parent.FirstName ParentFirstName,
    Parent.LastName ParentLastName,
    PlayerID,
    Player.FirstName PlayerFirstName,
    Player.LastName PlayerLastName
FROM
    Parent
    LEFT JOIN Player
        ON Parent.ParentID = Player.MotherID
        OR Parent.ParentID = Player.FatherID
ORDER BY ParentId

...और अगर आप यही चाहते हैं तो डेटा को अपने एप्लिकेशन कोड में पिवट करें।

उपरोक्त मॉडल Parent . के बीच बेमेल की अनुमति देता है का लिंग और उसकी माता/पिता की भूमिका। अगर आप इसे रोकना चाहते हैं तो आप पानी में गिर सकते हैं और ऐसा कुछ कर सकते हैं...

...लेकिन मैं पहले मॉडल को जटिल नहीं बनाऊंगा और उससे चिपके रहूंगा और इसे एप्लिकेशन स्तर पर लागू करूंगा।



  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. cPanel MySQL डेटाबेस के साथ कार्य करना

  3. चेतावनी:सर्वर की पहचान सत्यापन के बिना एसएसएल कनेक्शन स्थापित करने की अनुशंसा नहीं की जाती है

  4. Wamp को पुनः स्थापित करते समय MySQL डेटाबेस को पुनर्स्थापित करना

  5. क्यों INNER JOIN बराबर नहीं (!=) हमेशा के लिए लटका?