authors
を取り除く books
の列 。
本と著者の間には多対多の関係があります。一部の本には複数の著者がいて、一部の著者は複数の本を書いています。また、本には第1、第2、第3の著者などがいます。本の著者名を予測できない順序でレンダリングすることはできません。作成者と発行者は、dbmsプログラマーではなく、作成者の順序を決定します。
したがって、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
というテキストフィールドを配置することも賢明です。 ソフトウェアを書誌的に完全なものにしたい場合は、books_authorsテーブルにあります。人々は、「著者」、「イラストレーター」、「編集者」、「シリーズ編集者」、「寄稿者」、「序文作家」などの本の作成においてさまざまな役割を果たします。 role
列を使用すると、その情報を取得できます。
ちなみに、ほとんどのdbmsリバースエンジニアリングツールは、id列に一貫して名前を付けると、はるかに幸せになります。したがって、books.idとauthors.idだけでなく、books.book_idとauthors.author_idを使用する必要があります。