Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 3. Создание базы данных.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
484.86 Кб
Скачать

Объединение записей взаимосвязанных таблиц

При создании форм, запросов, отчетов, страниц доступа к данным на основе взаимосвязанных таблиц производится объединение их записей: объединяется каждая запись из одной таблицы с каждой записью из другой таблицы при условии равенства значений в поле связи. Рассмотрим пример объединения записей таблиц товар и поставка_план по полю код_тов. Таблица поставка_план содержит план отгрузки товаров, заданный в спецификациях договоров. Каждая запись этой таблицы представляет один из товач ров, который должен быть отгружен в указанные сроки покупателю. Рассматриваемые таблицы находятся в отношении один-ко-многим. Поле код_тов является уникальным ключом в таблице товар. В таблице поставка_план значения этого поля повторяются во многих записях. Пример заполнения таблиц товар и поставка__план, для которых не установлен параметр обеспечения связной целостности, показан на рис. 3.31.

Рис 3.31 Содержимое объединяемых таблиц товар и поставка__план,

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

При объединении (по умолчанию) записей по полю код_тов вследствие того, что таблицы находятся в отношении один-ко-многим, формируется таблица, в которой каждая строка подчиненной таблицы поставка_план объединяется с одной из строк таблицы товар (рис. 3.32).

Как видно из таблицы результатов (см. рис. 3.32), ее записи образований слиянием только тех записей таблиц, которые имеют совпадающие значения поля связи код_тов = Т001, Т002, ..., Т005. Здесь объединение произведено первым способом, устанавливаемым для любой связи таблиц по умолчанию.

Если для некоторой записи, например, записи с кодом товара Т008 в таблице товар отсутствуют связанные записи в другой таблице — объединять запись не с чем — и в результат такая запись не включается. Именно по этой причине в результате объединения таблиц товар и поставка_план отсутствуют записи о товарах, не представленных в плане поставки, а также записано плановых поставках, в которых указан товар, отсутствующий в таблице ТОВАР.

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

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

  2. Объединение тех записей, в которых связанные поля обеих таблиц совпадают, а также объединение всех записей из первой таблицы, для которых нет связанных во второй, с пустой записью второй таблицы.

  3. Объединение тех записей, в которых связанные поля обеих таблиц совпадают, а также объединение всех записей из второй таблицы, для которых нет связанных в первой; с пустой записью первой таблицы.

Любой из перечисленных способов объединения может быть выбран для связи вне зависимости от того, находятся связываемые таблицы в отношениях 1:1, 1:М или тип отношения не может быть определен системой.

Выбор способа объединения записей

В окне Изменение связей (Edit Relationships) (см. рис. 3.28) есть кнопка Объединение. При нажатии этой кнопки появится окно Параметры объединения,

и можно будет убедиться, что для связываемых таблиц по умолчанию выбран первый способ объединения (рис. 3.33).

Рис 3.33 Окно выбора способа объединения связываемых таблиц

Результаты объединения таблиц получены по запросу выборки (описание запросов см. в главе 7), в котором определены включаемые в результат запроса поля из объединяемых таблиц. Заметим, что для каждого способа объедине­ния таблиц должен формироваться новый запрос.

При объединении таблиц вторым способом к записям, полученным первым способом, добавились записи из таблицы товар, не имеющие связанных записей в таблице поставка__план. Каждая такая запись дополнена полями записи поставка_план, которые содержат значения Null. Такая ситуация возникла вследствие того, что в плане отсутствуют заказы на тойары Т006, Т007, ..., ТОЮ.

Null — это неизменяющаяся константа, которая означает, что поле не содержит символов или значений. Поле получает значение Null, когда его содержимое неизвестно. Такое поле не следует путать с полем, содержащим пустую строку (""), хотя выглядят они одинаково. Значение Null можно ввести в поле или использовать в выражениях и запросах для указания отсутствующих или неизвестных данных: Пустая строка служит для указания того, что строковое значение для этого поля отсутствует. Для ввода пустой строки с клавиатуры следует ввести два символа прямых кавычек без пробела (""). Пользователь имеет возможность различать значения Null и пустые строки с помощью выражения.

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

Каждая такая запись дополнена полями записи товар, которые содержат значения Null. Такая ситуация возникает, если в таблицу товар не внесены сведения о новых товарах Т015 и Т016 или договор заключен на не существующий товар.

Напомним, что если для связи товар > поставка_план установлен параметр обеспечения целостности, ввод в таблицу поставка_план записей с указанием товаров, отсутствующих в таблице товар, невозможен.