Типовые операции совместной обработки реляционных таблиц
Операции совместной обработки таблиц различны для таблиц с одинаковой или отличающейся схемой данных. Применительно к односхемным таблицам (одинаковый состав полей) выполняются следующие операции:
Объединение – для двух таблиц строится новая таблица той же схемы, содержащая совокупность записей исходных таблиц. При этом, если таблицы содержат одинаковые значения первичного ключа, при объединении таблиц записи не дублируются. Если записи двух таблиц имеют различные значения первичного ключа, результат объединения – совокупность всех записей исходных таблиц.
Пример 19.45.Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения) одной схемы. Они объединяются в одну таблицу СТУДЕНТЫ той же схемы (но без дублирования первичных ключей записей). Так, студентка ПЕТРОВА Марина присутствует в таблице СТУДЕНТЫ в единственном числе:
СТУДЕНТ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 |
СТУДЕНТ-ЗАОЧНИК
Имя | Фамилия | Дата рождения | № зач.книжки |
Иван | Сидоров | 12.1.80 | |
Марина | Петрова | 1.1.80 |
Итог объединения: СТУДЕНТЫ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 | |
Иван | Сидоров | 12.1.80 |
Пересечение – для двух таблиц строится новая таблица той же схемы, содержащая общие для них записи (с одинаковыми значениями первичного ключа). Если записей, содержащих одинаковое значение первичного ключа, нет, результат пересечения – пустая таблица.
Пример 19.46.Имеются таблицы СТУДЕНТ (дневная форма обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При пересечении таблиц выявляются студенты, находящиеся в двух таблицах одновременно:
СТУДЕНТ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 |
СТУДЕНТ-ЗАОЧНИК
Имя | Фамилия | Дата рождения | № зач.книжки |
Иван | Сидоров | 12.1.80 | |
Марина | Петрова | 1.1.80 |
Итог пересечения:
Имя | Фамилия | Дата рождения | № зач.книжки |
Марина | Петрова | 1.1.80 |
Вычитание – для двух таблиц строится новая таблица той же схемы, содержащая записи первой таблицы, отличные от второй таблицы. Если записей, содержащих одинаковое значение первичного ключа, во второй таблице нет, результат вычитания – полный состав записей первой таблицы; если записи второй таблицы содержат все значения первичного ключа записей первой таблицы, результат вычитания – пустая таблица.
Пример 19.47.Имеются таблицы СТУДЕНТЫ (весь контингент студентов – дневная и заочная формы обучения) и СТУДЕНТ-ЗАОЧНИК (заочная форма обучения). При вычитании таблиц выявляются студенты очной формы обучения:
СТУДЕНТЫ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 | |
Иван | Сидоров | 12.1.80 |
СТУДЕНТ-ЗАОЧНИК
Имя | Фамилия | Дата рождения | № зач.книжки |
Иван | Сидоров | 12.1.80 | |
Марина | Петрова | 1.1.80 |
Итог вычитания таблиц: СТУДЕНТ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 |
Между записями реляционных таблиц устанавливаются отношения следующих типов:
1:1 – одно – однозначное соответствие, когда записи в первой таблице соответствует запись в связанной с ней другой таблице (в обратном направлении также выполняется данное соответствие).
1:М – одно – многозначное соответствие, когда одной записи в первой таблице соответствует несколько записей во второй таблице, но каждая запись второй таблицы связана не более чем с одной записью первой таблицы.
Связь М:М не реализуется в реляционных языках непосредственно, для этого используются промежуточные таблицы-связки для замены типа соответствия на 1:М.
Пример 19.48.Если таблица СТУДЕНТ содержит первичный ключ [№ зач.книжки], а таблица ОЦЕНКА имеет схему ([№ зач.книжки], [Код дисциплины], [Результат]), то поле [№ зач.книжки] таблицы ОЦЕНКА выступает как внешний ключ для организации связи с таблицей СТУДЕНТ. Связь возможна, если тип данных и значение данного поля в обеих таблицах будут одинаковыми, при этом эти поля могут иметь и произвольные названия. Так, в таблице ОЦЕНКА может использоваться поле [Код студента], к примеру.
Применительно к разносхемным таблицам выполняются различные действия.
Декартово произведение – две таблицы образуют новую таблицу, которая включает все поля исходных таблиц. В результирующей таблице выводится итог соединения типа "каждый с каждым", при этом могут отсутствовать значения отдельных полей в результирующей записи.
Пример 19.49.Имеются таблицы СТУДЕНТ и ДИСЦИПЛИНА([Код дисциплины], [Наименование дисциплины]). Декартово произведение таблиц дает новую таблицу – УСПЕВАЕМОСТЬ со схемой ([Имя], [Фамилия], [Дата рождения], [№ зач.книжки], [Код дисциплины], [Наименование дисциплины]). Если какой-либо студент не связан с определенной дисциплиной либо по дисциплине не предполагается учет успеваемости, результирующая запись, полученная как декартово произведение, не имеет смысла.
СТУДЕНТ
Имя | Фамилия | Дата рождения | № зач.книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 |
ДИСЦИПЛИНА
Код дисциплины | Наименование дисциплины |
Высшая математика | |
Информатика |
УСПЕВАЕМОСТЬ
Имя | Фамилия | Дата рождения | № эач. книжки | Код дисциплины | Наименование дисциплины |
Петр | Иванов | 12.12.80 | Высшая математика | ||
Петр | Иванов | 12.12.80 | Информатика | ||
Марина | Петрова | 1.1.80 | Высшая математика | ||
Марина | Петрова | 1.1.80 | Информатика |
Условием совместной обработки разносхемных реляционных таблиц в ряде случаев является наличие общих по типу и значению полей, так называемых внешних ключей.
Соединение – две таблицы, имеющие общие поля – внешние ключи, участвуют в создании новой таблицы, схема которой строится объединением всех полей исходных отношений, а результирующие записи формируются по определенным условиям:
для одинаковых значений внешних ключей – симметричное соединение;
для всех записей одной из таблиц и соответствующих им записей другой таблицы – внешнее соединение.
Пример 19.50.Соединить таблицы СТУДЕНТЫ и ОЦЕНКА при условии, что включены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. Объединение таблиц возможно по общему полю – [№ зач.книжки].
СТУДЕНТЫ
Имя | Фамилия | Дата рождения | № зач. книжки |
Петр | Иванов | 12.12.80 | |
Марина | Петрова | 1.1.80 | |
Иван | Сидоров | 12.1.80 |
ОЦЕНКА
Код дисциплины | № зач. книжки | Результат |
РЕЗУЛЬТАТЫ
Имя | Фамилия | Дата рождения | № зач. книжки | Код дисциплины | № зач. книжки | Результат |
Петр | Иванов | 12.12.80 | ||||
Петр | Иванов | 12.12.80 | ||||
Марина | Петрова | 1.1.80 | ||||
Марина | Петрова | 1.1.80 | ||||
Иван | Сидоров | 12.1.80 | пустые поля, так как нет соответствующих записей в таблице ОЦЕНКА |
Деление – создается новая таблица, схема которой строится вычитанием из множества полей первой таблицы множества полей второй таблицы, результирующие записи формируются для одинаковых значений общих полей.
Пример 19.51.Результат деления таблицы УСПЕВАЕМОСТЬ на таблицу ОЦЕНКА дает таблицу СТУДЕНТ (см. предыдущий пример).
Дата добавления: 2015-11-28; просмотров: 792;