
- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Упражнения:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 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. Определение данных содержится внутри прикладных программ, а не хранится отдельно и независимо от них.
2. Помимо прикладных программ не предусмотрено никаких других инструментов доступа к данным и их обработки.
Для повышения эффективности работы необходимо использовать новый подход, а именно базу данных (database) и систему управления базами данных, или СУБД (Database management System-DBMS).
База данных: Совместно используемый набор логически связанных данных (и описание этих данных), предназначенный для удовлетворения информационных потребностей, предусматриваемых некой информационной системой.
База данных – это единое, большое хранилище данных, которое однократно определяется, а затем используется одновременно многими пользователями через различные прикладные программы, благодаря чему база данных является общим корпоративным ресурсом.
Вместо разрозненных файлов с избыточными данными, здесь все данные собраны вместе с минимальной долей избыточности.
База данных хранит не только рабочие данные, но и их описания. По этой причине базу данных еще называют набором интегрированных записей с самоописанием.
В совокупности, описание данных называется системным каталогом (system catalog), или словарем данных (data dictionary), а сами элементы описания принято называть метаданными (meta-data), т.е. “данными о данных”.
Именно наличие самоописания данных в базе данных обеспечивает в ней независимость между программами и данными (program-data independence).
Подход, основанный на применении баз данных, где определение данных отделено от прикладных программ, очень похож на подход, используемый при разработке современного программного обеспечения, когда наряду с внутренним определением объекта существует его внешнее определение. Пользователи объекта видят только его внешнее определение и не заботятся о том, как он определяется и как функционирует.
Одно из преимуществ такого подхода, а именно абстрагирования данных (data abstraction), заключается в том, что можно изменить внутреннее определение объекта без каких-либо последствий для его пользователей, при условии, что внешнее определение объекта остается неизменным.
Аналогичным образом, в подходе с использованием баз данных, структура данных отделена от прикладных программ и хранится в базе данных. Добавление новых структур данных или изменение существующих никак не влияет на прикладные программы, при условии, что они не зависят непосредственно от изменяемых компонентов.
Например, добавление нового поля в запись или создание нового файла никак не повлияет на работу имеющихся прикладных программ. Однако удаление поля из используемого приложением файла повлияет на эту прикладную программу, а потому его также потребуется соответствующим образом модифицировать.
В базах данных используются логически связанные данные. Термин "логически связанный" используется, когда при анализе информационных потребностей организации следует выделить сущности, атрибуты и связи.
Сущностью (entity) называется отдельный тип объекта (человек, место или вещь, понятие или событие), который нужно представить в базе данных.
Атрибутом (attribute) называется свойство, которое описывает некоторую характеристику описываемого объекта;
Связь (relationship) – это то, что объединяет несколько сущностей.
Диаграмму "сущность-связь", или ER-диаграмму (Entity relationship – ER) рассмотрим на примере абстрактного учебного процесса. Он состоит из следующих компонентов:
Сущностей (обозначены прямоугольниками): группа, студент, преподаватель, кафедра, предмет, изучение, успеваемость.
Связей (обозначены ромбиками), объединяющие основные сущности. Например, ГС (сокращение Группа/Студент): каждый студент находится в определенной группе, и каждая группа содержит определенного студента. Аналогично, каждая группа принадлежит к определенной кафедре, а кафедра состоит из определенных групп (связь ГК – сокращение от Группа/Кафедра); преподаватель относится к кафедре, а кафедра имеет определенных преподавателей (связь КП – сокращение Кафедра/Преподаватель) и т.д.
Рис. 1.1. Пример диаграммы «сущность-связь».
Подобная база данных представляет сущности, атрибуты и логические связи между объектами. Иначе говоря, база данных содержит логически связанные данные.
Обычно данные в базе данных называют перманентными или постоянно хранимыми (хотя иногда на самом деле они недолго остаются таковыми). Под словом перманентные (persistent) подразумеваются данные, которые отличаются от других, более изменчивых данных, таких как промежуточные результаты, входные и выходные данные, управляющие операторы, рабочие очереди, программные управляющие блоки и вообще все данные, временные (transient) по своей сути. Можно утверждать, что данные в базе являются перманентными, поскольку после того как они были приняты средствами СУБД для помещения в базу, их последующее удаление возможно лишь при использовании соответствующего явного запроса к базе данных, но не в результате какого-либо побочного эффекта от выполнения некоторой программы. Подобный взгляд на понятие перманентности позволяет точнее определить термин база данных.
База данных – это некоторый набор перманентных (постоянно хранимых) данных, используемых прикладными программными системами какого-либо предприятия.
Примечание. Первоначально вместо перманентных данных использовался термин операционные данные. Старый термин акцентировал внимание на особом значении оперативных, или производственных, приложений баз данных, т.е. рутинных, часто выполняющихся приложений. В последнее время используется термин оперативная обработка транзакций (On-Line Transaction Processing – OLTP). Однако теперь базы данных все чаще применяются в приложениях поддержки принятия решений (decision support), и термин операционные данные для них уже не подходит. На сегодняшний день на практике используют две отдельные базы данных – с операционными данными и с данными для поддержки принятия решений; последнюю обычно называют хранилищем данных (data warehouse). В хранилищах данных часто содержится агрегированная информация, которая, в свою очередь, периодически извлекается из операционной базы данных.
Типы информации в базе данных:
1. Данные пользователей. Сегодня большинство БД представляют данные пользователей в виде отношений (relations). Отношение – это таблица данных. Столбцы таблицы содержат поля, или атрибуты, а строки содержат записи о конкретных объектах делового мира.
2. Метаданные. Как известно база данных является самодокументированной, то есть одной из ее составляющих является описание собственной структуры. Это описание называется метаданными. Так как СУБД предназначены для хранения таблиц и манипуляции ими, большинство из них хранят метаданные в форме таблиц, иногда называемых системными таблицами. Хранение метаданных в таблицах не только эффективно для СУБД, но и удобно для разработчиков, поскольку для запроса метаданных они могут использовать те же самые средства, что и для запроса пользовательских данных.
3. Индексы. Следующий тип данных, который хранится в базе данных, призван улучшить ее производительность и доступность. Эти данные, называемые иногда избыточными данными, состоят главным образом из индексов, хотя в ряде случаев используются и другие структуры данных, такие как связанные списки. Индексы используются не только для сортировки, но и для быстрого доступа к данным.
4. Метаданные приложений. Последний тип информации в базе данных – это метаданные приложений, которые описывают структуру и формат пользовательских форм, отчетов, запросов и других компонентов приложений. Не все СУБД поддерживают компоненты приложений, а из тех СУБД, где такая возможность предусмотрена, не все хранят структуру этих компонентов в виде метаданных приложений в базе данных. Однако большинство современных СУБД хранят эту информацию в базе данных. Вообще говоря, ни разработчики баз данных, ни пользователи не обращаются к метаданным приложений напрямую, а пользуются соответствующими средствами, которые предоставляет СУБД.
Система управления базами данных – СУБД
СУБД – это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать базу данных, а также осуществлять к ней контролируемый доступ.
СУБД можно также определять, как программное обеспечение, которое взаимодействует с прикладными программами пользователя и базой данных и обладает приведенными ниже возможностями:
1. Позволяет определять базу данных, что обычно осуществляется с помощью языка определения данных (DDL – Data Definition Language). DDL предназначен для предоставления пользователям средств указания типа данных и их структуры, а также средств задания ограничений для информации, хранимой в базе данных.
2. Позволяет вставлять, обновлять, удалять и извлекать информацию из базы данных, что обычно осуществляется с помощью языка управления данными (Data Manipulation Language). Наличие централизованного хранилища всех данных и их описаний позволяет использовать язык DML как общий инструмент организации запросов, который иногда называют языком запросов (query language). Язык запросов позволяет устранить присущие файловым системам ограничения, при которых пользователям приходится иметь дело только с фиксированным набором запросов или постоянно возрастающим количеством программ, что порождает другие, более сложные проблемы управления программным обеспечением.
Существует две разновидности языков DML – процедурные (procedural) и непроцедурные (non-procedural) языки, – которые отличаются между собой способом извлечения данных. Процедурные языки обычно обрабатывают информацию в базе данных последовательно, запись за записью, а непроцедурные оперируют сразу целыми наборами записей. С помощью процедурных языков DML обычно указывается, как можно получить желаемый результат, тогда как непроцедурные языки DML используются для описания того, что следует получить.
Наиболее распространенным типом непроцедурного языка является язык структурированных запросов (Structured Query Language – SQL), который в настоящее время определяется специальным стандартом и фактически является обязательным языком для любых реляционных СУБД.
3. СУБД предоставляет контролируемый доступ к базе данных с помощью перечисленных ниже средств:
системы обеспечения безопасности, предотвращающей несанкционированный доступ к базе данных со стороны пользователей;
системы поддержки целостности данных, обеспечивающей непротиворечивое состояние хранимых данных;
системы управления параллельной работой прикладных программ, контролирующей процессы их совместного доступа к базе данных;
системы восстановления, позволяющей восстановить базу данных до предыдущего непротиворечивого состояния, нарушенного в результате сбоя аппаратного или программного обеспечения;
доступного пользователям каталога, содержащего описание хранимой в базе данных информации.