
- •Цель работы: изучение методов создание связей и объединений в запросах.
- •Работа в окне конструктора таблиц
- •Изменение размера верхней части окна конструктора запросов
- •Перемещение макетов таблиц
- •Просмотр имен таблиц
- •Ограничения в многотабличных запросах
- •Ограничения, накладываемые на обновление записей
- •Советы по созданию обновляемых полей в запросах
- •Связывание таблиц
- •Удаление связей
- •Типы связей между таблицами
- •Внутренние объединения
- •Изменение свойств связи
- •Создание левого внешнего объединения
Лабораторная работа № 5
Цель работы: изучение методов создание связей и объединений в запросах.
В предыдущих лабораторных работах вы уже создавали простые запросы по таблице Реts. Получить информацию из одной таблицы с помощью запроса достаточно просто. Однако часто необходимо извлечь сведения, например данные об имени клиента и о его домашних животных, из нескольких связанных таблиц. В этой лабораторной работе вы узнаете, как это сделать.
Добавление нескольких таблиц в окно запроса
Ранее вы познакомились с таблицами базы данных Моuntain Аnimal Ноsрitа1, которая состоит из четырех основных таблиц и четырех справочников. Кроме того, вы познакомились с понятиями ключевое поле и внешний ключ и узнали об их роли в объединении двух таблиц. Также рассказывалось о том, как создавать связи между таблицами с помощью команды СервисСхема данных в окне базы данных. И, наконец, вы узнали об условиях целостности данных в связанных таблицах.
Создание таблиц и задание связей между ними позволяет выполнять многотабличные запросы для получения информации из нескольких баз данных сразу.
После добавления в запрос нескольких таблиц и выделения в них полей информацию из таблиц в базе данных можно просматривать так, как будто она содержится в одной таблице. Например, вы хотите отослать письма всем владельцам змей, которые приносили своих питомцев на процедуры в течение последних двух месяцев. Для получения этих данных необходимо извлечь информацию из таблиц Реts, Сиstоmеr и Visits. Это можно сделать с помощью таблиц Реts и Visits, создав запрос для всех животных, у которых значение поля Туре оf Аnimal равно 8паkе (змея), а значение поля Visit Data находится в пределах значений текущая дата и текущая дата минус два месяца. Благодаря связи между таблицами Реts и Сиstоmеr вы имеете доступ к информации о владельце каждой змеи и можете создать форму отчета на основе данных таблиц Реts, Сиstоmеr и Visits.
Для создания многотабличного запроса сначала откройте каждую из таблиц в окне запроса. Ниже рассказывается, как открыть таблицы Реts, Сиstоmеr и Visits в одном запросе.
1. Щелкните на вкладке Запросы в окне базы данных.
2. Для создания запроса щелкните на кнопке Создать.
3. В диалоговом окне Новый запрос выберите опцию Конструктор и щелкните на кнопке ОК.
4. Выберите таблицу Реts, дважды щелкнув на ее имени.
5. Выберите таблицу Сиstоmеr, дважды щелкнув на ее имени.
6. Выберите таблицу Visits, дважды щелкнув на ее имени.
7. В диалоговом окне Добавление таблицы щелкните на кнопке Закрыть.
Существует еще один способ добавления таблиц — выделите по отдельности нужные таблицы и щелкните на кнопке Добавить.
Верхняя часть окна конструктора запросов с выбранными таблицами Реts, Сиstоmеr и Visits показана на рис. 1.
Рис. 1. Окно запроса на выборку с тремя выбранными таблицами
Добавлять таблицы можно также с помощью команды ЗапросДобавить таблицу из меню окна Конструктора запросов или щелчка на кнопке Добавить таблицу, расположенной на панели инструментов.
Работа в верхней части окна конструктора запросов
Как показано на рис.1, таблицы соединены линией, проходящей от ключевого поля одной таблицы к ключевому полю другой (оно называется полем внешнего ключа). Точнее, на экране вы увидите две линии, соединяющие таблицы Реts и Сиstоmеr и одну линию, соединяющую таблицы Сиstоmеr и Visits. Ниже вы узнаете, как переместить макет таблиц, чтобы линии на экране не накладывались одна на другую и отображались правильно.
Линия связи
При отображении нескольких связанных таблиц Ассеss помещает между ними линию, которая называется линией связи (jот line). Выглядит она, как обычная линия, обозначающая объединение двух таблиц. В данном примере линия связи проходит от таблицы Реts к таблице Сиstоmег и соединяет два поля Сиstоmег Number. Линия связи также проходит между таблицами Реts и Visits, соединяя поля Реt Id.
Это объединение создано автоматически, поскольку была установлена связь в окне базы данных. Если Ассеss известно о существовании связи, она автоматически создает объединение при добавлении таблиц в запрос и отображает в виде линии связи между двумя таблицами.
Если при создании связи был установлен флажок Обеспечение целостности данных, Асееss отметит этот факт и выделит начало и конец линии в окне таблицы, как показано на рис. 1. Обратите внимание, что между таблицами Реts и Visits проведена линия обычной толщины, которая начинается и заканчивается небольшими утолщениями. Такое изменение толщины линии указывает, что при создании связи между этими двумя таблицами в окне Схема данных был установлен флажок Обеспечение целостности данных. Если связь имеет тип один-ко-многим, сторона связи многие обозначается символом бесконечности ().
Если связь между таблицами не задана, но выполняются перечисленные ниже условия, Ассеss автоматически объединит таблицы.
1. В обеих таблицах есть поля с одинаковыми именами.
2. Поля с одинаковыми именами имеют один и тот же тип (текстовый, числовой и т.д.). В одной из таблиц такое поле является ключевым (рrimary key).
Access автоматически объеденяет таблицы, если между ними существует связь. Однако это свойство можно отключить, отменив принятое по умолчанию значение опции Автоматическое объединение в диалоговом окне глобальных параметров. Для изменения этого параметра выберите команду СервисПараметры, щелкните на вкладке Таблицы/запросы и отмените флажок Автоматическое объединение.