Zbavte se authors
sloupec v books
.
Mezi knihami a autory máte mnoho až mnoho vztahů:některé knihy mají více autorů a někteří autoři napsali více než jednu knihu. A knihy mají prvního, druhého a třetího autora a tak dále. Nemůžete vykreslit jména autorů knihy v nějakém nepředvídatelném pořadí. O pořadí autorů rozhodují autoři a vydavatel, nikoli programátor dbms.
Takže potřebujete books_authors
tabulka s následujícími sloupci
book_id
author_id
author_ordinal (a number like 1,2,3 to denote the order of authors)
Seznam autorů pro konkrétní knihu můžete získat pomocí tohoto dotazu:
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
Bylo by také moudré vložit textové pole s názvem role
v tabulce books_authors, pokud chcete, aby byl váš software bibliograficky úplný. Lidé mají různé role při vytváření knih, jako je „autor“, „ilustrátor“, „editor“, „editor seriálu“, „přispěvatel“, „autor předmluvy“ a tak dále. role
vám umožní zachytit tyto informace.
Mimochodem, většina nástrojů reverzního inženýrství dbms bude MNOHEM šťastnější, pokud sloupce ID pojmenujete konzistentně. Měli byste tedy používat books.book_id a author_id namísto pouze books.id a author.id.