Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Базы данных: проектирование

Реляционная алгебра

Реляционная алгебра впервые была сформулирована Э. Коддом[1] в 1972 г., где основным операндом для операций определены отношения. Именно они (отношения) являются основными компонентами всех операций в реляционной алгебре.

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

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

  • • стандартные операции над отношениями — объединение, пересечение, разность, декартово произведение;
  • • специализированные операции над отношениями — сокращение (выборка), проекция, соединение, деление.

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

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

Реляционная операция " Объединение"

Математика при операциях над множествами определяет, что объединение двух множеств приводит к появлению множества, содержащего все элементы, принадлежащие либо одному из множеств, либо обоим множествам (рис. 1.16).

image16

Рис. 1.16. Операция объединения (и) над множествами


Результатом выполнения данной операции будет отношение, состоящее из всех кортежей одного из отношений либо обоих исходных отношений[2]. Однако стоит помнить, что операции с множествами в математике и операции с отношениями в базах данных являются близкими, но не одинаковыми операциями. Обусловлено это тем, что в реляционной алгебре, реализуемой в современных базах данных, операция объединения может выполняться только над однотипными отношениями, поскольку необходимо сохранять реляционное свойство замкнутости.

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

Например, на рис. 1.17 показано, что два отношения "Сотрудник" и "Должность" не могут быть объединены, поскольку состоят из разного набора атрибутов, т.е. являются разнотипными. Такая операция над этими отношениями будет невозможна, но если будет два отношения с одинаковым набором атрибутов, т.е. однотипные, то выполнить операцию объединения будет возможно.

image17

Рис. 1.17. Операция объединения (и) над разнотипными отношениями


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

image18

Рис. 1.18. Операция объединения (и) над однотипными отношениями


Операция объединения достаточно часто применяется в базах данных, когда необходимо получить сведения об одном и том же объекте предметной области, но но разным условиям, объединив полученные сведения в единую совокупность значений. Примером такой необходимость может быть такой вариант (рис. 1.19): сформировать списки людей, работающих в университете, и людей, обучающихся на первом и втором курсах с указанием типа человека {"Сотрудник", "Учащийся"}. Такой запрос требует реализации выборки сотрудников и отдельной выборки учащихся, поскольку для выполнения такого запроса нужно обратиться к различным отношениям, не связанным друг с другом.


 



 Рис. 1.19. Исходные отношения для сотрудника и учащегося


 
Рис. 1.20. Пример выполненного объединения с представлением результирующего отношения

Как видно, оба отношения не связаны друг с другом, но обладают идентичными атрибутами: "Табельный номер" и "Студенческий билет" являются атрибутами, описываемыми символьным типом, и их можно рассматривать в качестве идентичных, а ФИО является одинаковым атрибутом по смыслу и типу (символьный) хранимых данных. В результате выполнения операции объединения будет получено отношение, содержащее два атрибута — идентификатор человека (здесь происходит переименование исходного атрибута в целях обеспечения операции объединения, поскольку именно одинаковые названия атрибутов, а не только одинаковые типы данных, позволяют ее выполнить) и ФИО (рис. 1.20).



Полученное отношение будет состоять из всех кортежей отношения "Сотрудник", представляя атрибут "Табельный номер" в виде атрибута "ИДФ человека", и из всех кортежей отношения "Учащийся", представляя атрибут "Студенческий билет" в виде атрибута "ИДФ человека".

  • [1] Codd E. F. Relational Completeness of Data Base Sublanguages / Randall J. Rustin (ed.). Data Base Systems, Courant Computer Science Symposia Series 6. Englewood Cliffs, N. J. : Prentice-Mali, 1972.
  • [2] В языке SQL реляционная операция "Объединение" представляется операцией "Union".
 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы