| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Проектирование связи |
| Автор: Keeper89 1.5.2009, 15:57 |
| Доброго времени суток! Проектирую БД книжного магазина. У каждой книги часто бывает несколько авторов. Как лучше организовать в базе такое хранение информации автор-книга? Заранее, спасибо. |
| Автор: Gluttton 1.5.2009, 17:10 |
Один и тот же автор может быть автором различных книг, а в свою очередь, каждая из книг может быть написана разными авторами - классический М:М. Для физической реализации необходимо ввести дополнительную таблицу и создать к ней связи 1:М от обоих таблиц, что то вроде такого:![]() http://psbatishev.narod.ru/glos/02586.htm |
| Автор: Gluttton 1.5.2009, 19:26 | ||||
В результате денормализации возникает избыточность, но и упрощается работа с БД (запросы составлять легче и выполняються они быстрее).
Если очевидно, что "Авторы" и "Книги" отдельные сущности со своими набороми атрибутов, то не вижу способа смысла! А вообще, сложно сказать (во всяком случае мне Если БД должна хранить об авторах только Ф.И.О., то я бы не стал создавать отдельную таблицу для них, т.к. фактичиески эта информация является атрибутом сущности "Книга". Но! В этом случае мне прийдется вводить новую книгу в БД, ровно столько раз, сколько у нее авторов (хотя можно и всех авторов одной строкой заносить - всё зависит от требований к создаваемой БД). А если БД должна хранить дату рождения автора, место жительство и биографию |
| Автор: Keeper89 1.5.2009, 23:22 |
| Gluttton, спасибо. |
| Автор: Zloxa 2.5.2009, 00:26 | ||
В одном месте упрощается, в другом усложняется. С одной стороны легче извлекать данные, с другой стороны, тяжелее модифицировать и поддерживать ссылочную целостность. ;) Есть еще Но. Придется ФИО одного и того же автора вводить многожды. Когдато это будет "Пушкин А.С.", когда то "Пушкин АС", "Пушкин Алексадр Сергеевич", когдато "АС Плюшкин". Это усложнит отбор по автору. ИМХО ответ очевиден, связь many to many - классика и реализуется через промежуточную таблицу. |