Автор работы: Пользователь скрыл имя, 13 Ноября 2011 в 11:59, курс лекций
Курс лекций по дисциплине «Информационные системы» содержит в себе теоретические основы: множество понятий и определений, которые помогут вам в полной мере овладеть данным курсом.
Другие проблемы связаны с операцией взятия прямого произведения двух отношений. В теории множеств прямое произведение может быть получено для любых двух множеств, и элементами результирующего множества являются пары, составленные из элементов первого и второго множеств. Поскольку отношения являются множествами, то и для любых двух отношений возможно получение прямого произведения. Но результат не будет отношением! Элементами результата будут являться не кортежи, а пары кортежей.
Поэтому в реляционной алгебре используется специализированная форма операции взятия прямого произведения - расширенное прямое произведение отношений. При взятии расширенного прямого произведения двух отношений элементом результирующего отношения является кортеж, являющийся конкатенацией (или слиянием) одного кортежа первого отношения и одного кортежа второго отношения.
Но теперь возникает второй вопрос - как получить корректно сформированный заголовок отношения-результата? Очевидно, что проблемой может быть именование атрибутов результирующего отношения, если отношения-операнды обладают одноименными атрибутами.
Эти соображения приводят к появлению понятия совместимости по взятию расширенного прямого произведения. Два отношения совместимы по взятию прямого произведения в том и только в том случае, если множества имен атрибутов этих отношений не пересекаются. Любые два отношения могут быть сделаны совместимыми по взятию прямого произведения путем применения операции переименования к одному из этих отношений.
Следует заметить, что операция взятия прямого произведения не является слишком осмысленной на практике. Во-первых, мощность ее результата очень велика даже при допустимых мощностях операндов, а во-вторых, результат операции не более информативен, чем взятые в совокупности операнды. Как мы увидим немного ниже, основной смысл включения операции расширенного прямого произведения в состав реляционной алгебры состоит в том, что на ее основе определяется действительно полезная операция соединения.
По поводу теоретико-множественных операций реляционной алгебры следует еще заметить, что все четыре операции являются ассоциативными. Т. е., если обозначить через OP любую из четырех операций, то (A OP B) OP C = A (B OP C), и следовательно, без введения двусмысленности можно писать A OP B OP C (A, B и C - отношения, обладающие свойствами, требуемыми для корректного выполнения соответствующей операции). Все операции, кроме взятия разности, являются коммутативными, т.е. A OP B = B OP A.
В этом подразделе мы несколько подробнее рассмотрим специальные реляционные операции реляционной алгебры: ограничение, проекция, соединение и деление.
Операция ограничения
Операция ограничения требует наличия двух операндов: ограничиваемого отношения и простого условия ограничения. Простое условие ограничения может иметь либо вид (a comp-op b), где а и b - имена атрибутов ограничиваемого отношения, для которых осмысленна операция сравнения comp-op, либо вид (a comp-op const), где a - имя атрибута ограничиваемого отношения, а const - литерально заданная константа.
На интуитивном уровне операцию ограничения лучше всего представлять как взятие некоторой "горизонтальной" вырезки из отношения-операнда.
Операция взятия проекции также требует наличия двух операндов - проецируемого отношения A и списка имен атрибутов, входящих в заголовок отношения A.
Результатом проекции отношения A по списку атрибутов a1, a2, ..., an является отношение, с заголовком, определяемым множеством атрибутов a1, a2, ..., an, и с телом, состоящим из кортежей вида <a1:v1, a2:v2, ..., an:vn> таких, что в отношении A имеется кортеж, атрибут a1 которого имеет значение v1, атрибут a2 имеет значение v2, ..., атрибут an имеет значение vn. Тем самым, при выполнении операции проекции выделяется "вертикальная" вырезка отношения-операнда с естественным уничтожением потенциально возникающих кортежей-дубликатов.
Общая операция соединения (называемая также соединением по условию) требует наличия двух операндов - соединяемых отношений и третьего операнда - простого условия. Пусть соединяются отношения A и B. Как и в случае операции ограничения, условие соединения comp имеет вид либо (a comp-op b), либо (a comp-op const), где a и b - имена атрибутов отношений A и B, const - литерально заданная константа, а comp-op - допустимая в данном контексте операция сравнения.
Тогда
по определению результатом
Если
внимательно осмыслить это
Хотя операция соединение в нашей интерпретации не является примитивной (поскольку она определяется с использованием прямого произведения и проекции), в силу особой практической важности она включается в базовый набор операций реляционной алгебры.
Имеется важный частный случай соединения - эквисоединение и простое, но важное расширение операции эквисоединения - естественное соединение. Операция соединения называется операцией эквисоединения, если условие соединения имеет вид (a = b), где a и b - атрибуты разных операндов соединения. Этот случай важен потому, что (a) он часто встречается на практике, и (b) для него существуют эффективные алгоритмы реализации.
Операция естественного соединения применяется к паре отношений A и B, обладающих (возможно составным) общим атрибутом c (т.е. атрибутом с одним и тем же именем и определенным на одном и том же домене). Пусть ab обозначает объединение заголовков отношений A и B. Тогда естественное соединение A и B - это спроектированный на ab результат эквисоединения A и B по A/c и BBC. Если вспомнить введенное нами в конце предыдущей главы определение внешнего ключа отношения, то должно стать понятно, что основной смысл операции естественного соединения - возможность восстановления сложной сущности, декомпозированной по причине требования первой нормальной формы. Операция естественного соединения не включается прямо в состав набора операций реляционной алгебры, но она имеет очень важное практическое значение.
Эта операция наименее очевидна из всех операций реляционной алгебры и поэтому нуждается в более подробном объяснении. Пусть заданы два отношения - A с заголовком {a1, a2, ..., an, b1, b2, ..., bm} и B с заголовком {b1, b2, ..., bm}. Будем считать, что атрибут bi отношения A и атрибут bi отношения B не только обладают одним и тем же именем, но и определены на одном и том же домене. Назовем множество атрибутов {aj} составным атрибутом a, а множество атрибутов {bj} - составным атрибутом b. После этого будем говорить о реляционном делении бинарного отношения A(a,b) на унарное отношение B(b).
Результатом деления A на B является унарное отношение C(a), состоящее из кортежей v таких, что в отношении A имеются кортежи <v, w> такие, что множество значений {w} включает множество значений атрибута b в отношении B.
Предположим,
что в базе данных сотрудников
поддерживаются два отношения: СОТРУДНИКИ
( ИМЯ, ОТД_НОМЕР ) и ИМЕНА ( ИМЯ ), причем
унарное отношение ИМЕНА
Предположим, что мы работаем с базой данных, обладающей схемой СОТРУДНИКИ (СОТР_НОМ, СОТР_ИМЯ, СОТР_ЗАРП, ОТД_НОМ) и ОТДЕЛЫ (ОТД_НОМ, ОТД_КОЛ, ОТД_НАЧ), и хотим узнать имена и номера сотрудников, являющихся начальниками отделов с количеством сотрудников больше 50.
Если бы для формулировки такого запроса использовалась реляционная алгебра, то мы получили бы алгебраическое выражение, которое читалось бы, например, следующим образом:
Мы четко
сформулировали последовательность шагов
выполнения запроса, каждый из которых
соответствует одной
Во второй
формулировке мы указали лишь характеристики
результирующего отношения, но ничего
не сказали о способе его
Направление
объектно-ориентированных баз данных
(ООБД) возникло сравнительно давно. Публикации
появлялись уже в середине 1980-х гг. Однако
наиболее активно это направление развивается
в последние годы. С каждым годом увеличивается
число публикаций и реализованных коммерческих
и экспериментальных систем.
Возникновение направления ООБД определяется
потребностями практики: необходимостью
разработки сложных
информационных прикладных
систем, для которых
технология предшествующих
систем БД не была вполне
удовлетворительной.
Конечно, ООБД возникли не на пустом
месте. Соответствующий базис обеспечивают
как предыдущие работы в области БД, так
и давно развивающиеся направления языков
программирования с абстрактными типами
данных и объектно-ориентированных языков
программирования.
Что касается связи с предыдущими работами
в области БД, то наиболее сильное влияние
на работы в области ООБД оказывают проработки
реляционных СУБД и следующее хронологически
за ними семейство БД, в которых поддерживается
управление сложными объектами. Кроме
того, исключительное
влияние на идеи и концепции
ООБД и всего объектно-
ориентированного подхода
оказал подход к семантическому
моделированию
данных. (Мы помним, что в реляционной
модели семантика отсутствует). Достаточное
влияние оказывают также развивающиеся
параллельно с ООБД направления дедуктивных
и активных БД.
Среди языков и систем программирования
наибольшее первичное влияние на ООБД
оказал Smalltalk. Этот язык сам по
себе не является полностью первопроходцем,
хотя в нем была введена новая терминология,
являющаяся теперь наиболее распространенной
в объектно-ориентированном программировании.
На самом деле, Smalltalk основан на ряде ранее
выдвинутых концепций.
Большое
число работ не означает, что все
проблемы ООБД полностью решены. Как
отмечается в Манифесте группы ведущих
ученых, занимающихся ООБД, современная
ситуация с ООБД напоминает ситуацию с
реляционными системами середины 1970-х
гг. При наличии большого количества экспериментальных
проектов (и даже коммерческих систем)
отсутствует общепринятая
объектно-ориентированная
модель данных, и не потому, что нет ни
одной разработанной полной модели, а
по причине отсутствия общего согласия
о принятии какой-либо модели. Имеются
и более конкретные проблемы, связанные
с разработкой декларативных языков запросов,
выполнением и оптимизацией запросов,
формулированием и поддержанием ограничений
целостности, синхронизацией доступа
и управлением транзакциями и т.д.
Основная практическая
функция ООБД связана
с потребностью в некоторой
интегрированной среде
построения сложных
информационных систем.
В этой среде должны
отсутствовать противоречия
между структурной и
поведенческой частями
проекта и должно поддерживаться
эффективное управление
сложными структурами
данных во внешней памяти.
С этой точки зрения
языковая среда ООБД -
это объектно-ориентированная
система программирования, естественно
включающая средства работы с долговременными
объектами. “Естественность” включения
средств работы с БД в язык программирования
означает, что работа с долговременными
(хранимыми во внешней БД) объектами должна
происходить на основе тех же синтаксических
конструкций (и с той же семантикой), что
и работа со временными, существующими
только во время работы программы объектами.
Эта сторона ООБД наиболее близка родственному
направлению языков программирования
БД. Языки программирования
ООБД и БД во многих
своих чертах различаются
только терминологически;
существенным отличием
является лишь поддержание
в языках первого класса
подхода к наследованию
классов. Кроме того, языки второго класса,
как правило, более развиты как в отношении
системы типов, так и в отношении управляющих
конструкций.
Что же касается связи ООСУБД с реляционными
системами, то реляционные
СУБД являются основным
инструментом при проведении
исследовательских
работ и прототипировании
объектно-ориентированных
СУБД.
В общей классической постановке объектно-ориентированный подход базируется на концепциях: