- •Белорусский государственный университет модели данных и субд Учебное пособие
- •Введение
- •Раздел 5 посвящен семантическим или инфологическим моделям, используемым в современных программных системах поддержки проектирования, называемых case-системами (Computer Aided Software Engineering).
- •Раздел 10 посвящен вопросам распределенной обработки данных, здесь рассматриваются проектирование распределенных систем обработки данных, уделяется большое внимание фрагментации данных.
- •1. Основные понятия и определения теории баз данных.
- •1.1. Причины возникновения систем баз данных.
- •1.3. Системы управления базами данных.
- •2. Классификация моделей данных.
- •2.1. Моделирование данных.
- •2.2. Иерархическая модель.
- •2.3. Сетевая модель.
- •2.4. Реляционная модель.
- •2.5. Объектно-ориентированная модель.
- •2.6. Объектно-реляционная модель.
- •2.7. Многомерная модель.
- •3. Реляционная алгебра и реляционное исчисление.
- •3.1. Реляционная алгебра.
- •3.2. Реляционное исчисление.
- •4. Проектирование реляционных баз данных на основе нормализации.
- •4.1. Нормализация отношений, цели нормализации.
- •4.2. Структура функциональных зависимостей.
- •4.2.1. Функциональные зависимости и их свойства.
- •4.2.2. Ключи схем отношений.
- •4.2.3. Полные и неполные функциональные зависимости.
- •4.2.4. Покрытие множеств зависимостей.
- •4.2.5. Декомпозиция схем отношений.
- •4.2.6. Декомпозиции, сохраняющие зависимости.
- •4.3 Нормальные формы отношений.
- •4.3.1. Первая и вторая нормальные формы схем отношений.
- •4.3.2. Третья нормальная форма схем отношений.
- •4.3.4. Четвертая нормальная форма схем отношений.
- •4.3.5. Пятая нормальная форма схем отношений.
- •5. Семантическое моделирование
- •5.1. Цели и средства семантического моделирования.
- •5.2. Метод “сущность-связь”.
- •5.3. Этапы моделирования.
- •5.4. Правила формирования отношений.
- •Формирование отношений для связи 1:1.
- •Формирование отношений для связи 1:м.
- •6. Структура субд и основные функции.
- •6.1. Типовая организация современной субд.
- •6.2. Поддержка языков бд.
- •6.3. Управление данными во внешней памяти.
- •6.4. Управление буферами оперативной памяти.
- •6.5. Управление транзакциями.
- •6.6. Журнализация и восстановление после сбоев.
- •7. Управление транзакциями.
- •7.1. Свойства транзакций. Проблемы параллельного выполнения.
- •7.2. Консервативные методы управления транзакциями.
- •7.2.1. Метод блокировки.
- •7.2.2. Метод временных отметок.
- •7.3. Оптимистические методы управления транзакциями.
- •7.4. Уровень детализации блокируемых элементов данных.
- •8. Восстановление базы данных после сбоев.
- •8.1. Основные принципы и функции восстановления.
- •8.3. Создание контрольных точек.
- •8.4. Методы восстановления.
- •9. Защита баз данных.
- •9.1. Основные понятия.
- •9.2. Компьютерные средства защиты.
- •9.3. Некомпьютерные средства защиты.
- •10. Распределенные базы данных
- •10.1. Основные концепции.
- •10.2. Функции распределенных субд.
- •10.3. Разработка распределенных реляционных баз данных.
- •10.4. Распределение данных.
- •10.5. Фрагментация.
- •10. 6. Обеспечение прозрачности в рсубд.
- •11. Введение в субд oracle.
- •11.1. Характеристика субд Oracle.
- •11.2. Объекты базы данных Oracle.
- •11.4. Архитектура базы данных Oracle.
- •11.5. Архитектура экземпляра базы данных Oracle.
- •11.6. Формирование базы данных и экземпляра Oracle.
- •12. Основы языка sql.
- •12.1. Алфавит и лексемы языка sql.
- •12.2. Типы данных языка sql.
- •12.3. Операторы языка sql.
- •12.4. Операции языка sql.
- •12.5. Функции языка sql.
- •12.6. Создание, модификация и удаление таблиц.
- •12.7. Выбор информации из базы данных.
- •13. Основы языка pl/sql.
- •13.1. Алфавит и лексемы языка.
- •13.3. Типы данных и объявление переменных.
- •13.4. Операторы.
- •13.5. Курсоры.
- •13.6. Обработка исключительных ситуаций.
- •13.7. Триггеры базы данных.
- •13.8. Хранимые процедуры и функции.
- •13.9. Пакеты.
- •13.10. Объекты.
- •Литература
4.2.2. Ключи схем отношений.
Рассматривая наборы объектов, мы предполагали, что существует ключ – набор атрибутов, однозначно определяющий объект. Аналогичное понятие существует и для отношения с заданным множеством функциональных зависимостей, то есть набор атрибутов, однозначно определяющий кортеж отношения.
Пусть задана схема отношения R=(U, F), XU;
Множество Х называют сверхключом схемы отношения R, если Х+=U, то есть зависимость Х—>U принадлежит F+ .
Минимальный по включению сверхключ называется ключом, то есть Х – ключ схемы R, если:
X+ = U;
ни для какого собственного подмножества YХ, Y+U.
В литературе часто такой ключ называют возможным ключом, а собственно ключом называют некоторый определенный возможный помеченный ключ, иногда такой помеченный ключ называют первичным, а остальные – просто ключами, здесь термины: возможный ключ, первичный ключ, не используются, поскольку они связаны с семантикой базы.
В принципе отношение может иметь несколько ключей. Если атрибут содержится в некотором ключе, то его называют ключевым или первичным атрибутом отношения, в противном случае атрибут называют непервичным.
Задача нахождения произвольного “первого попавшегося” ключа отношения решается довольно просто. Это можно сделать следующим образом: рассматривается все множество атрибутов U, из него вычеркивается любой атрибут, получаем множество V; если V+=U, то вычеркнутый атрибут так и остается вычеркнутым, иначе возвращаем его на место. Далее пытаемся вычеркнуть следующий атрибут, так продолжаем до тех пор, пока ни один атрибут нельзя будет вычеркнуть. Оставшийся набор атрибутов является ключом отношения.
Вычисление всех ключей отношения задача довольно трудоемкая, поскольку ключей может быть экспоненциально много, подробнее эта задача рассматривается ниже. Задачи нахождения минимального по количеству атрибутов ключа, а также проверки, является ли конкретный атрибут ключевым (первичным), относятся к классу NP-трудных, то есть не имеют алгоритмов решения с полиномиальной оценкой трудоемкости.
Пример.
Для схемы отношения R=(U, F), где U={А1, А2, …, А8},
F={А1>А2; А2—>АЗ; A3>А1; А2,АЗ—>А4; А4,А7>А6;
А6,А5—>А7; А7>А8} требуется найти все ключи, наборы первичных и непервичных атрибутов и сверхключ. В результате решения получаем.
Все ключи отношения:
К1={А1, А5, А6}, К2={А1, А5, А7}, КЗ={А2, А5, A6},
К4={А2, А5, А7}, К5={АЗ, А5, А6}, К6={АЗ, А5, А7}.
Множество первичных атрибутов: {А1, А2, АЗ, А5, А6, А7}.
Множество непервичных атрибутов: {А4, А8}.
Ясно, что сверхключом является любое множество атрибутов, содержащее ключ, например, в приведенном примере сверхключом является множество: {А1, А2, А5, А6}.
4.2.3. Полные и неполные функциональные зависимости.
Зависимость X—>Y называется неполной, если существует такой атрибут хХ, что (Х\{х})+Y, то есть, если, вычеркнув некоторый атрибут х из X, получим Х' такое, что (X'—>Y)F+. Если такого атрибута х в левой части зависимости не существует, зависимость называется полной. В дальнейшем будем рассматривать только такие неполные зависимости Х—>Y, где YX.
Система образующих структуры функциональных зависимостей называется элементарной, если она содержит только полные зависимости.
Перейти от заданной зависимости Х>Y к полной можно вычеркиванием из Х “избыточных” атрибутов, то есть, вычеркнув некоторый атрибут х и получив X', проверяем (X')+Y, если да, то атрибут х остается вычеркнутым, если нет – возвращается на место, так проверяются все атрибуты множества X. Ясно, что по одной заданной зависимости возможно получение нескольких полных зависимостей (в зависимости от порядка вычеркивания атрибутов).
Пример.
Для схемы R=(U, F), где U={А1, А2, А3, А4}, F={А1—>А2; А2>A3; A3>А4; А1,А2—>А4}) определить неполные зависимости, входящие в множество зависимостей F.
Зависимость А1,А2—>А4 не является полной, поскольку зависимость (А1—>А4)F+ и зависимость (А2—>А4)F+.
