Читайте также:
|
|
В реляционной алгебре определен ряд операций над множествами. Вслед за [3] познакомимся с теми из них, которые имеют интерес с точки зрения обработки данных. В качестве примеров будем использовать модельные отношения, не оговаривая точно значение их атрибутов; будем считать, что одноименные атрибуты принадлежат к одному домену.
Проекция. Эта операция определена над одиночным отношением. Результатом является новое отношение, состоящее из перечисленного подмножества атрибутов исходного отношения. Иными словами, результат проекции формируется следующим образом:
· Из отношения удаляются все атрибуты, кроме перечисленных заранее.
· Из полученной совокупности кортежей удаляются повторяющиеся.
Пусть задано следующее отношение:
A1 | B1 | C1 |
A | ||
F | ||
A | ||
D |
Требуется получить проекцию, состоящую из полей B1 и C1. В результате мы получим:
B1 | C1 |
A | |
F | |
D |
Проекцию отношения Y, содержащую атрибуты А,В,С … будем обозначать как proj А,В,С,… (Y).
Выборка. Подобно проекции, операция выборки определена над одним отношением, однако сама эта операция состоит в выделении какого- либо подмножества кортежей (записей) в отдельную таблицу. В выборку включаются только те строки, которые удовлетворяют заданному условию. Результатом является отношение, имеющее ту же степень и те же имена атрибутов, что и исходное, но иную мощность (количество записей). В частных случаях выборка может совпадать с исходной таблицей (условие выборки выполняется для всех записей), либо не включать в себя ни одной записи («пустая» выборка).
Для предыдущего примера построим выборку по условию С1<100.
A1 | B1 | C1 |
F | ||
D |
Соединение (join). В реляционной алгебре определен целый ряд операций соединения. Здесь будет рассмотрена лишь одна разновидность, именуемая естественным соединением. В дальнейшем же под соединением таблиц будем понимать именно этот вид операции.
В этой операции участвуют два отношения. Для того, чтобы операция имела смысл, они должны иметь атрибуты, определенные на общем домене («общие поля»). Для задания соединения необходимо указать эти общие поля. Результатом соединения будет новое отношение, кортежи которого представляют собой конкатенацию (сложение, «сцепку») кортежей исходных таблиц, для которых совпадают значения общего поля.
Рассмотрим два отношения:
A1 | A2 | A2 | B1 | ||
A | AA | ||||
D | RR | ||||
T | GG | ||||
W |
Эти отношения имеют общий атрибут – А2. После соединения получаем:
A1 | A2 | B1 |
A | AA | |
D | AA | |
T | RR |
В дальнейшем операцию соединения двух отношений J, Q и полученное в результате этой операции отношение Y будем обозначать:
Y = J join Q,
предполагая, что общий атрибут ясен из состава атрибутов J и Q. [1]
Объединение (union). В этой операции, как и предыдущей, участвуют два отношения. В результате создается новое отношение, которое представляет собой результат объединения множеств кортежей двух отношений. Иными словами, записи одной таблицы дополняются теми записями другой, которые отсутствуют в первой. Объединение отношений применимо только если оба они имеют одинаковый набор атрибутов (в терминах таблиц – «таблицы имеют одинаковую структуру»). Следует отметить, что из того, что атрибуты имеют одинаковый тип данных и длину вовсе не следует, что они определены на одном домене и являются «общим полем», как в предыдущем случае.
Рассмотрим два отношения.
A1 | B1 | C1 |
A | ||
F | ||
A | ||
D |
и
A1 | B1 | C1 |
A | ||
Q | ||
W | ||
D |
Результат объединения:
A1 | B1 | C1 |
A | ||
F | ||
A | ||
Q | ||
W | ||
D |
Пересечение. Также как и объединение, выполняется над двумя таблицами, имеющими одинаковую структуру. Результат состоит из записей, которые входят в обе таблицы.
Пересечением двух отношений из предыдущего примера будет следующее отношение:
A1 | B1 | C1 |
A | ||
D |
Декомпозиция. Совершенно очевидно, что любую таблицу можно разложить на набор проекций, которые можно попытаться объединить. Однако, для того, чтобы в результате объединения получить исходное отношение, набор проекций не может быть произвольным. Проиллюстрируем сказанное примером, в котором рассмотрим отношение «Успеваемость студентов».
№ зачетки | ФИО | Курс | Оценка |
Петров Ю.В. | математика | ||
Петров Ю.В. | экономика | ||
Сидоров Е.П. | математика | ||
Сидоров Е.П. | экономика |
Один из вариантов разложения этой таблицы на проекции:
№ зачетки | ФИО | Курс |
Петров Ю.В. | Математика | |
Петров Ю.В. | Экономика | |
Сидоров Е.П. | Математика | |
Сидоров Е.П. | Экономика |
Курс | Оценка |
Математика | |
Экономика | |
Математика |
Эти отношения содержат общее поле Курс. Однако, объединение отношений не приведет к исходному.
№ зачетки | ФИО | Курс | Оценка |
Петров Ю.В. | Математика | ||
Петров Ю.В. | Экономика | ||
Петров Ю.В. | Математика | ||
Сидоров Е.П. | Математика | ||
Сидоров Е.П. | Математика | ||
Сидоров Е.П. | Экономика |
Как видим, восстановленная таблица не соответствует исходной. Произошла потеря информации, что для реальных задач является совершенно недопустимым.
В то же время, следующий набор проекций позволит восстановить исходную информацию без потерь.
№ зачетки | ФИО |
Петров Ю.В. | |
Сидоров Е.П. |
№ зачетки | Курс | Оценка |
математика | ||
экономика | ||
математика | ||
экономика |
В этом случае общим атрибутом является «№ зачетки».
Набор произвольного числа проекций, объединение которых приводит к исходному отношению, называют полной декомпозицией этого отношения
Дальнейший материал этого раздела будет в значительной степени посвящен т.наз. реляционной теории нормализации. Основными ее задачами являются:
1. Создание методов анализа, позволяющих определить, образует ли данная совокупность проекций полную декомпозицию отношения.
2. Определение правил выбора, определяющих целесообразность хранения составляющих базу данных отношений в исходной форме либо в виде полной декомпозиции.
Ответ на второй из этих вопросов представляет наибольший интерес с прикладной точки зрения. Собственно говоря, определение оптимального набора отношений (проекций), а также их атрибутов есть главная задача проектирования баз данных.
Дата добавления: 2015-07-19; просмотров: 91 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лекция 2. | | | Аномалии хранения данных. |