![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Доброго времени суток!
Проектирую БД книжного магазина. У каждой книги часто бывает несколько авторов. Как лучше организовать в базе такое хранение информации автор-книга? Заранее, спасибо. |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
Один и тот же автор может быть автором различных книг, а в свою очередь, каждая из книг может быть написана разными авторами - классический М:М. Для физической реализации необходимо ввести дополнительную таблицу и создать к ней связи 1:М от обоих таблиц, что то вроде такого:
![]() Google подсказывает. Это сообщение отредактировал(а) Gluttton - 1.5.2009, 17:16 -------------------- Слава Україні! |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Связь, М:М, это понятно. Что сделать лучше: завести таблицу для каждого автора с идентификаторами книг или две отдельные таблицы книг и авторов и третью для связей? |
|||
|
||||
Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 10 Всего: 54 |
В результате денормализации возникает избыточность, но и упрощается работа с БД (запросы составлять легче и выполняються они быстрее).
Если очевидно, что "Авторы" и "Книги" отдельные сущности со своими набороми атрибутов, то не вижу способа смысла! ![]() А вообще, сложно сказать (во всяком случае мне ![]() Если БД должна хранить об авторах только Ф.И.О., то я бы не стал создавать отдельную таблицу для них, т.к. фактичиески эта информация является атрибутом сущности "Книга". Но! В этом случае мне прийдется вводить новую книгу в БД, ровно столько раз, сколько у нее авторов (хотя можно и всех авторов одной строкой заносить - всё зависит от требований к создаваемой БД). А если БД должна хранить дату рождения автора, место жительство и биографию ![]() Это сообщение отредактировал(а) Gluttton - 1.5.2009, 20:35 -------------------- Слава Україні! |
||||
|
|||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: нет Всего: 58 |
Gluttton, спасибо.
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
В одном месте упрощается, в другом усложняется. ![]() С одной стороны легче извлекать данные, с другой стороны, тяжелее модифицировать и поддерживать ссылочную целостность. ;) Есть еще Но. Придется ФИО одного и того же автора вводить многожды. Когдато это будет "Пушкин А.С.", когда то "Пушкин АС", "Пушкин Алексадр Сергеевич", когдато "АС Плюшкин". Это усложнит отбор по автору. ИМХО ответ очевиден, связь many to many - классика и реализуется через промежуточную таблицу. Это сообщение отредактировал(а) Zloxa - 2.5.2009, 00:26 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |