
- •Введение в бд
- •Файловые системы
- •Системы с базами данных
- •Модели данных
- •Альтернативная терминология Терминология, используемая в реляционной модели, порой может привести к путанице, поскольку помимо предложенных двух наборов терминов существует еще один – третий.
- •Сетевая модель данных
- •Иерархическая модель данных
- •Вопросы:
- •Упражнения:
- •Реляционная модель.
- •Реляционная алгебра. Реляционное исчисление.
- •Реляционная модель
- •Реляционные языки
- •Реляционная алгебра
- •Унарные операции реляционной алгебры
- •Операции с множествами
- •Операции соединения
- •Деление
- •Реляционное исчисление
- •Реляционное исчисление кортежей
- •Реляционное исчисление доменов
- •Другие языки
- •Тема 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 показаны соответствия, существующее между тремя упомянутыми выше группами терминов.
Таблица 1.2. Альтернативные варианты терминов в реляционной модели
Официальные термины |
Альтернативный вариант 1 |
Альтернативный вариант 2 |
Отношение |
Таблица |
Файл |
Кортеж |
Строка |
Запись |
Атрибут |
Столбец |
Поле |
Отношения и их свойства в базе данных
Реляционная схема – это имя отношения, за которым следует множество пар атрибутов и доменов.
Например, для атрибутов А1, А2, .... Аn с доменами D1, D2 .... Dn реляционной схемой будет множество {А1:D1...An:Dn}.
Отношение R, заданное реляционной схемой S, является множеством отображений имен атрибутов на соответствующие им домены, т.е. отношение R является множеством таких n-арных кортежей.
Каждый элемент n-арного кортежа состоит из атрибута и значения этого атрибута.
Обычно при записи отношения в виде таблицы имена атрибутов перечисляются в заголовках столбцов, а кортежи образуют строки формата (d1,d2,…dn), где каждой значение берется из соответствующего домена.
Таким образом, в реляционной модели отношение можно представить как произвольное подмножество декартового произведения, тогда как таблица – это всего лишь физическое представление такого отношения.
В примере, показанном на рис. 1.4. отношение Студент имеет атрибуты Номер зачетки, Номер группы, Фамилия, Средний бал с соответствующими им доменами. Отношение Студент представляет собой произвольное подмножество декартового произведения доменов или произвольное множество 4-арных кортежей, в которых первым идет элемент из домена НОМЕР_ЗАЧЕТКИ , вторым - элемент из домена НОМЕР_ГРУППЫ и т.д. Например, один из 4-арных кортежей может иметь такой вид:
{(ТЗ3106, ТЗ31, Иванов, 5)}
Этот же кортеж можно записать в более корректной форме:
{(Номер зачетки: ‘ТЗ3106’, Номер группы: ‘ТЗ31’, Фамилия: ‘Иванов’, Средний бал: ‘5’)}
Таблица Студент представляет собой удобный способ записи всех 4-арных кортежей образующих отношение в некоторый заданный момент времени.
Отношение обладает следующими характеристиками:
Отношение имеет имя, которое отличается от имен всех других отношений.
Каждая ячейка отношения содержит только атомарное (неделимое) значение.
Каждый атрибут имеет уникальное имя.
Значения атрибута берутся из одного и того же домена.
Порядок следования атрибутов не имеет никакого значения.
Каждый кортеж является уникальным, т.е. дубликатов кортежей быть не может.
Теоретически порядок следования кортежей в отношении не имеет никакого значения. (Однако, практически этот порядок может существенно повлиять на эффективность доступа к ним).
Отношения не могут содержать повторяющихся групп.
Рассмотрим отношение Студент (рис. 1.4.). Имена столбцов, указанные в их верхней строке, соответствуют именам атрибутов отношения. Значения атрибута Номер зачетки берутся из домена НОМЕР_ЗАЧЕТКИ, не допускается размещение в этом столбце иных значений, например среднего балла.
Столбцы можно менять местами при условии, что имя атрибута перемещается вместе с его значениями.
Отношение не может содержать кортежей-дубликатов.
Например, строка (‘ТЗ3106’, ‘ТЗ31’, ‘Иванов’, ‘5’) может быть представлена в отношении только один раз.
При необходимости строки можно менять местами произвольным образом (например, переместить всю строку, которая относится к студенту 'Иванов' на место строки студента 'Сидоров'), само отношение при этом останется прежним.
Большая часть свойств отношений происходит от свойств математических отношений:
Поскольку отношение является множеством, то порядок элементов не имеет значения. Следовательно, порядок кортежей в отношении несущественен.
В множестве нет повторяющихся элементов. Аналогично, отношение не может содержать кортежей-дубликатов.
При вычислении декартового произведения множеств с простыми однозначными элементами (например, целочисленными значениями), каждый элемент в каждом кортеже имеет единственное значение. Аналогично каждая ячейка отношения содержит только одно значение. Однако математическое отношение не нуждается в нормализации. Кодд предложил запретить наличие повторяющихся групп с целью упрощения реляционной модели данных.
Набор возможных значений для данной позиции отношения определяется множеством, или доменом, на котором определяется эта позиция. В таблице все значения в каждом столбце должны происходить от одного и того же домена, определенного для данного атрибута. Однако в математическом отношении порядок следования элементов не имеет значения, в кортеже имеет значение.
Например, допустимая пара значений (1,2) совершенно отлична от допустимой пары (2,1). Это утверждение неверно для отношений в реляционной модели, где специально оговаривается, что порядок атрибутов несущественно. Дело в том, что заголовки столбцов однозначно определяют, к какому именно атрибуту относится данное значение. Следствием этого факта является положение о том, что порядок следования заголовков столбцов в заголовке отношения несущественен. Однако, если структура отношения уже определена, то порядок элементов в кортежах тела отношения должен соответствовать порядку имен атрибутов.
Реляционные ключи
Необходимо иметь возможность уникальной идентификации каждого отдельного кортежа отношения по значениям его атрибутов.
Суперкпюч (superkey) – атрибут или множество атрибутов, которое единственным образом идентифицирует кортеж данного отношения.
Рассмотрим отношение Студент, показанное на рис. 1.4. Конкретное значение атрибута Номер группы не может однозначно определить студента, поскольку в группе учится некоторое количество студентов. Данный атрибут не может быть выбран в качестве суперключа, с другой стороны, поскольку в учебном проекте для каждого студента задается номер его зачетки, каждое значение этого номера (атрибут Номер зачетки) может определять не больше одного кортежа (в отношении Студент), а потому Номер зачетки является суперключом как отдельно, так и в сочетании с другими атрибутами.
Поскольку суперключ может содержать дополнительные атрибуты, которые необязательны для уникальной идентификации кортежа, интерес представляют суперключи, состоящие только из тех атрибутов, которые действительно необходимы для уникальной идентификации кортежей.
Потенциальный ключ – это суперключ, который не содержит подмножества, также являющегося суперключом данного отношения.
Таким образом, потенциальным ключом для отношения Студент является Номер зачетки студента, однозначно его определяющий.
Потенциальный ключ К для данного отношения R обладает двумя свойствами:
Уникальность. В каждом кортеже отношения R значение ключа К единственным образом идентифицируют этот кортеж.
Неприводимость. Никакое допустимое подмножество ключа К не обладает свойством уникальности.
Отношение может иметь несколько потенциальных ключей.
Если ключ состоит из нескольких атрибутов, то он называется составным ключом.
Любой конкретный набор кортежей отношения нельзя использовать для доказательства того, что некий атрибут или комбинация атрибутов являются потенциальным ключом.
Тот факт, что в некоторый момент времени не существует значений-дубликатов, совсем не означает, что их не может быть вообще.
Наличие значений-дубликатов в конкретном существующем наборе кортежей доказывает то, что некоторая комбинация атрибутов не может быть потенциальным ключом.
Для идентификации потенциального ключа требуется знать смысл используемых атрибутов в "реальном мире" только это позволит обоснованно принять решение о возможности существования значений-дубликатов. Только исходя из подобной семантической информации можно гарантировать, что некоторая комбинация атрибутов является потенциальным ключом отношения.
На основании, представленных на рис. 1.4., данных можно решить, что подходящим потенциальным ключом для отношения Преподаватель вполне может быть атрибут Табельный номер преподавателя. Например, Фамилию преподавателя нельзя использовать в качестве потенциального ключа, поскольку можно встретить нескольких преподавателей с такой фамилией.
Первичный ключ – это потенциальный ключ, который выбран для уникальной идентификации кортежей внутри отношения.
Поскольку отношение не содержит кортежей-дубликатов, всегда можно уникальным образом идентифицировать каждую его строку.
Это значит, что отношение всегда имеет первичный ключ.
В худшем случае все множество атрибутов может использоваться как первичный ключ, но обычно, чтобы различить кортежи, достаточно использовать несколько меньшее подмножество атрибутов.
Потенциальные ключи, которые не выбраны в качестве первичного ключа, называются альтернативными ключами.
Внешний ключ – это атрибут или множество атрибутов внутри отношения, которое соответствует потенциальному ключу некоторого (может быть, того же самого) отношения.
Если некий атрибут присутствует в нескольких отношениях, то его наличие обычно отражает определенную связь между кортежами этих отношений.
Рассмотрим пример. Пусть информация о студентах представлена отношением Студент, включающим столбцы с атрибутами Номер зачетки, Номер группы, Фамилия, Код предмета, который изучает студент. Аналогично, информация о предметах может быть представлена отношением Предмет, включающим столбцы с атрибутами Код предмета, Название предмета, Лекционные часы, Практические часы. На рис. 1.5. показаны примеры отношений Студент и Предмет.
Студент
Номер зачетки |
Номер группы |
Фамилия |
Код предмета |
ТЗ3106 |
ТЗ31 |
Иванов |
101 |
ТЗ3217 |
ТЗ32 |
Петров |
102 |
ТМ3115 |
ТМ31 |
Пушников |
101 |
ТМ3220 |
ТМ32 |
Сидоров |
103 |
Предмет
Код предмета |
Название предмета |
Лекционные часы |
Практические часы |
101 |
Физика |
18 |
26 |
102 |
Математика |
25 |
30 |
103 |
Химия |
15 |
20 |
Рис. 1.5. Пример отношений Студент и Предмет.
Атрибут Код предмета намеренно включен в отношения Студент и Предмет для установления связи между сведениями о студентах и предметах. В отношении Предмет атрибут Код предмета является первичным ключом, а в отношении Студент он введен для определения изучения студентами предметов. В отношении Студент атрибут Код предмета является внешним ключом. В таком случае говорят, что атрибут Код предмета в отношении Студент ссылается на первичный ключ, т.е. на атрибут Код предмета в базовом отношении Предмет.
Базовое отношение иногда называют целевым отношением.