Singkirkan authors
kolom di books
.
Anda memiliki banyak ke banyak hubungan antara buku dan penulis:beberapa buku memiliki banyak penulis, dan beberapa penulis menulis lebih dari satu buku. Dan, buku memiliki penulis pertama, kedua, dan ketiga, dan seterusnya. Anda tidak bisa membuat nama penulis untuk sebuah buku dalam urutan yang tidak terduga. Penulis dan penerbit yang menentukan urutan penulis, bukan programmer dbms.
Jadi, Anda memerlukan books_authors
tabel dengan kolom berikut
book_id
author_id
author_ordinal (a number like 1,2,3 to denote the order of authors)
Anda bisa mendapatkan daftar penulis untuk buku tertentu dengan kueri ini:
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
Anda juga sebaiknya meletakkan bidang teks yang disebut role
di tabel books_authors Anda jika Anda ingin membuat perangkat lunak Anda lengkap secara bibliografi. Orang memiliki berbagai peran dalam pembuatan buku seperti 'penulis', 'ilustrator', 'editor', 'editor seri', 'kontributor', 'penulis kata pengantar', dan seterusnya. role
kolom akan memungkinkan Anda menangkap informasi itu.
Omong-omong, sebagian besar alat rekayasa balik dbms akan JAUH lebih bahagia jika Anda memberi nama kolom id Anda secara konsisten. Jadi sebaiknya gunakan books.book_id dan author.author_id bukan hanya books.id dan author.id.