Внутреннее соединение
Внутреннее соединение двух таблиц по одному полю в реляционной базе данных строится на основе отношения "один-ко-многим". Примером может служить демонстрационная база данных "Борей" (Northwind), в которой все соединения являются внутренними соединениями по одному полю на основе указанного отношения. В ходе разработки баз данных, в которых предполагается использование запросов на основе внутренних соединений, придерживайтесь следующих правил.
- Каждая таблица "один" должна иметь первичный ключ с уникальными.значениями. Отсутствие повторений значений поля или полей первичного ключа в таблице Access устанавливает автоматически.
- Отношение "многие-ко-многим" реализуйте на основе промежуточной таблицы, которая связана с каждой из двух таблиц отношением "многие-к-одному". Для обеих связей промежуточная таблица будет находиться со стороны "многие".
- Необходимо извлечь повторяющиеся данные в новую таблицу и связать ее с таблицей, из которой эти данные были получены, отношением "многие-к-одному". Основная цель – однозначно определить извлеченные данные. Часто для этого приходится использовать первичный ключ, состоящий из нескольких полей. Для автоматизации работы по нахождению и извлечению повторяющейся информации можно использовать Мастер по анализу таблиц Microsoft Access. Этот мастер запускается при выборе команды меню Сервис › Анализ › Таблица (Tools › Analysis › Table).
В качестве примера использования запроса на основе внутреннего соединения по одному полю в базе данных "Борей" (Northwind) построим отчет с указанием марки товара, его поставщика, единицы измерения товара и его цены:
- Если база данных "Борей" открыта, закройте все окна, кроме окна База данных (Database). Если база данных "Борей" не загружена, загрузите ее.
- Щелкните по ярлыку Запросы (Queries) на панели объектов окна База данных (Database), чтобы открыть список запросов, а затем нажмите кнопку Создать (New) для создания нового запроса. В появившемся диалоговом окне Новый запрос (New Query) выделите элемент Конструктор (Design View) и нажмите кнопку ОК. Access отображает диалоговое окно Добавление таблицы (Show Table) поверх пустого окна запроса.
- Выберите таблицу "Поставщики" (Suppliers) и добавьте ее в запрос. Access покажет список полей таблицы в верхней панели окна запроса.
- Добавьте также таблицу "Товары" (Products) и закройте диалоговое окно Добавление таблицы (Show Table). Access добавляет список полей таблицы "Товары" (Products) в окно запроса и изображает соединение полей "КодПоставщика" (SupplierlD) двух таблиц (рис. 4.20). Соединение создается автоматически, т. к. поле "КодПоставщика" является ключевым в таблице "Поставщики" и в таблице "Товары" найдено поле с тем же именем (внешний ключ). Отображаемое отношение является отношением "один-ко-многим".
Рис. 4.20. Окно Конструктора запроса с изображением соединения полей таблиц - Выберите поле "Марка" (ProductName) в таблице "Товары" (Products) и перетащите его в строку Поле (Field) первого столбца бланка запроса.
- Выберите поле "Название" (CompanyName) в таблице "Поставщики" (Suppliers) и перетащите в строку Поле (Field) второго столбца. Также перетащите поля "ЕдиницаИзмерения" (QuantityPerUnit) и "Цена" (UnitPrice) таблицы "Товары" (Products) в строку Поле (Field) третьего и четвертого столбца бланка запроса, соответственно (рис. 4.21).