- 29 сентября 2026
- 9 минут
- 3
Статью подготовили специалисты образовательного сервиса Zaochnik.
Многотабличные базы данных в Access: нормализация, связи и составные формы
Многотабличные базы данных в Access
Хранить всю информацию в одной большой таблице удобно лишь на первый взгляд. Как только данных становится много, такой подход быстро показывает свои слабые стороны. Таблица разрастается вширь за счёт огромного числа полей, работать с которыми пользователю становится всё труднее. Вдобавок значения в некоторых полях начинают повторяться из записи в запись, что раздувает объём базы и заметно замедляет её обработку. Когда сведений накапливается слишком много, а полей в таблице оказывается чересчур много, базу требуется нормализовать. Именно в ходе нормализации, как правило, и рождается многотабличная база данных.
Когда базу данных считают нормализованной
База данных признаётся нормализованной, если одновременно выполнены три условия:
- у каждой таблицы есть главный ключ;
- все поля таблицы полностью зависят только от этого главного ключа;
- в таблице отсутствуют группы повторяющихся значений.
После того как таблицы с данными по разным аспектам базы созданы, важно обеспечить целостность самой базы. Для этого отдельные таблицы связывают между собой.
Типы связей между таблицами
В реляционной базе выделяют несколько видов связей:
- один-к-одному — когда одной записи в первой таблице соответствует ровно одна запись во второй;
- один-ко-многим — когда каждой записи главной таблицы отвечает несколько записей подчинённой;
- многие-ко-многим — когда одной записи первой таблицы соответствует несколько записей второй, и наоборот.
Связанные между собой таблицы образуют единую базу данных, внутри которой можно создавать новые таблицы, а также запросы и отчёты. Заполнять базу удобно через форму — разберём это на конкретном примере.
Практический пример: разбиваем таблицу на три
Допустим, есть табличная база «Комплектующие компьютера и поставщики». В ней собрана информация о разных комплектующих, а сама таблица содержит поля Счётчик, Наименование, Описание, Название фирмы, Адрес и Цена (в рублях). Уже при беглом взгляде видно, что примерно половину объёма занимает избыточная, продублированная информация.
Разберёмся, откуда берётся дублирование. У любой комплектующей есть два неотъемлемых свойства — наименование и описание. А вот название фирмы, её адрес и цена характеризуют вовсе не комплектующую, а поставщика. Смешивать эти сущности в одной таблице как раз и приводит к повторам.
Правильнее разбить исходную таблицу на две:
- Комплектующие — сюда добавляем поле Код комплектующих, которое становится ключевым;
- Поставщики — в неё вводим поле Код поставщика, играющее роль ключа для этой таблицы.
Каждая таблица должна иметь хотя бы одно ключевое поле, значение которого уникально для каждой записи. Между собой Комплектующие и Поставщики находятся в отношении «многие-ко-многим»: одну комплектующую способны поставлять разные фирмы, а один поставщик — предлагать множество комплектующих.
Связь «многие-ко-многим» напрямую реализовать нельзя. Поэтому две таблицы соединяют только через третью — таблицу Цена. По сути отношение «многие-ко-многим» раскладывается на две связи «один-ко-многим» относительно связующей таблицы. Комплектующие и Поставщики становятся главными по отношению к таблице Цена.
Связь строится на совпадении значений в полях с одинаковыми именами. С ключевым полем главной таблицы (первичным ключом) связывается одноимённое поле подчинённой таблицы (внешний ключ). Так, первичный ключ Код комплектующих из таблицы Комплектующие соответствует внешнему ключу Код комплектующих в таблице Цена, а первичный ключ Код поставщика из таблицы Поставщики — внешнему ключу Код поставщика там же.
Отсюда следует, что таблица Цена включает такие поля:
- Счётчик — ключевое поле;
- Код комплектующих — внешний ключ для таблицы Комплектующие;
- Код поставщика — внешний ключ для таблицы Поставщики;
- Цена — числовое поле.
Если сначала заполнить таблицу поставщиков, то для ввода остальных данных можно построить форму по образцу первоначальной таблицы 1. В этом случае поставщика получится выбирать из готового списка, а само заполнение базы потребует куда меньше сил и времени.
Как создать многотабличную форму
Многотабличную форму строят на базе нескольких взаимосвязанных таблиц. Она может состоять из одной формы либо из основной и одной или нескольких подчинённых форм. При этом подчинённая форма способна опираться как на подчинённую, так и на главную таблицу.
Создать составную форму можно в режиме Конструктора или через Мастер форм. Обычно в Access поступают так: сперва формируют форму мастером, а затем дорабатывают её в Конструкторе. Во время создания многотабличной формы Access автоматически готовит для неё базовую инструкцию SQL, где хранятся сведения о задействованных таблицах и полях.
Четыре способа построения формы через Мастер
- Явное включение подчинённой формы. Подчинённая форма строится на основе подчинённой таблицы относительно той, на которой построена основная часть формы.
- Вызов связанной формы по кнопке. Созданные мастером связанные подчинённые формы не обязательно встраивать прямо в основную — их можно открывать по мере надобности нажатием кнопки. Содержимое связанной формы при этом синхронизируется с текущей записью. Способ удобен для сложных форм, перегруженных элементами управления, и для случаев, когда пользователю не нужно постоянно видеть связанные данные.
- Без подчинённых и связанных форм. Такую форму создают, когда требуется показать записи подчинённой таблицы, дополненные полями из одной или нескольких главных таблиц. Источником данных выступает запись подчинённой таблицы, а форма выводит её поля вместе с полями единственной связанной записи главной таблицы.
- На основе запроса. Если запрос уже объединил поля связанных записей главной и каждой из подчинённых таблиц, мастер построит форму так же, как и по исходным таблицам. В результате получается форма с однократным отображением данных, опирающаяся на нормализованные таблицы.
Полученную мастером составную форму при необходимости несложно отредактировать и дополнить другими включаемыми формами.
Порядок выбора таблиц и полей
- В окне базы данных выберите закладку Форма и нажмите кнопку Создать.
- В окне Новая форма укажите режим создания Мастер форм, а источником данных для основной части формы выберите таблицу или запрос из списка.
- В первом диалоговом окне Создание форм последовательно выбирайте таблицы, а в них — поля, которые войдут в форму, после чего нажмите Далее.
- Во втором диалоговом окне выберите вариант создания многотабличной формы: в рамке укажите вид представления данных, выделив таблицу — источник основной части формы.
Когда таблица-источник основной части оказывается главной по отношению к другой таблице формы, в окне Создание форм выбирают один из двух типов подключения:
- Подчинённые формы — при непосредственном включении;
- Связанные формы — при добавлении кнопки, вызывающей связанную форму.
Затем задают вид подчинённой или связанной формы — Ленточный либо Табличный. Далее в окне Создание форм выбирают стиль оформления, который определяет внешний вид надписей и значений полей. В последнем диалоговом окне мастер завершает работу: здесь можно отредактировать заголовки и выбрать дальнейшее действие — открыть форму для просмотра и ввода данных либо перейти к изменению макета.
Выбор способа построения формы стоит соотносить с задачей. Явное включение подчинённой формы удобно, когда связанные данные нужны постоянно перед глазами. Вызов формы по кнопке разгружает интерфейс сложных форм. Вариант без подчинённых форм подходит для просмотра записей подчинённой таблицы с добавленными полями главной, а построение на основе запроса опирается на уже нормализованные таблицы и обеспечивает однократный вывод данных.