Создание таблиц с несколькими авторами, книгами и категориями - PullRequest
0 голосов
/ 11 мая 2019

В настоящее время я изучаю базу данных для предстоящего школьного семестра, поэтому я практикуюсь с книгами, которые у меня есть в настоящее время.У меня есть книги нескольких авторов и авторов с несколькими книгами.Также книги с несколькими категориями.

Итак, я сделал три таблицы.Таблица книг (со всей информацией о книгах, включая автора), таблица авторов (с именами авторов, адресом и т. Д.) И таблица категорий (поскольку некоторые книги имеют несколько категорий).Поскольку у некоторых книг есть несколько авторов, а у некоторых авторов есть несколько книг, я создал распределительную таблицу под названием AuthorsBooks и наполнил ее информацией.По лучшей практике, можно ли НЕ помещать авторов с одной книгой в эту (AuthorsBooks) таблицу?Кроме того, я создал соединительную таблицу BooksCategory и поместил в нее книги с несколькими категориями.Как лучше всего связать эти две таблицы?По названию книги?Спасибо.

1 Ответ

0 голосов
/ 11 мая 2019

В целом ваш подход звучит правильно, за некоторыми исключениями.

Итак, я сделал три таблицы

Вот мой подсчет, основанный на ваших описаниях:

  • Авторы
  • Книги
  • Категории
  • АвторыКниги
  • КнигиКатегории

Таблица книг (со всей информацией о книгах, включая автора)

Это неверно.В тот момент, когда вы поняли, что вам нужны 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...