- •Лекция 1. Данные.
- •Понятие Данных, Типы Данных.
- •Модели данных.
- •1.2. Модели данных. Понятие и классификация.
- •Лекция 2. Файлы.
- •2.3. Файлы.
- •Режим многопользовательского доступа
- •2.4. Файловые системы.
- •Лекция 3. Реляционная модель. Часть 1.
- •3.2. Типы данных.
- •3.3. Домены.
- •3.4. Отношения, атрибуты, кортежи отношения.
- •Лекция 4. Реляционная модель. Часть 2.
- •4.2. Свойства отношений.
- •4.3. Первая нормальная форма.
- •Лекция 5. Реляционная модель. Часть 3.
- •5.2. Манипуляционная часть реляционной модели.
- •5.3. Выводы.
- •Лекция 6. Реляционная алгебра. Часть 1.
- •Обзор реляционной алгебры.
- •Теоретико-множественные операторы.
- •6.1. Обзор реляционной алгебры
- •6.2. Теоретико-множественные операторы
- •6.2.1. Объединение
- •6.2.2. Пересечение
- •6.2.3. Вычитание
- •6.2.4. Декартово произведение
- •Лекция 7. Реляционная алгебра. Часть 2.
- •7.1.2. Проекция
- •7.1.3. Соединение
- •7.1.3.1.Общая операция соединения
- •7.1.3.2. Тэта-соединение
- •7.1.3.3. Экви-соединение
- •7.1.3.4. Естественное соединение
- •7.1.4. Деление
- •7.2. Реляционные операторы
- •7.2.1. Зависимые реляционные операторы
- •7.2.2. Примитивные реляционные операторы
- •7.3. Выводы
- •Лекция 8. Реляционное исчисление.
- •Лекция 9. Язык sql. Часть 1.
- •9.2. Стуктура sql
- •9.2.1. Язык определения данных (ddl)
- •9.2.2. Язык манипулирования данными (dml)
- •9.2.3. Язык запросов (dql)
- •9.2.4. Средства управления транзакциями
- •9.2.5. Средства администрирования данных
- •9.2.6. Программный sql
- •9.3. Типы данных в sql
- •9.4. Агрегатные функции
- •10.3. Вложенные запросы
- •Лекция 11. Модель бинарных ассоциаций.
- •11.2. Бинарная ассоциация
- •11.2.1. Ненаправленная бинарная ассоциация
- •11.2.2. Направленная бинарная ассоциация
- •11.3. Исключающая ассоциация
- •Лекция 12. Системы управления базами данных.
- •12.1.1. Непосредственное управление данными во внешней памяти
- •12.1.2. Управление буферами оперативной памяти
- •12.1.3. Управление транзакциями
- •12.1.4. Журнализация
- •12.1.5. Поддержка языков бд
- •12.2. Типовая организация современной субд
- •12.3. System r – пример субд
- •Лекция 13. Архитектура «Клиент-Сервер».
- •13.2. Клиенты и серверы локальных сетей
- •13.3. Системная архитектура "клиент-сервер"
- •13.4. Серверы баз данных
- •13.4.1. Принципы взаимодействия между клиентскими и серверными частями
- •13.4.2. Преимущества протоколов удаленного вызова процедур
- •13.4.3. Типичное разделение функций между клиентами и серверами
- •13.4.4. Требования к аппаратным возможностям и базовому программному обеспечению клиентов и серверов
- •Лекция 14. Некоторые другие бд.
- •14.1.2. Манипулирование данными
- •14.1.3. Ограничения целостности
- •14.2. Распределённые бд
- •14.2.1. Разновидности распределённых систем
- •14.2.3. Интегрированные или федеративные системы и мультибазы данных
- •14.3. Системы баз данных, основанные на правилах
- •14.3.1. Экстенсиональная и интенсиональная части базы данных
- •14.3.2. Активные базы данных
- •15.1. Связь объектно-ориентированных субд с общими понятиями объектно-ориентированного подхода
- •15.2. Объектно-ориентированные модели данных
- •15.3. Пример ообд - субд о2
- •Лекция 16. Объектно-ориентированные субд. Часть 2.
- •16.1.2. Языки программирования ообд как объектно-ориентированные языки с поддержкой стабильных (persistent) объектов
- •16.1.3. Примеры языков программирования ообд
- •16.2. Языки запросов объектно-ориентированных баз данных
- •16.2.1. Явная навигация как следствие преодоления потери соответствия
- •16.2.2. Ненавигационные языки запросов
- •Лекция 17. Транзакции и целостность бд.
- •17.1. Понятие транзакции.
- •17.2. Ограничения целостности.
- •17.3. Классификация ограничений целостности.
- •17.3.1. Классификация ограничений целостности по способам реализации
- •17.3.2. Классификация ограничений целостности по времени проверки.
- •17.3.3. Классификация ограничений целостности по области действия.
- •17.3.3.1. Ограничения домена.
- •17.3.3.2. Ограничения атрибута.
- •17.3.3.3. Ограничения кортежа.
- •17.3.3.4. Ограничения отношения.
- •17.3.3.5. Ограничения базы данных.
- •17.4. Реализация декларативных ограничений целостности средствами sql.
- •17.4.1. Общие принципы реализации ограничений средствами sql.
- •17.4.3. Примеры ограничений.
16.2.2. Ненавигационные языки запросов
Беери отмечает существование трех подходов:
Первый подход - языки, являющиеся объектно-ориентированными расширениями языков запросов реляционных систем. Наиболее распространены языки с синтаксисом, близким к известному языку SQL.
Второй подход основывается на построении полного логического объектно-ориентированного исчисления. По поводу построения такого исчисления имеются теоретические работы, но законченный и практически реализованный язык запросов мне неизвестен. Видимо, к этому же направлению строго теоретически обоснованных языков запросов можно отнести и работы, основанные на алгебраической теории категорий.
Наконец, третий подход основывается на применении дедуктивного подхода. В основном это отражает стремление разработчиков к сближению направлений дедуктивных и объектно-ориентированных БД.
Независимо от применяемого для разработки языка запросов подхода перед разработчиками встает одна концептуальная проблема, решение которой не укладывается в традиционное русло объектно-ориентированного подхода. Понятно, что основой для формулирования запроса должен служить класс, представляющий в ООБД множество однотипных объектов. Но что может представлять собой результат запроса? Набор основных понятий объектно-ориентированного подхода не содержит подходящего к данному случаю понятия. Обычно из положения выходят, расширяя базовый набор концепций множества объектов и полагая, что результатом запроса является некоторое подмножество объектов-экземпляров класса. Это довольно ограничительный подход, поскольку автоматически исключает возможность наличия в языке запросов средств, аналогичных реляционному оператору соединения. Кратко рассмотрим особенности нескольких конкретных декларативных языков запросов к ООБД.
В языке запросов объектно-ориентированной СУБД ORION полностью поддерживается принцип инкапсуляции объектов. В реализованном варианте языка запросы могут основываться только на одном классе (предлагался подход к определению запроса на нескольких классах в стиле расширения семантики реляционного оператора соединения). Синтаксис языка ориентирован на SQL. Очень развит набор допустимых предикатов селекции. В частности, для атрибута, доменом которого является суперкласс, можно указать имя интересующего пользователя подкласса.
Язык запросов системы Iris находится в значительной степени под влиянием реляционной парадигмы. Даже название этого языка OSQL отражает его тесную связь с реляционным языком SQL. По сути дела, OSQL - это реляционный язык, рассчитанный на работу с ненормализованными отношениями. Естественно, при таком подходе в OSQL нарушается инкапсуляция объектов.
Особый интерес представляет декларативный язык запросов системы O2 RELOOP. В общих словах, это декларативный язык запросов с SQL-ориентированным синтаксисом, основанный на специально разработанной для модели O2 алгебре объектов и значений. Особенно впечатляющим качеством языка RELOOP является естественность его построения в общем контексте модели O2. Запрос задается всегда на значении-множестве или списке. Если мы вспомним, что долговременному классу в O2 соответствует одноименное значение-множество, то тем самым можно определить запрос на любом хранимом классе. Результатом запроса может являться объект, значение-множество или значение-список. При этом элементами значений-множеств могут являться объекты (простая выборка), либо значения-кортежи (с элементами-объектами разных классов, например). В совокупности эти особенности языка позволяют формулировать запросы над несколькими классами (специфическое соединение, порождающее не новые объекты, а кортежи из существующих объектов), а также употреблять вложенные подзапросы.