Pozbądź się authors
kolumna w books
.
Między książkami a autorami istnieje wiele relacji wiele do wielu:niektóre książki mają wielu autorów, a niektórzy autorzy napisali więcej niż jedną książkę. Książki mają pierwszego, drugiego i trzeciego autora i tak dalej. Nie możesz oddać nazwisk autorów książki w jakiejś nieprzewidywalnej kolejności. O kolejności autorów decydują autorzy i wydawca, a nie programista dbms.
Potrzebujesz więc books_authors
tabela z następującymi kolumnami
book_id
author_id
author_ordinal (a number like 1,2,3 to denote the order of authors)
Listę autorów konkretnej książki można uzyskać za pomocą tego zapytania:
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
Mądrze byłoby również umieścić pole tekstowe o nazwie role
w tabeli books_authors, jeśli chcesz, aby Twoje oprogramowanie było kompletne pod względem bibliograficznym. Ludzie pełnią różne role w tworzeniu książek, takich jak „autor”, „ilustrator”, „redaktor”, „redaktor serii”, „współautor”, „autor przedmowy” i tak dalej. role
kolumna pozwoli ci uchwycić te informacje.
Nawiasem mówiąc, większość narzędzi dbms do inżynierii wstecznej będzie DUŻO szczęśliwsza, jeśli konsekwentnie nadasz swoim kolumnom id. Dlatego powinieneś używać books.book_id i author.author_id zamiast tylko books.id i author.id.