В целом ваш подход звучит правильно, за некоторыми исключениями.
Итак, я сделал три таблицы
Вот мой подсчет, основанный на ваших описаниях:
- Авторы
- Книги
- Категории
- АвторыКниги
- КнигиКатегории
Таблица книг (со всей информацией о книгах, включая автора)
Это неверно.В тот момент, когда вы поняли, что вам нужны AuthorsBooks, нет причин иметь автора как часть таблицы Books.Любой столбец (столбцы), который вы использовали для реализации, следует удалить из Книги.
В соответствии с передовой практикой можно НЕ помещать авторов с одной книгой в эту таблицу (AuthorsBooks)?
Абсолютно нет.Вы создали правильную структуру с AuthorsBooks.Он поддерживает любое количество авторов для книги.
Кроме того, я создал соединительную таблицу BooksCategory и поместил в нее книги с несколькими категориями.Как лучше всего связать эти две таблицы?
По ключам.Каждая таблица должна иметь первичный ключ, и в вашем случае ключи должны быть целыми числами, которые увеличиваются с каждой новой строкой.
Вот схема структуры таблицы и стандартное именование.
Books
-----
id integer auto_increment primary key
title varchar(150)
Categories
----------
id integer auto_increment primary key
name varchar(60)
BooksCategories
---------------
books_id integer primary key (foreign key for Books.id)
categories_id integer primary key (foreign key for Categories.id)