1.3.3 Основные бинарные операции
Объединение двух совместимых таблиц тА и тВ – это таблица, у которой такой же заголовок, что и у исходных таблиц-операндов, а тело состоит из таких записей, которые входят хотя бы в одну из исходных таблиц (или в тА или в тВ).
В общем виде объединение записывается так
тA UNION тB
Для нашего примера таблица объединения будет иметь вид
тU: =тA UNION тB
Код |
Гр |
Фам |
1 |
Гр1 |
Андреев |
4 |
Гр2 |
Антонов |
2 |
Гр3 |
Петров |
Таблица тU представляет информацию о всех студентах: или обучающихся на военной кафедре, или живущих в общежитии (или, или).
При выполнении объединения существует возможность появления повторяющихся записей. Они должны быть исключены. Из таблицы тU исключена повторяющаяся запись (Андреев).
Пересечение двух таблиц – это таблица с таким же заголовком, и телом, состоящим из множества таких записей, которые входят одновременно в обе исходные таблицы.
Для нашего примера таблица пересечения будет иметь вид
тI : =тA INTERSECT тB
Код |
Гр |
Фам |
1 |
Гр1 |
Андреев |
В таблице тI остался студент, который обучается на военной кафедре и проживает в общежитии (и, и).
Разность двух таблиц – это таблица с таким же заголовком, и телом, состоящим из таких записей, которые принадлежат одной таблице и не принадлежат другой таблице.
Для исходных таблиц можно составить две таблицы – разности.
тМ1 := тА MINUS тB
Код |
Гр |
Фам |
студент, который обучается на военной кафедре и не проживает в общежитии |
4 |
Гр2 |
Антонов |
тM2 := тВ MINUS тA
Код |
Гр |
Фам |
студент, который проживает в общежитии и не обучается на военной кафедре |
2 |
Гр3 |
Петров |
При выполнении операции разности возможно удаление несуществующей записи.
В общем виде операции теории множеств отображены на рис. 1.2.
Особое место в теории множеств занимает прямое произведение. Оно может быть получено для любых двух множеств. Элементами результирующего множества являются пары, составленные из элементов первого и второго множеств.
AUB { |
A{ |
А11 |
А12 |
А13 |
} А\В |
}A∩B |
А21 |
А22 |
А23 | ||||
А31 |
А32 |
А33 | ||||
А41 |
А42 |
А43 |
}B | |||
В\А { |
А51 |
А52 |
А53 | |||
А61 |
А62 |
А63 |
Рисунок 1.2 – Диаграмма соотношения основных операций РА
Особое место в теории множеств занимает прямое произведение. Оно может быть получено для любых двух множеств. Элементами результирующего множества являются пары, составленные из элементов первого и второго множеств.
Например, задано два множества
А 1 2 3 В 1 3
4 5 6 2 2
3 1
Прямое произведение будет равно
A*B ?
Рассмотрим операцию произведения таблиц.
Поскольку таблицы являются множествами, то и для любых двух таблиц возможно получение прямого произведения. Однако элементами результата будут являться не записи, а пары записей. Следовательно, результат не будет таблицей. Поэтому в РА используется не операции взятия прямого произведения, а его специализированная форма – расширенное прямое произведение таблиц, которое для упрощения называется произведением.
Произведение двух таблиц – это таблица, у которой заголовок представляет собой сцепление (конкатенацию) заголовков исходных таблиц, а тело состоит из таких записей, которые являются сцеплением записей исходных таблиц. Число записей таблицы–произведения равно произведению количества записей исходных таблиц.
Эта операция может применяться только к таблицам, совместимым по произведению. Для такой совместимости исходные таблицы должны иметь непересекающиеся множества полей или, другими словами, таблицы не могут содержать одинаковые имена полей. В противном случае заголовок таблицы–произведения будет включать повторяющиеся имена полей, что недопустимо для реляционных таблиц.
Для примера введем новую тУП, содержащую все К дисциплин учебного плана спецподготовки.
тУП
-
Дисциплина
Лекций
. . .
СРС
Д1
Ч1
Д2
Ч2
Д3
Ч1
…
Дк
Чк
Для упрощения возьмем из тУП одно поле.
тD:=тУП[Дисциплина]
-
Дисциплина
Д1
Д2
Д3
…
Дк
Для упрощения возьмем из тА одно поле.
тА2:=тА [Код] тD
-
Код
1
4
Произведение тА2 и тD будет включать все пары студент-дисциплина и дисциплина-студент. Таблица произведения будет иметь вид
тT := тА2 TIMES тD
Код |
Дисциплина |
все студенты, проходящие спецподготовку, изучают все дисциплины, предусмотренные учебным планом
|
1 |
Д1 | |
1 |
Д2 | |
1 |
Д3 | |
1 |
… | |
1 |
Дк | |
4 |
Д1 | |
4 |
Д2 | |
4 |
… | |
4 |
Д3 | |
4 |
Дк |
Следует заметить, что операция произведения не является слишком осмысленной на практике. Во-первых, мощность ее результата очень велика даже при незначительных мощностях операндов, а во-вторых, результат операции не более информативен, чем исходные таблицы-операнды, взятые в совокупности исходные таблицы-операнды. Например, тТ просто подтверждает, что все студенты на спецподговке изучают все дисциплины учебного плана.
Она может быть использована для подготовки таблицы, в которой будут храниться оценки по соответствующим дисциплинам:
тОц := EXTEND тТ ADD Null AS Оценка.
Таблица тОц может использоваться для формирования выписок из зачетной книжке.
Операции объединения, пересечения и произведения таблиц обладают свойствами ассоциативности и коммутативности. Если обозначить указанные операции как ОП, то можно записать следующие эквивалентные выражения:
Для свойства ассоциативности
тA ОП ( тB ОП тF ) тA ОП тB ОП тF (эквиваленты)
для свойства коммутативности
тA ОП тB тB ОП тA (эквиваленты )
Если обозначить через s условия выборки, то можно записать тождества, которые верны для выборки:
A WHERE s1 AND s2 = (A WHERE s1) INTERSECT (A WHERE s2)
A WHERE s1 OR s2 = (A WHERE s1) UNION (A WHERE s2)
A WHERE NOT s = A MINUS (A WHERE s)
Эти тождества подтверждают возможность того, что условие выборки может содержать произвольное число логических сочетаний простых сравнений.