- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Упражнения:
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 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
- •Установка пароля
- •Защита на уровне пользователя
Модели данных
Модель данных – это интегрированный набор понятий для описания данных, связей между ними и ограничений, накладываемых на данные в некоторой организации.
Модель является представлением "реального мира" объектов и событий, а также существующих между ними связей. Это некоторая абстракция, в которой акцент делается на самых важных и неотъемлемых аспектах деятельности организации, а все второстепенные свойства игнорируются. Модель должна отражать основные концепции представленные в таком виде, который позволит проектировщикам и пользователям базы данных обмениваться конкретными и недвусмысленными мнениями о своем понимании роли тех или иных данных в этой организации.
Модель данных рассматривается как сочетание трех компонентов:
Структурная часть – набор правил, по которым может быть построена база данных.
Управляющая часть, определяющая типы допустимых операций с данными (сюда относятся операции обновления и извлечения данных, а также операции изменения структуры базы данных).
Набор ограничений поддержки целостности данных (необязательно), гарантирующих корректность используемых данных.
Цель построения модели данных заключается в представлении данных в понятном виде. Если такое представление возможно, то модель данных можно будет легко применить при проектировании базы данных.
Все модели данных подразделяются на три категории:
объектные (object-based) модели данных;
модели данных на основе записей (record-based);
физические модели данных.
Объектные модели данных
При построении объектных моделей данных используются, изученные выше, понятия сущность, атрибуты и связи.
Наиболее общие типы объектных моделей данных:
Модель типа “сущность-связь” или ER-модель (Entity-Relationship model).
Семантическая модель.
Функциональная модель.
Объектно-ориентированная модель.
В настоящее время ER-модель стала одним из основных методов концептуального проектирования баз данных.
Объектно-ориентированная модель расширяет определение сущности с целью включения в него не только атрибутов, которые описывают состояние объекта, но и действий, которые с ним связаны, т.е. его поведение.
В таком случае говорят, что объект инкапсулирует состояние и поведение.
Модели данных на основе записей
В модели на основе записей база данных состоит из нескольких записей фиксированного формата, которые могут иметь разные типы.
Каждый тип записи определяет фиксированное количество полей, каждое из которых имеет фиксированную длину.
Существует три основных типа логических моделей данных на основе записей:
реляционная модель данных (relational data model);
сетевая модель данных (network data model);
иерархическая модель данных (hierarchical data model).
Иерархическая и сетевая модели данных были созданы почти на десять лет раньше реляционной модели данных, а потому их связь с концепциями традиционной обработки файлов более очевидна.
Реляционная модель данных
Краткий обзор истории реляционной модели
Реляционная модель впервые была предложена Э.Ф.Коддом в 1970 году в его основополагающей статье "Реляционная модель данных для больших совместно используемых банков данных". В настоящее время публикацию этой статьи принято считать поворотным пунктом в истории развития систем баз данных, хотя следует заметить, что еще раньше была предложена модель, основанная на множествах (Chils, 1968). Цели создания реляционной модели формулировались следующим образом:
Обеспечение более высокой степени независимости от данных. Прикладные программы не должны зависеть от изменений внутреннего представления данных, в частности от изменений организации файлов, переупорядочивания записей и путей доступа.
Создание прочного фундамента для решения семантических вопросов, а также проблем непротиворечивости и избыточности данных. В частности, в статье Кодда вводится понятие нормализованных отношений, т.е. отношений без повторяющихся групп.
Расширение языков управления данными за счет включения операций над множествами.
Хотя интерес к реляционной модели обусловлен несколькими разными причинами, все же наиболее значительные исследования были проведены в рамках трех проектов с очень разной судьбой. Первый из них разрабатывался в конце 70-х годов в исследовательской лаборатории корпорации IBM в городе Сан-Хосе, штат Калифорния, под руководством Астрахана, результатом которого стало создание системы под названием "System R", являвшейся прототипом истинной реляционной СУБД. Этот проект был задуман с целью получить реальные доказательства практичности использования реляционной модели посредством реализации предусматриваемых ею структур данных и операций. Этот проект также зарекомендовал себя как важнейший источник информации о таких проблемах реализации, как управление параллельностью, оптимизация запросов, управление транзакциями, обеспечение безопасности и целостности данных, технология восстановления, учет человеческого фактора и разработка пользовательского интерфейса. Выполнение проекта стимулировало публикацию многих научно-исследовательских статей и создание других прототипов реляционных СУБД. В частности, работа над проектом System R дала толчок проведению таких важнейших разработок, как:
создание языка структурированных запросов SQL (это название произносят либо по буквам "S-Q-L", либо (иногда) с помощью мнемонического имени "See-Quel", который с тех пор приобрел статус формального стандарта ISO (International Organization for Standardization) и в настоящее время является фактическим отраслевым стандартом языка реляционных СУБД;
создание различных коммерческих реляционных СУБД, которые впервые появились на рынке в начале 80-х годов, таких как DВ2 и SQL/DS корпорации IBM, а также ORACLE корпорации ORACLE Corporation.
Вторым проектом, который сыграл заметную роль в разработке реляционной модели данных, был проект INGRES (Interactive Graphics Retrieval System), работа над которым проводилась в Калифорнийском университете (город Беркли) почти в то же самое время, что и над проектом System R. Проект INGRES включал разработку прототипа РСУБД с концентрацией основного внимания на тех же общих целях, что и проект System R. Эти исследования привели к появлению академической версии INGRES, которая внесла существенный вклад в общее признание реляционной модели данных. Позже от данного проекта отпочковались коммерческие продукты INGRES фирмы Relational Technology Inc. (теперь СА-OpenIgress фирмы Computers Associates) и Intelligent Database Machine фирмы Britton Lee Inc.
Третьим проектом была система Peterlee Relational Test Vehicle научного центра корпорации IВМ, расположенного в городе Потерли, Великобритания. Этот проект был более теоретическим, чем проекты System R и INGRES. Его результаты имели очень большое и даже принципиальное значение, особенно в таких областях, как обработка запросов и оптимизация, а также функциональные расширения системы.
Коммерческие системы на основе реляционной модели данных начали появляться в конце 70-х - начале 80-х годов. В настоящее время существует несколько сотен типов различных реляционных СУБД как для мейнфреймов, так и для микрокомпьютеров, хотя многие из них не полностью удовлетворяют точному определению реляционной модели данных. Примерами реляционных СУБД для микрокомпьютеров являются СУБД Access и FохРrо фирмы Microsoft, Раrаdох и Visual dBase фирмы Borland, а также R:Ваsе фирмы Microrim.
Благодаря популярности реляционной модели многие не реляционные системы теперь обеспечиваются реляционным пользовательским интерфейсом, независимо от используемой базовой модели. Основная сетевая СУБД, система IDMS. теперь называется IDMS/R(или IDMS/SQL) и поддерживает реляционное представление данных. Другими СУБД для мейнфреймов, в которых поддерживаются некоторые реляционные компоненты, являются Model 204 фирмы Computer Corporation of America и АDАВА8 D фирмы Software AG.
Кроме того, позже были предложены некоторые расширения реляционной модели данных, предназначенные для "наиболее полного и точного выражения смысла данных(Codd, 1979) объектно-ориентированных понятий (Stonebraker and Row,1986),а также для поддержки дедуктивных возможностей (Gardarin and Valduries, 1989).
Рис. 1.2. Структура обработки информации в реляционной БД
Используемая терминология
Реляционная модель основана на математическом понятии отношения, физическим представлением которого является таблица.
Дело в том, что Кодд, будучи опытным математиком, широко использовал математическую терминологию, особенно из теории множеств и логики предикатов.
К А Р Д И Н А Л Ь Н О С Т Ь
Рис. 1.3. Структура реляционных данных
Отношение – это плоская таблица, состоящая из столбцов и строк.
В любой реляционной СУБД предполагается, что пользователь воспринимает базу данных как набор таблиц. Однако следует подчеркнуть, что это восприятие относится только к логической структуре базы данных. Подобное восприятие не сносится к физической структуре базы данных, которая реализовывается с помощью различных структур хранения.
Атрибут – это поименованный столбец отношения.
В реляционной модели отношения используются для хранения информации об объектах, представленных в базе данных. Отношение обычно имеет вид двумерной таблицы, в которой строки соответствуют отдельным записям, а столбцы – атрибутам. При этом атрибуты могут располагаться в любом порядке, независимо от их переупорядочивания отношение будет оставаться одним и тем же, а потому иметь тот же смысл.
Например, информация о студентах может быть представлена отношением Студент, включающим столбцы с атрибутами Номер зачетки, Номер группы, Фамилия, Средний балл. Аналогично, информация о преподавателях может быть представлена отношением Преподаватель, включающим столбцы с атрибутами Табельный номер, Фамилия, Раб. телефон, Факс. На рис. 1.4. показаны примеры отношений Студент и Преподаватель.
Студент
Номер зачетки |
Номер группы |
Фамилия |
Средний балл |
ТЗ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 |
Рис. 1.4. Примеры отношений Студент и Преподаватель.
Домен – это набор допустимых значений для одного или нескольких атрибутов.
Домены представляют собой чрезвычайно мощный компонент реляционной модели. Каждый атрибут реляционной базы данных определяется на некотором домене, домены могут отличаться для каждого из атрибутов, но два и более атрибутов могут определяться на одном и том же домене.
В табл. 1.1 представлены домены для атрибутов отношений Студент и Преподаватель. Хотя в отношении Преподаватель есть четыре атрибута, здесь показаны только три, потому что два атрибута, Раб. телефон и Факс, определены на одном и том же домене.
В любой момент времени в доменах могут существовать значения, которые не будут реально представлены значениями соответствующего атрибута.
Таблица 1.1. Домены атрибутов отношений Студент и Преподаватель
Атрибут |
Имя домена |
Содержимое домена |
Определение домена |
Номер зачетки |
НОМЕР_ЗАЧЕТКИ |
Множество всех допустимых номеров зачеток студентов |
Символьный: размер 6, диапазон ‘ТЗ3101’-‘ТИ3111’ |
Номер группы |
НОМЕР_ГРУППЫ |
Множество всех имеющихся групп |
Символьный: размер 4, диапазон ‘ТЗ31’-‘ТИ31’
|
Фамилия |
ФАМИЛИЯ_ СТУДЕНТА |
Множество всех фамилий студентов |
Символьный: размер 10 |
Фамилия |
ФАМИЛИЯ_ ПРЕПОДАВАТЕЛЯ |
Множество всех фамилий преподавателей |
Символьный: размер 10 |
Средний балл |
СРЕДНИЙ_БАЛЛ |
Множество всех допустимых средних баллов студентов |
Символьный: размер 3 |
Табельный номер |
ТАБЕЛЬНЫЙ_ НОМЕР |
Множество всех табельных номеров преподавателей |
Символьный: размер 4 |
Раб. телефон |
РАБОЧИЙ_ ТЕЛЕФОН_ФАКС |
Множество всех номеров телефонов и факсов преподавателей |
Символьный: размер 7 |
Факс |
РАБОЧИЙ_ ТЕЛЕФОН_ФАКС |
Множество всех номеров телефонов и факсов преподавателей |
Символьный: размер 7 |
Понятие домена имеет большое значение, поскольку благодаря ему пользователь может централизованно определять смысл и источник значений, которые могут получать атрибуты.
В результате при выполнении реляционной операции системе доступно больше информации, что позволяет ей избежать семантически некорректных операций.
Например, бессмысленно сравнивать название улицы с номером телефона, даже если для обоих этих атрибутов определениями доменов являются символьные строки. Однако умножение значений из этих доменов является допустимой операцией.
Как следует из этих двух примеров, обеспечить полную реализацию понятия домена совсем непросто, а потому во многих РСУБД они поддерживаются не полностью, а лишь частично.
Кортеж – это строка отношения.
Элементами отношения являются кортежи, или строки, таблицы.
Кортежи могут располагаться в любом порядке, при этом отношение будет оставаться тем же самым, а значит, и иметь тот же смысл.
Описание структуры отношения вместе со спецификацией доменов и любыми другими ограничениями возможных значений атрибутов иногда называют его заголовком (или содержанием (intension)). Обычно оно является фиксированным до тех пор пока смысл отношения не изменяется за счет добавления в него дополнительных атрибутов.
Кортежи называются расширением (extension), состоянием (state) или телом отношения, которое постоянно меняется.
Степень отношения определяется количеством атрибутов, которое оно содержит.
Отношение Студент, показанное на рис. 1.4, имеет четыре атрибута и, следовательно, его степень равна четырем. Это значит, что каждая строка таблицы является 4-арным кортежем, т.е. кортежем, содержащим четыре значения.
Отношение только с одним атрибутом имеет степень 1 и называется унарным отношением (или 1-арным кортежем). Отношение с двумя атрибутами называется бинарным, отношение с тремя атрибутами – тернарным, а для отношений с большим количеством атрибутов используется термин п-арный.
Определение степени отношения является частью заголовка отношения.
Кардинальность – это количество кортежей, которое содержит отношение.
Эта характеристика меняется при каждом добавлении или удалении кортежей. Кардинальность является свойством тела отношения и определяется текущим состоянием отношения в произвольно взятый момент.
Реляционная база данных – это набор нормализованных отношений.
Реляционная база данных состоит из отношений, структура которых определяется с помощью особых методов, называемых нормализацией.
