Войти на сайт

Установление связей

Установление
связей между таблицами производится
следующим образом.

  1. Подается
    команда Сервис/Схема
    данных…
    , которая
    приводит к открытию специального окна
    Схема данных.
    Одновременно с ним появляется окно
    Добавление таблицы,
    в котором содержится список таблиц
    базы данных. Если такое окно не отображено
    в рабочей области программы, его можно
    вызвать командой меню Связи/Добавить
    таблицу…
    .

!!
Закройте все таблицы и вызовите на экран
окно схемы данных.

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

!!
Добавьте в окно схемы данных все созданные
в ходе работы таблицы.

  1. Устанавливаются
    связи между выбранными таблицами. В
    этом случае для каждой пары таблиц
    необходимо выполнять следующие действия:

перетащить
ключевое поле главной таблицы на
соответствующее поле подчиненной
таблицы.

!!
Поместите ключевое поле таблицы Группына одноименное поле таблицыСписок.

В
результате откроется диалоговое окно
Изменение связей,
предназначенное для редактирования
связей;

  • уточнить имена
    полей главной и связанной таблиц;

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

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

Флажок
Каскадное обновление
связанных полей

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

Флажок
Каскадное удаление
связанных записей

обеспечивает удаление записей в связанной
таблице при удалении соответствующих
записей в главной таблице.

!!
Установите все три флажка параметров
обеспечения целостности данных.

нажать
кнопку Создать
в окне Изменение связей.

В
результате в окне Схема
данных
между именами
полей двух таблиц будет отображена
линия связи
с информацией о типе отношения
(один-ко-многим или один-к-одному).

!!
Нажмите на кнопку Создатьи просмотрите
полученный результат. При необходимости
переместите таблицы так, чтобы линия
связи была отчетливо видна.

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

!!
Установите связь один-к-одному между
главной таблицей Списоки подчиненной
таблицейЛичные данные, переместив
ключевое полеКодна полеКод
студента
. При этом следует установить
два флажка:Обеспечение целостности
данных
иКаскадное удаление связанных
записей
.

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

!!
Сохраните схему данных, закройте окно
схемы данных и проверьте действие связи.
Для этого откройте таблицу Группыи увеличьте номера групп на 100 (например,
было М-192, стало М-292). Затем откройте
таблицуСписоки убедитесь в том,
что названия групп автоматически
изменились на новые.

!!
Удалите из таблицы Список запись
№3, на подтверждение удаления ответьте
положительно. Откройте подчиненные
таблицыУспеваемость иЛичные
данные
и убедитесь в том, что запись
№3 в них отсутствует.

4.2.1. Установка связей между таблицами

Одно из наиболее
мощных средств Access
– возможность устанавливать
связи между таблицами
.
Создание связей между таблицами облегчает
выполнение операций над данными,
позволяет контролировать их целостность.
Для реализации этой операции используется
команда Схема
данных
в
меню Сервис
или кнопка Схема
данных
панели
инструментов
при
работе в диалоговом окне базы данных
(вкладка Таблицы).
В результате выполнения этой операции
открывается диалоговое окно «Схема
данных
»
(см. рис.).

Для добавления
таблицы БД в схему используется диалоговое
окно «Добавление
таблицы»
,

которое можно
открыть с помощью контекстного меню,
вызванного щелчком правой кнопки мыши
по свободному месту в окне «Схема
данных».

Задание 1.
Выполните команду
Схема
данных

и добавьте в схему все таблицы, созданные
в БД (для добавления таблицу или таблицы
следует выделить и щелкнуть по кнопке
Добавить).
После того, как все таблицы будут включены
в схему окно «
Добавление
таблицы»

следует закрыть.

Окно схема данных
принимает вид, показанный на рисунке
(таблицы в окне схемы перемещаются с
помощью мыши, можно изменять их размер).
В окне появляются изображения каждой
таблицы БД, добавленной в схему, с
перечнем всех включенных в них полей.
Ключевые поля выделяются жирным шрифтом.
Для удобства ключевые поля лучше ставить
на первое место. Из этого окна можно
вызвать операции над таблицами с помощью
контекстного меню. Для удобства работы
изображения таблиц лучше всего разместить
так:

Для добавления
связи

между таблицами следует воспользоваться
следующим приемом: с помощью мыши
переместить поле (или поля), которое
необходимо связать, из исходной (главной)
таблицы в соответствующее поле (или
поля) второй (подчиненной) таблицы.
Например: установите курсор мыши на
поле «НомерКлиента»
в таблице «Клиенты»,
нажмите левую кнопку мыши и, удерживая
ее нажатой, переместите курсор до его
совмещения со строкой с тем именем
«НомерКлиента»
в таблице «Заказы».
В большинстве случаев ключевое слово
первой таблицы связывается с аналогичным
полем второй.

После
перемещения поля появляется диалоговое
окно «Связи«,
в котором, если это необходимо, можно
изменить имена полей. В этом же окне
(см. рис.) можно установить флажок
«Обеспечение
целостности данных
«,
что дает возможность указать вариант
обновления информации в связанных
таблицах при внесении изменений в
исходную таблицу: связанные поля могут
быть каскадно удалены или обновлены,
что сохранит согласованность данных в
различных таблицах БД.

Задание 2.
Создайте связь между таблицей «
Клиенты»
(главная таблица) и таблицей «
Заказы»
(подчиненная таблица). Для этого выполните
следующие действия:

1.
Установите курсор мыши на поле
«
НомерКлиента»
в списке полей таблицы «
Клиенты»
в окне «
Схема
данных
».
Нажмите левую кнопку мыши и, удерживая
кнопку нажатой, переместите курсор в
окне, совместив перемещаемый значок с
названием поля «
НомерКлиента»
в таблице «
Заказы».
Отпустите кнопку мыши.

2. В открывшемся
диалоговом окне «
Связи»
проверьте информацию о создаваемой
связи: таблица «
Клиенты»
(поле «
НомерКлиента»)
связывается с таблицей «
Заказы»
(по полю «
НомерКлиента»).
Тип устанавливаемого отношения (связи)
– «
один-ко-многим».
Если информация, отображаемая в окне,
не соответствует тому, что показано на
приведенном выше рисунке, следует
исправить ошибку.

3. Включите флажок
«
Обеспечение
целостности данных
»
и флажки
«Каскадное
обновление связанных полей
»
и «
Каскадное
удаление связанных полей».

4. Щелкните кнопку
Создать,
завершая выполнение операции.

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

Задание 3. Создайте
связи между таблицами «
Услуги»
и «
Заказы»,
«
Исполнители»
и «
Заказы»
по полям «
КодУслуги»
и «
НомерИсполнителя»
соответственно Закройте схему, подтвердив
сохранение изменений.

Вопросы для
самоконтроля:

  1. Какие связи могут
    существовать между таблицами в СУБД?

  2. Что обеспечивает
    создание связей?

  3. Как разместить в
    схему данных все необходимые связываемые
    таблицы?

  4. Как установить
    связь между таблицами?

  5. Зачем выставляется
    флажок Обеспечение
    целостности данных
    ?

  6. Что нужно делать,
    если целостность данных при создании
    связей не обеспечивается?

2.4. Microsoft Access 2007

2.4.5. Создание запросов и поиск информации в базе данных

В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.

В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).

Запросы на выборку используются для отбора требуемой пользователю информации, содержащейся в нескольких таблицах. Они создаются только для связанных таблиц. Queries могут основываться как на нескольких таблицах, так и существующих запросах. СУБД Access 2007 включает такие средства создания запросов, как Мастер и Конструктор.

Кроме того, в СУБД Access 2007 существует множество средств для поиска и отображения информации, которая хранится в базе данных. Данные в таблицах можно отсортировать на основе любого поля или комбинации полей. Для извлечения из базы данных необходимых записей можно отфильтровать таблицу, применив средства фильтрации.

На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.

Рис. 1.

Рассмотрим создание запроса на выборку с помощью Конструктора

Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).

Рис. 2.

Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.

Рис. 3.

В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).

Рис. 4.

Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.

Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.

При необходимости можно задать принцип сортировки (по возрастанию или по убыванию) результатов запроса. В строке «Вывод на экран» автоматически устанавливается флажок просмотра информации.

Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).

Рис. 5.

Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).

Рис. 6.

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

Закрыть окно запроса на выборку. На вопрос о сохранении изменения ответить — Да и ввести имя запроса, например «Параметрический query». Запустим Параметрический query, дважды щелкнув на нем. В открывшемся на экране окне диалога «Введите значение параметра» надо ввести фамилию студента, информацию об успеваемости которого необходимо получить (рис. 8).

Рис. 7.

Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).

Рис. 8.

В некоторых случаях для создания запросов можно использовать Мастер запросов. После создания запросов на выборку информации из БД Access 2007 можно приступать к формированию форм.

Далее >>> Раздел: 2.4.6. Создание форм для ввода данных в таблицы базы данных Access 2007

Целостность данных

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

  • Совпадающие поля из основной таблицы являются первичным ключом или имеет уникальный индекс.
  • Связанные поля имеют один и тот же тип данных. Из этого правила есть два исключения: Поле AutoNumber может быть связано с полем Number, которое имеет настройку свойства Long Integer, а поле AutoNumber, которое имеет   настройку свойства Replication ID, может быть связано с полем Number, которое имеет   настройку свойства Replication ID.
  • Обе таблицы относятся к одной и той же базе данных Access. Если таблицы являются связанными таблицами, они должны быть таблицами в формате Access, и необходимо открыть базу данных, в которой они хранятся, чтобы установить целостность данных. Референтная целостность не может быть применена для связанных таблиц из баз данных в других форматах.

При использовании целостности данных применяются следующие правила:

  • Невозможно ввести значение во внешнем ключевом поле связанной таблицы, которое не существует в первичном ключе первичной таблицы. Тем не менее, можно ввести значение Null во внешнем ключе. Это указывает на то, что записи не связаны между собой. Например, невозможно иметь заказ, который назначается клиенту, который не существует. Тем не менее, можно иметь заказ, который не назначается никому, введя значение Null в поле CustomerID.
  • Вы не можете удалить запись из основной таблицы, если в соответствующей таблице существуют соответствующие записи. Например, вы не можете удалить запись сотрудника из таблицы «Сотрудники», если в таблице «Заказы» есть заказы, назначенные сотруднику.
  • Невозможно изменить основное ключевое значение в основной таблице, если эта запись имеет соответствующие записи. Например, вы не можете изменить идентификатор сотрудника в таблице «Сотрудники», если в таблице «Заказы» есть заказы, назначенные этому сотруднику.

Типы соединения

Существует три основных типа соединения: Вы можете увидеть их на следующем снимке экрана:

Вариант 1 определяет внутреннее соединение. Внутреннее соединение — это соединение, в котором записи из двух таблиц объединяются в результатах запроса только в том случае, если значения в объединенных полях соответствуют определенному состоянию. В запросе соединение по умолчанию — это внутреннее соединение, которое выбирает записи только в том случае, если значения в объединенных полях совпадают.

Вариант 2 определяет левое внешнее соединение. Левое внешнее соединение — это соединение, в котором все записи с левой стороны операции LEFT JOIN в оператора запроса SQL добавляются к результатам запроса, даже если нет соответствующих значений в объединенном поле из таблицы на правой стороне.

Вариант 3 определяет правое внешнее соединение. Правое внешнее соединение — это соединение, в котором все записи с правой стороны операции RIGHT JOIN в операторе запроса SQL добавляются к результатам запроса, даже если нет соответствующих значений в объединенном поле из таблицы на левой стороне.

Связь вида 1:1

Определение 2

Связь 1:1 создается, если все поля связи основной и дополнительной таблиц – ключевые.

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

Пример 1

Пусть существует основная О и дополнительная Д таблицы. Символом «$*$» обозначим ключевые поля, символом «$+$» обозначим поля, которые используются для связи.

В таблицах совпадают значения в полях связи, поэтому будут связаны запись (а, 10) таблицы О и запись (а, стол) таблицы Д, а также запись (в, 3) и (в, книга).

На практике связь 1:1 используется довольно редко, т.к. информацию, которая хранится в двух таблицах, можно объединить в одну таблицу, которая будет занимать намного меньше места в памяти компьютера.

Пример 2

Например, если объединить запись (а, 10) таблицы О и запись (а, стол) таблицы Д, то получим запись (а, 10, стол) новой псевдотаблицы.

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

Для чего все это нужно?

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

Правильно настроив связи, можно быть уверенным, что ничего не потеряется.

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

  • < Назад
  • Вперёд >

Новые статьи:

  • Объединение таблиц – UNION

  • Соединение таблиц – операция JOIN и ее виды

  • Тест на знание основ SQL

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

Создание схемы данных

Для создания схемы данных в Access добавлен инструмент на панели «Работа с базами данных». СУБД автоматически создает схему по тем таблицам и связям, что существуют в базе. Приведенная выше схема создана системой самостоятельно. Пользователь может внести изменения в макет. Некоторые из них не отразятся на структуре БД, только на отображении информации. А некоторые приведут к изменениям в структуре.

В режиме «Конструктора» доступна операция «Очистить макет». При ее выполнении экран схемы данных в Access очищается, а таблицы и отношения скрываются. Это не значит, что они пропадают из базы — просто не отражаются в макете схемы.

Операция «Скрыть таблицу» произведет то же действие над выделенным объектом. Он просто исчезнет с экрана вместе со своими линиями-отношениями. Вернуть скрытые таблицы поможет операция «Отобразить таблицу». Выбираются объекты, которые нужно добавить в макет. При этом связи с ним отображаются автоматически.

Как определить связи между таблицами

При создании связи между таблицами связанные поля не должны иметь одни и те же имена. Однако связанные поля должны иметь один и тот же тип данных, если только поле первичного ключа не является полем AutoNumber. Вы можете сопоставить поле AutoNumber с полем Number, только если свойство FieldSize обоих совпадающих полей совпадает. Например, можно сопоставить поле AutoNumber и поле Number, если свойство theFieldSizeproperty обоих полей имеет значение Long Integer. Даже если оба совпадающих поля являются числовыми полями, они должны иметь параметр sameFieldSizeproperty.

Как определить связи «один ко многим» или «один к одному»

Чтобы создать связь «один ко многим» или «один к одному», выполните следующие действия.

  1. Закройте все таблицы. Нельзя создавать или изменять связи между открытыми таблицами.

  2. В Access 2002 и Access 2003 выполните следующие действия.

    1. Нажмите F11, чтобы переключиться в окно базы данных.
    2. В меню Инструменты выберите Связи.

    В Access 2007, Access 2010 или Access 2013 нажмите Связи в группе Показать/Скрыть на вкладке Инструменты базы данных.

  3. Если вы еще не определили какие-либо связи в базе данных, автоматически отобразится диалоговое окно Показать таблицу. Если вы хотите добавить таблицы, которые нужно связать, но диалоговое окно Показать таблицу не отображается, нажмите Показать таблицу в меню Связи.

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

  5. Перетащите поле, которое вы хотите связать, из одной таблицы в связанное поле в другой таблице. Чтобы перетащить несколько полей, нажмите Ctrl, нажмите на каждое поле, а затем перетащите их.

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

  6. Откроется диалоговое окно Изменение связей.  Убедитесь, что имена полей, отображаемые в двух столбцах, верны. Вы можете изменить имена, если это необходимо. 

    При необходимости установите параметры связей. Если у вас есть информация о конкретном элементе в диалоговом окне Изменение связей, нажмите кнопку со знаком вопроса, а затем нажмите на элемент. (Эти параметры будут подробно описаны ниже в этой статье.)

  7. Нажмите кнопку Создать, чтобы создать связь.

  8. Повторите шаги с 4 по 7 для каждой пары таблиц, которые вы хотите связать.

    При закрытии диалогового окна Изменение связей Access спрашивает, хотите ли вы сохранить макет. Сохраняете ли вы макет или не сохраняете макет, созданные вами связи сохраняются в базе данных.

    Примечание

    Можно создавать связи не только в таблицах, но и в запросах. Однако целостность данных связывания не обеспечивается с помощью запросов.

Как определить связь «многие ко многим»

Чтобы создать связь «многие ко многим», выполните следующие действия.

  1. Создайте две таблицы, которые будут иметь связь «многие ко многим».

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

  3. В связующей таблице установите первичный ключ, чтобы включить основные ключевые поля из двух других таблиц. Например, в связующей таблице «TitleAuthors» первичный ключ будет состоять из полей OrderID и ProductID.

    Примечание

    Чтобы создать первичный ключ, выполните следующие действия:

    1. Откройте таблицу в Конструкторе.

    2. Выберите поле или поля, которые вы хотите определить в качестве первичного ключа. Чтобы выбрать одно поле, нажмите на селектор строки для нужного поля. Чтобы выбрать несколько полей, удерживайте клавишу Ctrl, а затем нажмите селектор строки для каждого поля.

    3. В Access 2002 или в Access 2003 нажмите на Первичный ключ на панели инструментов.

      В Access 2007 нажмите на Первичный ключ в группе Инструменты на вкладке Дизайн.

      Примечание

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

  4. Определите связь один-ко-многим между каждой основной и связующей таблицами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector