Материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.

Статью подготовили специалисты образовательного сервиса Zaochnik.

Многотабличные базы данных в Access: нормализация, связи и составные формы

Содержание:

Многотабличные базы данных в Access

Хранить всю информацию в одной большой таблице удобно лишь на первый взгляд. Как только данных становится много, такой подход быстро показывает свои слабые стороны. Таблица разрастается вширь за счёт огромного числа полей, работать с которыми пользователю становится всё труднее. Вдобавок значения в некоторых полях начинают повторяться из записи в запись, что раздувает объём базы и заметно замедляет её обработку. Когда сведений накапливается слишком много, а полей в таблице оказывается чересчур много, базу требуется нормализовать. Именно в ходе нормализации, как правило, и рождается многотабличная база данных.

Когда базу данных считают нормализованной

База данных признаётся нормализованной, если одновременно выполнены три условия:

  • у каждой таблицы есть главный ключ;
  • все поля таблицы полностью зависят только от этого главного ключа;
  • в таблице отсутствуют группы повторяющихся значений.

После того как таблицы с данными по разным аспектам базы созданы, важно обеспечить целостность самой базы. Для этого отдельные таблицы связывают между собой.

Типы связей между таблицами

В реляционной базе выделяют несколько видов связей:

  • один-к-одному — когда одной записи в первой таблице соответствует ровно одна запись во второй;
  • один-ко-многим — когда каждой записи главной таблицы отвечает несколько записей подчинённой;
  • многие-ко-многим — когда одной записи первой таблицы соответствует несколько записей второй, и наоборот.

Связанные между собой таблицы образуют единую базу данных, внутри которой можно создавать новые таблицы, а также запросы и отчёты. Заполнять базу удобно через форму — разберём это на конкретном примере.

Практический пример: разбиваем таблицу на три

Допустим, есть табличная база «Комплектующие компьютера и поставщики». В ней собрана информация о разных комплектующих, а сама таблица содержит поля Счётчик, Наименование, Описание, Название фирмы, Адрес и Цена (в рублях). Уже при беглом взгляде видно, что примерно половину объёма занимает избыточная, продублированная информация.

Разберёмся, откуда берётся дублирование. У любой комплектующей есть два неотъемлемых свойства — наименование и описание. А вот название фирмы, её адрес и цена характеризуют вовсе не комплектующую, а поставщика. Смешивать эти сущности в одной таблице как раз и приводит к повторам.

Правильнее разбить исходную таблицу на две:

  • Комплектующие — сюда добавляем поле Код комплектующих, которое становится ключевым;
  • Поставщики — в неё вводим поле Код поставщика, играющее роль ключа для этой таблицы.

Каждая таблица должна иметь хотя бы одно ключевое поле, значение которого уникально для каждой записи. Между собой Комплектующие и Поставщики находятся в отношении «многие-ко-многим»: одну комплектующую способны поставлять разные фирмы, а один поставщик — предлагать множество комплектующих.

Связь «многие-ко-многим» напрямую реализовать нельзя. Поэтому две таблицы соединяют только через третью — таблицу Цена. По сути отношение «многие-ко-многим» раскладывается на две связи «один-ко-многим» относительно связующей таблицы. Комплектующие и Поставщики становятся главными по отношению к таблице Цена.

Связь строится на совпадении значений в полях с одинаковыми именами. С ключевым полем главной таблицы (первичным ключом) связывается одноимённое поле подчинённой таблицы (внешний ключ). Так, первичный ключ Код комплектующих из таблицы Комплектующие соответствует внешнему ключу Код комплектующих в таблице Цена, а первичный ключ Код поставщика из таблицы Поставщики — внешнему ключу Код поставщика там же.

Отсюда следует, что таблица Цена включает такие поля:

  • Счётчик — ключевое поле;
  • Код комплектующих — внешний ключ для таблицы Комплектующие;
  • Код поставщика — внешний ключ для таблицы Поставщики;
  • Цена — числовое поле.
Замечание 1

Если сначала заполнить таблицу поставщиков, то для ввода остальных данных можно построить форму по образцу первоначальной таблицы 1. В этом случае поставщика получится выбирать из готового списка, а само заполнение базы потребует куда меньше сил и времени.

Как создать многотабличную форму

Многотабличную форму строят на базе нескольких взаимосвязанных таблиц. Она может состоять из одной формы либо из основной и одной или нескольких подчинённых форм. При этом подчинённая форма способна опираться как на подчинённую, так и на главную таблицу.

Создать составную форму можно в режиме Конструктора или через Мастер форм. Обычно в Access поступают так: сперва формируют форму мастером, а затем дорабатывают её в Конструкторе. Во время создания многотабличной формы Access автоматически готовит для неё базовую инструкцию SQL, где хранятся сведения о задействованных таблицах и полях.

Четыре способа построения формы через Мастер

  1. Явное включение подчинённой формы. Подчинённая форма строится на основе подчинённой таблицы относительно той, на которой построена основная часть формы.
  2. Вызов связанной формы по кнопке. Созданные мастером связанные подчинённые формы не обязательно встраивать прямо в основную — их можно открывать по мере надобности нажатием кнопки. Содержимое связанной формы при этом синхронизируется с текущей записью. Способ удобен для сложных форм, перегруженных элементами управления, и для случаев, когда пользователю не нужно постоянно видеть связанные данные.
  3. Без подчинённых и связанных форм. Такую форму создают, когда требуется показать записи подчинённой таблицы, дополненные полями из одной или нескольких главных таблиц. Источником данных выступает запись подчинённой таблицы, а форма выводит её поля вместе с полями единственной связанной записи главной таблицы.
  4. На основе запроса. Если запрос уже объединил поля связанных записей главной и каждой из подчинённых таблиц, мастер построит форму так же, как и по исходным таблицам. В результате получается форма с однократным отображением данных, опирающаяся на нормализованные таблицы.

Полученную мастером составную форму при необходимости несложно отредактировать и дополнить другими включаемыми формами.

Порядок выбора таблиц и полей

  1. В окне базы данных выберите закладку Форма и нажмите кнопку Создать.
  2. В окне Новая форма укажите режим создания Мастер форм, а источником данных для основной части формы выберите таблицу или запрос из списка.
  3. В первом диалоговом окне Создание форм последовательно выбирайте таблицы, а в них — поля, которые войдут в форму, после чего нажмите Далее.
  4. Во втором диалоговом окне выберите вариант создания многотабличной формы: в рамке укажите вид представления данных, выделив таблицу — источник основной части формы.

Когда таблица-источник основной части оказывается главной по отношению к другой таблице формы, в окне Создание форм выбирают один из двух типов подключения:

  • Подчинённые формы — при непосредственном включении;
  • Связанные формы — при добавлении кнопки, вызывающей связанную форму.

Затем задают вид подчинённой или связанной формы — Ленточный либо Табличный. Далее в окне Создание форм выбирают стиль оформления, который определяет внешний вид надписей и значений полей. В последнем диалоговом окне мастер завершает работу: здесь можно отредактировать заголовки и выбрать дальнейшее действие — открыть форму для просмотра и ввода данных либо перейти к изменению макета.

Замечание 2

Выбор способа построения формы стоит соотносить с задачей. Явное включение подчинённой формы удобно, когда связанные данные нужны постоянно перед глазами. Вызов формы по кнопке разгружает интерфейс сложных форм. Вариант без подчинённых форм подходит для просмотра записей подчинённой таблицы с добавленными полями главной, а построение на основе запроса опирается на уже нормализованные таблицы и обеспечивает однократный вывод данных.

Навигация по статьям

Выполненные работы по базам данных

  • Базы данных

    Тема Цифровой атлас мифологических персонажей

    • Вид работы:

      Курсовая работа

    • Выполнена:

      10 июня 2026

    • Стоимость:

      11 300 руб.

    Заказать такую же работу
  • Базы данных

    Проектирование информационной системы Автоматизация деятельности Разработка прототипа информационной системы

    • Вид работы:

      Исправление и доработка готовой работы

    • Выполнена:

      6 июня 2026

    • Стоимость:

      4 300 руб.

    Заказать такую же работу
  • Базы данных

    Программирование и разработка базы данных на примере предметной области Прокат товаров

    • Вид работы:

      Курсовая работа

    • Выполнена:

      21 мая 2026

    • Стоимость:

      8 600 руб.

    Заказать такую же работу
  • Базы данных

    продолжение проектной работы

    • Вид работы:

      Лабораторная работа

    • Выполнена:

      30 марта 2026

    • Стоимость:

      13 700 руб.

    Заказать такую же работу
  • Базы данных

    Проектирование и поставка на сервер базы данных для предметной области Управление продажами канцтоваров

    • Вид работы:

      Курсовая работа

    • Выполнена:

      24 марта 2026

    • Стоимость:

      10 200 руб.

    Заказать такую же работу
  • Базы данных

    Системы обработки больших данных Big Data

    • Вид работы:

      Практическая работа

    • Выполнена:

      2 февраля 2026

    • Стоимость:

      1 300 руб.

    Заказать такую же работу