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 का उपयोग करना चाहिए।