Реляционная операция "Пересечение"
Операция "Пересечение" (рис. 1.21) в математике предполагает создание множества, в которое входят элементы обоих пересекаемых исходных множеств. Эта особенность дает огромные возможности в базах данных,
когда необходимо ограничить выбираемые данные, что является наиболее часто используемым действием при работе с данными.
Рис. 1.21. Операция пересечения множеств (п) |
Реализуя операцию "Пересечение" в реляционной алгебре, рассматривают отношения, которые, как и в предыдущем случае (операция "Объединение"), должны обладать свойством идентичности отношений, т.е. обладать похожими структурами и типами данных но имеющимся в отношениях атрибутам[1] (рис. 1.22).
Рис. 1.22. Пример реализации операции "Пересечение" (п) |
Как видно на рисунке выше, оба отношения обладают одинаковыми структурами (набором атрибутов). В результате операции "Пересечение" остался только один кортеж — обладающий одинаковыми данными в обоих исходных отношениях. Прочие кортежи отношений не попали в результирующее отношение.
Такая особенность операции "Пересечение" дает возможность при работе с данными в базах данных выполнять выборки данных из различных таблиц, учитывая только пересекающиеся (идентичные) хранимые сведения и ограничивая результаты получаемых данных, что позволяет получать только такие сведения, которые соответствуют информационной потребности пользователя.
Так же, как и многие действия над множествами в математике, операция "Пересечение" обладает свойством коммутативности, что выражается в отсутствии явной направленности выполнения действия. Это означает, что, выполнив операции "Л пересекает Б" и "В пересекает Л", мы получим абсолютно идентичные результаты.
Реляционная операция "Разность"
В отличие от операций "Пересечение" и "Объединение" операция "Разность" [2] нe обладает свойством коммутативности и представляется направленным действием (рис. 1.23). Таким же свойством в математике обладает действие разности (например, "2 - 5" и "5 - 2" не являются идентичной операцией, поскольку возвращают разные результаты). То же относится к операциям над множествами.
Рис. 1.23. Операция разности множеств () |
Аналогично операциям "Объединение" и "Пересечение" рассматриваемая операция требует, чтобы исходные отношения обладали идентичными структурами и типами данных. Поскольку операция предполагает полное сравнение данных из исходных отношений по всем атрибутам, то появление какого-либо атрибута в одном из отношений, не представленного в другом отношении, не позволит осуществить такое сравнение, а значит, не позволит получить результат операции (рис. 1.24).
Рис. 1.24. Пример реализации операции "Разность" () |
Как очевидно из примера, если выполнить операцию в направлении от левого отношения (кортежи по сотрудникам: Иванов Иван Иванович и Петров Петр Петрович) к правому отношению (кортежи по сотрудникам: Сидоров Сидор Сидорович и Петров Петр Петрович), мы получим результат, где останется только такой кортеж, который не представлен в правом отношении (кортеж по сотруднику: Иванов Иван Иванович).
Процесс выполнения операции "Разность" осуществляется следующим образом.
1. Выбираются кортежи первого отношения.
2. Выбираются кортежи второго отношения.
3. В первом отношении для каждого кортежа проверяется наличие такого же кортежа во втором отношении:
а) если во втором отношении искомый кортеж не представлен, то он представляется в результате;
б) если во втором отношении искомый кортеж существует, то он не включается в результат операции.
В итоге остаются только уникальные кортежи из первого отношения. А что же происходит с уникальными кортежами второго отношения? — Ничего. Эти кортежи не участвуют в выполнении операции "Разность", что связано с отсутствием свойства коммутативности в операции "Разность". Кортежи второго отношения для данной операции необходимы только с целью проверки существования кортежа, идентичного относительно первого отношения.
Реляционная операция "Декартово произведение"
Операция "Декартово произведение" (рис. 1.25) применяется в базах данных не очень часто, но бывает очень полезной, когда необходимо получить все множество любых пересечений элементов исходных множеств. В математике данная операция предполагает получение нового множества, состоящего из всех возможных нар, где первый элемент взят из первого множества, а второй — из второго множества.
В отличие от всех предыдущих рассмотренных операций эта операция не требует идентичности структур исходных отношений. Но на исходные отношения обязательно должно быть наложено одно ограничение — заголовки обоих отношений должны содержать уникальные атрибуты. Это условие обусловлено тем, что в заголовке результирующего отношения будут представлены все атрибуты из заголовков исходных отношений, и если в их заголовках будет существовать хотя бы один одинаковый атрибут, то это привет к появлению двух одинаковых атрибутов в результирующем отношении, что нецелесообразно ввиду невозможности однозначно определять кортеж с соответствующим названием.
Рис. 1.25. Пример реализации операции "Декартово произведение" |
Как очевидно из примера, в качестве исходных отношений взяты отношения "Сотрудник" и "Должность". Оба отношения по своей сути представляют своеобразные справочники с уникальными кортежами. По условию выполняемой операции необходимо выполнить декартово произведение над этими отношениями, что привело к появлению нового отношения, получившего все атрибуты исходных отношений, а кортежи были объединены но всем правилам выполняемой операции, где были взяты все кортежи первого отношения и к каждому полученному кортежу был поставлен в соответствие каждый кортеж из второго отношения.
При формировании базы данных в правильном представлении у разработчиков не так часто возникает потребность в выполнении данной операции. Тем не менее, такая потребность может возникнуть. Например, имеются списки учащихся (табл. 1.4) определенной учебной группы, которые должны выполнить ряд работ (табл. 1.5), для которых определяется условие, что до момента их выполнения всем учащимся по каждой работе выставляется неудовлетворительная оценка независимо от факта выполнения работы. Таким образом, получается, что к моменту начала выполнения работ в базе данных уже должны существовать записи, которые свяжут каждого учащегося с каждой работой.
Таблица 1.4
Пример первого отношения "Учащийся"
Таблица 1.5 |
Пример второго отношения "Работы"
|
Результатом выполнения операции "Декартового произведение" будет нового отношение, показанное в табл. 1.6.
Таблица 1.6 Пример результирующего отношения "Работы учащегося"
|