Slip af med authors
kolonne i books
.
Du har mange til mange forhold mellem bøger og forfattere:nogle bøger har flere forfattere, og nogle forfattere har skrevet mere end én bog. Og bøger har første, anden og tredje forfatter og så videre. Du kommer ikke til at gengive forfatternavnene til en bog i en eller anden uforudsigelig rækkefølge. Forfatterne og udgiveren bestemmer forfatterrækkefølgen, ikke dbms-programmøren.
Så du har brug for en books_authors
tabel med følgende kolonner
book_id
author_id
author_ordinal (a number like 1,2,3 to denote the order of authors)
Du kan få en liste over forfattere til en bestemt bog med denne forespørgsel:
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
Du gør også klogt i at indsætte et tekstfelt kaldet role
i din books_authors-tabel, hvis du ønsker at gøre din software bibliografisk komplet. Folk har forskellige roller i skabelsen af bøger som 'forfatter', 'illustratør', 'redaktør', 'serieredaktør', 'bidragyder', 'forordsforfatter' og så videre. role
kolonne vil lade dig fange disse oplysninger.
Forresten vil de fleste dbms reverse engineering-værktøjer være MEGET gladere, hvis du navngiver dine id-kolonner konsekvent hele vejen igennem. Så du bør bruge books.book_id og authors.author_id i stedet for blot books.id og authors.id.