Другие языки программирования и технологии

Как правильно спроектировать базу данных для книжного магазина?

Реляционная база данных.Есть таблица, в ней ключ — ISBN, и другая информация о книгах. Но вопрос: у одной книги может быть несколько авторов. Как записывать их в ячейку авторов? Или лучше создать для авторов отдельную таблицу? Просто нужно будет после реализовать и поиск по авторам. Т.е. у одного автора может быть несколько книг, а у одной книги — несколько авторов.Если создавать отдельную таблицу для авторов, какие заголовки (атрибуты) делать?Вариант ли  — сделать таблицу из двух столбцов, в первом — автор, во втором — через запятую ISBN его книг?
Правильнее всего такая задача решается введением таблицы многие-ко-многим:
1) создать таблицу "Авторы" с полем ID_Author:integer (PK-PrimaryKey) и другими полями - ФИО и т. д.
2) Создать таблицу "КнигиАвтора" с полями ID_Author:integer, ID_Book:integer и писать в них PK из таблиц "Авторы" и "Книги" соответственно.
При таком подходе тебе все равно сколько авторов у книги -1 или 5. Да и поиск ты можешь построить только по этой таблице - ищешь либо ID книги и получаешь все ID авторов, либо ID автора - и получаешь все ID его книг.
АК
Александр Козлов
1 720
Лучший ответ
Открываем уже учебник по базам данных и курим связь "многие ко многим" до просветления.
Alex
Alex
5 009
конечно для авторов делай отдельную таблицу я бы сделал в ней 3 столбца ID, Автор, книга которую он написал я считаю так лудше потому что у книиг помимо названия есть еще куча параметров (год издания, где и т. д) и их не стоит дублировать
а вобще еще можно сделать в 3 таблицы вобще класс
1) ID, ФАМ Автора
2)связь между автором доп инфой и собственно название книги
3)доп инфа по книге
Я бы сделал отдельную авторов с присвоением кодов авторам.
Отдельную таблицу ISBN, и коды авторов.
Особого смысла на самом деле в этом нету, единственное
что поиск быстрее будет отрабатывать.