Почему бы не собрать всё в одной таблице?
Создание многотабличной базы данных
Практическая работа № 33 «Многотабличная база данных»
Практическая работа № 34 «Запросы в многотабличной базе данных»
• многотабличная БД • связь между таблицами • внешний ключ
До этого момента мы изучали простейшую базу данных, в которой всё данные сведены в одну таблицу, и поэтому искать информацию достаточно просто. Однако у такой модели есть и недостатки:
• дублирование данных: например, в базе данных школьной библиотеки будет много раз храниться фамилия автора «Пушкин»;
• при изменении каких-то данных (например, адреса фирмы), возможно, придётся изменять много записей;
• нет защиты от ошибок ввода (опечаток).
Однотабличная база данных — это аналог картотеки, в которой все карточки имеют одинаковую структуру. В то же время обычно в одной базе нужно хранить данные, относящиеся к объектам разных типов, которые связаны между собой. Поэтому возникает вопрос: какую модель лучше использовать для описания и хранения этих данных?
Посмотрим, как можно организовать базу данных, в которой хранятся данные об альбомах музыкальных групп. Вот что получается, если свести все данные в одну таблицу (рис. 6.16).
Рис. 6.16
В данном случае в качестве первичного ключа можно выбрать пару свойств Альбом + Группа, но работать с таким составным ключом неудобно, поэтому мы ввели суррогатный ключ — дополнительное числовое поле Код альбома, оно обозначено знаком .
Определите типы данных и ограничения для всех полей таблицы на рис. 6.16.
Сразу видим, что в этой таблице есть дублирование — название группы (символьная строка) повторяется для каждого альбома этой группы. Причина в том, что в таблице на самом деле есть сведения не только об альбомах, но и о группах — объектах совершенно другого класса. Поэтому для хранения всей информации о группах нужно сделать отдельную таблицу (рис. 6.17).
Рис. 6.17
Здесь первичным ключом может быть название группы (символьная строка), но для ускорения работы введён суррогатный ключ — Код группы (целое число). В эту таблицу можно добавить другие данные о группе.
Предложите новые поля, которые можно добавить в таблицу Группы.
В таблице Альбомы теперь будет храниться не название группы, а её код (рис. 6.18).
Рис. 6.18
Таким образом, база данных состоит из двух таблиц, каждая из которых хранит сведения об объектах одного класса (первая — о группах, вторая — об альбомах). Такая структура понятна человеку и облегчает работу с многотабличными базами.
Рис. 6.19
На этом рисунке перечислены поля каждой из таблиц и показана их связь: код группы в таблице Альбомы должен совпадать с кодом одной из групп в таблице Группы.
Каждый альбом связан только с одной группой, поэтому связь между таблицами Группы и Альбомы — это связь типа «один ко многим» (она кратко обозначается как 1:n или 1-∞). Это значит, что одна запись в таблице Группы может быть связана со многими записями в таблице Альбомы, но не наоборот.
Внешний ключ — это неключевое поле таблицы, связанное с первичным ключом другой таблицы.
Таким образом, Код группы — это внешний ключ в таблице Альбомы.
Используя дополнительные источники, выясните, как называется внешний ключ таблицы в англоязычной литературе.
Итак, мы получили две связанные таблицы вместо одной. При этом:
• устранено дублирование данных (повторно хранятся только числовые коды);
• все изменения нужно выполнять только в одном месте;
• есть некоторая защита от ошибок при вводе данных — можно сделать так, что при заполнении таблицы Альбомы название группы выбирается из уже готового списка групп.
Однако кое-что ухудшилось из-за того, что данные разбросаны по разным таблицам:
• базами данных, в которых более 40—50 таблиц, сложно управлять из-за того, что разработчику трудно воспринимать информацию в таком «раздробленном» виде;
• при поиске приходится «собирать» нужные данные из нескольких таблиц.
Рассматриваемые базы данных основаны на реляционной модели данных. Это название связано с тем, что для работы с ними применяется специальный математический аппарат — реляционная алгебра, разработанная в 70-х годах XX века. Более подробно с реляционными базами данных вы познакомитесь в старшей школе.
Используя дополнительные источники, выясните, от какого слова произошло слово «реляционный» и что оно означает. Какой учёный разработал реляционную алгебру?
Следующая страница Создание многотабличной базы данных