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

साधारण पुस्तकों की तालिका में डेटाबेस एकाधिक लेखकों को कैसे लिखें?

authors . से छुटकारा पाएं books में कॉलम ।

पुस्तकों और लेखकों के बीच आपके अनेक से अनेक संबंध हैं:कुछ पुस्तकों के अनेक लेखक हैं, और कुछ लेखकों ने एक से अधिक पुस्तकें लिखी हैं। और, पुस्तकों में पहले, दूसरे और तीसरे लेखक होते हैं, इत्यादि। आपको किसी पुस्तक के लेखक के नाम कुछ अप्रत्याशित क्रम में प्रस्तुत करने की आवश्यकता नहीं है। लेखक और प्रकाशक लेखक का आदेश तय करते हैं, डीबीएमएस प्रोग्रामर नहीं।

तो, आपको एक books_authors . की आवश्यकता है निम्नलिखित कॉलम वाली तालिका

  book_id
  author_id
  author_ordinal   (a number like 1,2,3 to denote the order of authors)

आप इस प्रश्न के साथ किसी विशेष पुस्तक के लेखकों की सूची प्राप्त कर सकते हैं:

 SELECT isbn, title, author_ordinal, first, last
   FROM books b
   LEFT JOIN books_authors ba ON (b.id = ba.book_id)
   LEFT JOIN authors a ON (ba.author_id = a.id)
  WHERE isbn = '978whatever'
  ORDER BY author_ordinal

आपको role . नामक टेक्स्ट फ़ील्ड डालना भी बुद्धिमानी होगी यदि आप अपने सॉफ़्टवेयर को ग्रंथ सूची की दृष्टि से पूर्ण बनाना चाहते हैं, तो अपनी पुस्तकें_लेखक तालिका में। पुस्तकों के निर्माण में लोगों की विभिन्न भूमिकाएँ होती हैं जैसे 'लेखक,' 'चित्रकार,' 'संपादक,' 'श्रृंखला संपादक,' 'योगदानकर्ता,' 'प्रस्तावना लेखक,' इत्यादि। role कॉलम आपको उस जानकारी को कैप्चर करने देगा।

वैसे, यदि आप अपने आईडी कॉलम को लगातार नाम देते हैं, तो अधिकांश डीबीएमएस रिवर्स इंजीनियरिंग टूल बहुत अधिक खुश होंगे। इसलिए आपको केवलbooks.id और Authors.id के बजाय Books.book_id औरauthor.author_id का उपयोग करना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक ActiveRecord डेटाबेस तालिका बनाएं जिसमें कोई:आईडी कॉलम न हो?

  2. mysql वर्णमाला क्रम

  3. SQL IN क्लॉज के लिए PHP सरणी को फ़ॉर्मेट करना

  4. MySQL एकाधिक मामले के साथ एक प्रश्न में मायने रखता है

  5. PHP / MYSQL कॉलम में बटन जोड़ें