
- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Упражнения:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 3 Моделирование данных Модель «сущность-связь»
- •Элементы модели «сущность-связь»
- •Сущность
- •Атрибуты
- •Идентификаторы
- •Три типа бинарных связей
- •Диаграммы «сущность-связь»
- •Изображение атрибутов в диаграммах «сущность-связь»
- •Слабые сущности
- •Подтипы сущностей
- •Пример er-диаграммы
- •Диаграммы «сущность-связь» в стиле uml
- •Сущности и связи в uml
- •Представление слабых сущностей
- •Представление подтипов
- •Конструкции ооп, введенные языком uml
- •Семантическая объектная модель
- •Семантические объекты
- •Определение семантических объектов
- •Атрибуты
- •Кардинальное число атрибута
- •Экземпляры объектов
- •Парные атрибуты
- •Объектные идентификаторы
- •Домены атрибутов
- •Представления семантических объектов
- •Создание семантических объектных моделей данных
- •Пример: база данных администрации нтуу «кпи»
- •Спецификация объектов
- •Типы объектов
- •Простые объекты
- •Составные объекты
- •Гибридные объекты
- •Ассоциативные объекты
- •Объекты вида родитель/подтип
- •Объекты вида архетип/версия
- •Переход от семантической объектной модели к модели «сущность-связь»
- •Вопросы:
- •Упражнения:
- •Тема 4 Нормализация
- •Классы отношений
- •Нормальные формы от первой до пятой
- •Тема 5 Методология проектирования баз данных Введение в методологию проектирования баз данных
- •Методология концептуального проектирования базы данных
- •Методология логического проектирования реляционных баз данных
- •Суть состоит в том, что при устранении избыточности очень важно исследовать значение каждой из связей, существующих между сущностями.
- •Методология физического проектирования базы данных
- •Трехуровневая архитектура ansi-sparc
- •Система управления Базами Данных
- •1. Хранение, извлечение и обновление данных
- •2. Каталог доступный конечным пользователям
- •Поддержка транзакций
- •Сервисы управления параллельностью
- •Сервисы восстановления
- •6. Сервисы контроля доступа к данным
- •Поддержка обмена данными
- •8. Вспомогательные службы
- •Преимущества:
- •Недостатки:
- •Вопросы:
- •Упражнения:
- •История языка sql
- •Особая роль языка sql
- •Используемая терминология
- •Запись операторов sql
- •Манипулирование данными
- •Литералы
- •Простые запросы
- •Выборка строк (конструкция where)
- •Сортировка результатов (конструкция order by)
- •Использование агрегирующих функций языка sql
- •Группирование результатов (конструкция group by)
- •Ограничения на выполнение группирования (конструкция having)
- •Подзапросы
- •Ключевые слова any и all
- •Многотабличные запросы
- •Выполнение соединений
- •Внешние соединения
- •Ключевые слова exists и not exist
- •Комбинирование результирующих таблиц (операции union, intersect и except)
- •Изменение содержимого базы данных
- •Добавление новых данных в таблицу (оператор insert)
- •Модификация данных в базе (оператор update)
- •Удаление данных из базы (оператор delete)
- •Скалярные типы данных языка sql
- •Логические данные (тип boolean)
- •Символьные данные (тип character)
- •Битовые данные (тип bit)
- •Точные числовые данные (тип exact numeric)
- •Округленные числовые данные (тип approximate numeric)
- •Дата и время (тип datetime)
- •Интервальный тип данных interval
- •Скалярные операторы
- •Средства поддержки целостности данных
- •Обязательные данные
- •Ограничения для доменов
- •Целостность сущностей
- •Ссылочная целостность
- •Требования данного предприятия
- •Определение данных
- •Создание баз данных
- •Создание таблиц (оператор create table)
- •Модификация определения таблицы (оператор alter table)
- •Удаление таблиц (оператор drop table)
- •Создание индекса (оператор create index)
- •Удаление индекса (оператор drop index)
- •Представления
- •Создание представлений (оператор create view)
- •Удаление представлений (оператор drop view)
- •Замена представлений
- •Ограничения на использование представлений
- •Обновление данных в представлениях
- •Использование конструкции with check option
- •Преимущества и недостатки представлений
- •Преимущества
- •Недостатки
- •Материализация представлений
- •Использование транзакций
- •Немедленные и отложенные ограничения поддержки целостности данных
- •Управление доступом к данным
- •Идентификаторы пользователей и права владения
- •Привилегии
- •Предоставление привилегий другим пользователям (оператор grant)
- •Отмена предоставленных пользователям привилегий (оператор revoke)
- •Приложение
- •Тема 7.3 Хранимые процедуры и функции. Триггеры.
- •Создание хранимых процедур и функций
- •Простые формы выражений
- •Поддержка транзакций
- •Свойства транзакций
- •Архитектура базы данных
- •Управление параллельным доступом
- •Проблема потерянного обновления
- •Проблема зависимости от незафиксированных результатов (или "грязного" чтения)
- •Проблема анализа несогласованности
- •Упорядочиваемость и восстанавливаемость
- •Конфликтная упорядочиваемость
- •Упорядочиваемость по просмотру
- •Восстанавливаемость
- •Методы управления параллельным доступом
- •Методы блокировки
- •Двухфазная блокировка
- •Управление параллельным выполнением при использовании индексных структур
- •Защелки
- •Взаимоблокировка
- •Тайм-ауты
- •Предотвращение взаимоблокировок
- •Обнаружение взаимоблокировок
- •Частота выполнения операции обнаружения взаимоблокировок
- •Возобновление нормальной работы после обнаружения взаимоблокировки
- •Использование временных отметок
- •Правило записи Томаса
- •Сравнение методов
- •Упорядочение временных отметок в случае многих версий
- •Оптимистические методы упорядочения
- •Степень детализации блокируемых элементов данных
- •Иерархия степеней детализации
- •Блокировка с учетом нескольких степеней детализации
- •Восстановление базы данных
- •Необходимость восстановления
- •Транзакции и восстановление
- •Управление буферами базы данных
- •Функции восстановления
- •Механизм резервного копирования
- •Файл журнала
- •Создание контрольных точек
- •Методы восстановления
- •Метод восстановления с использованием отложенного обновления
- •Метод восстановления с использованием немедленного обновления
- •Метод теневого страничного обмена
- •Улучшенные модели транзакций
- •Модель вложенных транзакций
- •Эмуляция механизма вложенных транзакций с помощью точек сохранения
- •Хроники
- •Модель многоуровневых транзакций
- •Динамическая реструктуризация
- •Модели рабочих потоков
- •Общий обзор методов обработки запросов
- •Основные этапы обработки запросов
- •Динамическая и статическая оптимизация запросов
- •Декомпозиция запросов
- •Нормализация
- •Семантический анализ
- •Упрощение
- •Реструктуризация запросов
- •Эвристический подход к оптимизации запросов
- •Правила преобразования операций реляционной алгебры
- •Оценка стоимости операций реляционной алгебры
- •Статистические показатели базы данных
- •Вариант 6. Поиск по равенству значению кластеризующего (вторичного) индекса
- •Вариант 7. Поиск по равенству значению некластеризующего (вторичного) индекса
- •Составные предикаты
- •Конъюнктивная выборка без дизъюнкций
- •Выборки с дизъюнкциями
- •Конвейерная обработка данных
- •Тема 10
- •Основные типы угроз
- •Контрмеры – компьютерные средства контроля
- •Авторизация пользователей
- •Привилегии
- •Права владения и привилегии
- •Представления (подсхемы)
- •Резервное копирование и восстановление
- •Поддержка целостности
- •Шифрование
- •Raid (массив независимых дисковых накопителей с избыточностью)
- •Средства защиты субд Microsoft Access
- •Установка пароля
- •Защита на уровне пользователя
Упражнения:
1.1. Предположим, что у вас есть коллекция записей классической музыки,
содержащаяся на компакт-дисках, мини-дисках, долгоиграющих
пластинках и аудиокассетах, и вы хотите создать базу данных, которая
позволит находить записи определенного композитора (например,
Сибелиуса), дирижера (например, Симона Ратла), солиста (например,
Артура Грюмикса), произведения (например, Пятой симфонии Бетховена),
оркестра (например, Нью-Йорского филармонического), вида произведения
(например, концерта для скрипки) или оркестровой группы (например,
квартета Кронус). Начертите диаграмму «сущность-связь» для этой базы
данных по образцу, представленному на рис. 1.1.
1.2. Создайте реляционную базу данных на любую выбранную вами тему,
кроме “Учебного процесса”. С помощью этой базы проанализируйте
изученные материал и определите реляционные ключи.
ТЕМА 2
Реляционная модель.
Реляционная алгебра. Реляционное исчисление.
Реляционная модель
На сегодняшний день реляционные СУБД стали доминирующим типом программного обеспечения для обработки данных. Ежегодный объем продаж в этом секторе рынка оценивается в 8-10 миллиардов долларов (или 2.5 миллиардов долларов вместе с инструментами разработки), причем ежегодный прирост этого объема составляет 25%. Данное программное обеспечение представляет собой второе поколение СУБД, основанное на использовании реляционной модели данных, предложенной Э.Ф.Коддом в 1970 году. В реляционной модели все данные логически структурированы внутри отношений (таблиц). Каждое отношение имеет имя и состоит из поименованных атрибутов (столбцов) данных. Каждый кортеж (строка) данных содержит по одному значению каждого из атрибутов. Большое преимущество реляционной модели заключается именно в этой простоте логической структуры. Хотя, конечно же, за этой простотой скрывается серьезный теоретический фундамент, которого не было у первого поколения СУБД (т.е. у сетевых и иерархических СУБД).
Представление схем в реляционной базе данных
Как было определено в теме 1 реляционная схема – это имя отношения, за которым следует множество пар атрибутов и доменов, а реляционная база данных – это набор нормализованных отношений.
Представление – это динамический результат одной или нескольких реляционных операций над базовыми отношениями с целью создания некоторого иного отношения.
В связи с наличием указанных в теме 1 функциональных возможностей, СУБД становится чрезвычайно полезным инструментом. Но поскольку для конечных пользователей не имеет значения, насколько проста или сложна внутренняя организация системы, можно услышать возражения, что СУБД затрудняет работу, предоставляя пользователям гораздо большее количество данных, чем им действительно требуется. Как показано на рисунке, в подходе, основанном на использовании баз данных, необходимые сотрудникам деканата подробные сведения о студентах (ФИО, год рождения, адрес и т.д.).
Для решения проблемы избыточности данных, представляемых пользователям при работе с ними, в СУБД предлагается другой механизм создания представлений (view), который позволяет любому пользователю иметь свой собственный взгляд на базу данных.
Язык DDL включает средства определения представлений, каждое из которых является некоторым подмножеством базы данных.
Например, можно организовать представление, в котором сотрудникам деканата будут доступны только те данные, которые необходимы для ведения данных об успеваемости студентов.
Рис. 2.1. Пример организации доступа к информации с помощью СУБД.
Помимо упрощения работы за счет предоставления пользователям только действительно нужных им данных, представления обладают некоторыми другими достоинствами:
Обеспечивают дополнительный уровень безопасности. Представления могут создаваться с целью исключения тех данных, которые не должны видеть некоторые пользователи. Например, можно создать некоторое представление, которое позволит ректорату просматривать все данные о преподавателях кафедры, включая сведения об их зарплате. В то же время для организации доступа к данным других пользователей, например студентов, можно создать еще одно представление, из которого все сведения о зарплате будут исключены.
Предоставляют механизм настройки внешнего интерфейса базы данных. Например, если речь идет о квалификации преподавателей, ректорат может работать с полем «Ученая степень преподавателя кафедры», используя для него более короткое и простое имя – «Ученая степень», вся другая информация о преподавателе будет скрыта.
Позволяют сохранять внешний интерфейс базы данных непротиворечивым и неизменным даже при внесении изменений в ее структуру. Например, при добавлении или удалении полей, изменении связей, разбиении файлов, их реорганизации или переименовании. Если в файл добавляються или из него удаляются поля, неиспользуемые в некотором представлении, то все эти изменения на данном представлении никак не отразятся.
Представление обеспечивает полную независимость программ от реальной структуры данных, что позволяет устранить важнейший недостаток файловых систем.
Реляционная целостность
Модель данных имеет две части: управляющую часть, которая определяет типы допустимых операций с данными, и набор ограничений целостности, которые гарантируют корректность данных.
Эти две части модели данных позволяют устанавливать реляционные ограничения целостности, а также выполнять – реляционные операции управления данными.
Существует три вида целомтности данных:
целостность сущностей;
ссылочная целостность;
корпоративная целостность (с точки зрения смысла предметной области)
Поскольку каждый атрибут связан с некоторым доменом, для множества допустимых значений каждого атрибута отношения определяются так называемые ограничения домена.
Два важных правила целостности (два правила реляционной модели), которые, по сути, являются ограничениями для всех допустимых состояний базы данных:
целостность сущностей;
ссылочная целостность.
Определитель NULL
Определитель NULL вводится в связи с поддержанием правил целостности и указывает, что значение атрибута в настоящий момент неизвестно или неприемлемо для этого кортежа.
Определитель NULL следует воспринимать как логическую величину "неизвестно". Другими словами, либо это значение не входит в область определения некоторого кортежа, либо никакое значение еще не задано. Ключевое слово NULL представляет собой способ обработки неполных или необычных данных.
Однако определитель NULL не следует понимать как нулевое численное значение или заполненную пробелами текстовую строку.
Нули и пробелы представляют собой некоторые значения, тогда как ключевое слово NULL призвано обозначать отсутствие какого-либо значения.
Применение определителя NULL может вызвать проблемы на этапе реализации. Трудности возникают из-за того, что реляционная модель основана на исчислении предикатов первого порядка, которое обладает двузначной или булевой логикой, т.е. допустимыми являются только два значения: истина и ложь.
Применение определителя NULL означает, что придется вести работу с логикой более высокого порядка, например трехзначной или даже четырехзначной (Codd, 1986, 1987, 1990).
Использование понятия NULL в реляционной модели является спорным вопросом. Кодд (1990) рассматривает понятие NULL как составную часть этой модели, а другие специалисты считают этот подход неправильным, полагая что проблема отсутствующей информации еще не до конца понята, удовлетворительное ее решение не найдено, а потому включение определителя NULL в реляционную модель является преждевременным (Date, 1995). Следует отметить, что не во всех реляционных системах поддерживается работа с определителем NULL.
Целостность сущностей
Первое ограничение целостности касается первичных ключей базовых отношений.
Базовое отношение определяется как отношение, которое соответствует некоторой сущности в концептуальной схеме.
Целостность сущностей означает, что в базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых определителем NULL.
По определению, первичный ключ – это минимальный идентификатор, который используется для уникальной идентификации кортежей. Это значит, что никакое подмножество первичного ключа не может быть достаточным для уникальной идентификации кортежей.
Если допустить присутствие определителя NULL в любой части первичного ключа, это равноценно утверждению, что не все его атрибуты необходимы для уникальной идентификации кортежей, что противоречит определению первичного ключа. Например, рассмотрим отношения Студент и Преподаватель.
Студент
Номер зачетки |
Номер группы |
Фамилия |
Средний балл |
ТЗ3106 |
ТЗ31 |
Иванов |
5 |
ТЗ3217 |
ТЗ32 |
Петров |
4 |
ТМ3115 |
ТМ31 |
Пушников |
3,5 |
ТМ3220 |
ТМ32 |
Сидоров |
4,5 |
Преподаватель
Табельный номер |
Фамилия |
Раб. телефон |
Факс |
4587 |
Бондаренко |
456-37-85 |
456-86-27 |
2136 |
Воронин |
474-96-35 |
474-85-12 |
5496 |
Анисимова |
468-05-38 |
468-28-01 |
Рис. 2.2. Примеры отношений Студент и Преподаватель.
Поскольку Номер зачетки является первичным ключом отношения Студент, то нельзя допустить вставку в отношение Студент кортежа с определителем NULL в атрибуте Номер зачетки.
Если рассмотреть это правило более внимательно, то можно заметить несколько его необычных свойств.
Во-первых, почему оно применяется только к первичным ключам, но не используется в отношении альтернативных ключей?
Во-вторых, почему оно ограничивается только базовыми отношениями?
Например, используя данные отношения Преподаватель (рис. 2.2), рассмотрим выполнение следующего запроса: "Создать список табельных номеров всех преподавателей". Результатом этого запроса является унарное отношение из единственного атрибута Табельный номер. По определению, этот атрибут должен быть первичным ключом. Предположим, что среди его значений содержится определитель NULL. Поскольку это отношение не является базовым, реляционная модель допускает присутствие определителя NULL в его первичном ключе.
Недавно было предпринято несколько попыток переопределения этого правила (Соdd, 1988; Date, 1990).
Ссылочная целостность
Второе ограничение целостности касается внешних ключей.
Если в отношении существует внешний ключ, то значение внешнего ключа должно либо соответствовать значению потенциального ключа некоторого кортежа в его базовом отношении либо задаваться определителем NULL.
Рассмотрим отношения Студент и Предмет.
Студент
Номер зачетки |
Номер группы |
Фамилия |
Код предмета |
ТЗ3106 |
ТЗ31 |
Иванов |
101 |
ТЗ3217 |
ТЗ32 |
Петров |
102 |
ТМ3115 |
ТМ31 |
Пушников |
101 |
ТМ3220 |
ТМ32 |
Сидоров |
103 |
Предмет
Код предмета |
Название Предмета |
Лекционные часы |
Практические часы |
101 |
Физика |
18 |
26 |
102 |
Математика |
25 |
30 |
103 |
Химия |
15 |
20 |
Рис. 2.3. Пример отношений Студент и Предмет.
Атрибут Код предмета в отношении Студент является внешним ключом, который ссылается на атрибут Код предмета базового отношения Предмет. Система должна предотвращать любые попытки создать запись с информацией о предмете с кодом '104' в отношении Студент до тех пор, пока в отношении Предмет не будет создана запись, содержащая сведения о предмете с кодом '104'. Однако считается допустимым создание записи с информацией о новом предмете с указанием определителя NULL вместо кода предмета, который изучается студентом. Такая ситуация может иметь место в том случае, когда введен новый предмет для изучения, но еще информация о данном предмете не определена окончательно.
Корпоративные ограничения целостности
Корпоративные ограничения целостности данных – это дополнительные правила поддержки целостности, определяемые пользователями или администраторами базы данных.
Пользователи сами могут указывать дополнительные ограничения, которым должны удовлетворять данные. Например, если преподаватель может преподавать только на одной кафедре, то пользователь может указать это правило, а СУБД следить за его выполнением. В этом случае в отношении Преподаватель необходимо каждого преподавателя относить только к одной кафедре.
К сожалению, уровень поддержки реляционной целостности в разных системах существенно варьирует.