Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana menuliskan ke database banyak penulis dalam tabel buku sederhana?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah soft_delete Laravel membutuhkan indeks di MySQL?

  2. Pemicu MySQL untuk memperbarui bidang berdasarkan jumlah kolom dari tabel lain

  3. MySQL Kiri Bergabung + Min

  4. Dapatkan jumlah kolom dan gunakan untuk menghitung persen dari total (mySQL)

  5. Menyimpan gambar di database mysql