sql >> Databáze >  >> RDS >> Mysql

Jak zapsat do databáze více autorů v jednoduché tabulce knih?

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.



  1. Nastavení výchozího časového pásma na serveru MySql pomocí PhPMyAdmin

  2. Jak prohlížíte VEŠKERÝ text z ntextu nebo nvarchar(max) v SSMS?

  3. MySQL:Jednoduchý způsob, jak přepínat hodnotu pole int

  4. Nelze se připojit k localDB ve VS2012 – Při navazování připojení k serveru SQL došlo k chybě související se sítí nebo specifickou instancí...