- •1. Определение информации. Основные проблемы, возникающие при хранении информации.
- •2. Отличительные особенности субд как программного продукта. Понятие экземпляра и базы данных.
- •3. Категории пользователей субд. Функциональные требования различных категорий пользователей к субд.
- •4. История развития субд. Особенности не реляционных моделей данных.
- •5. Общая характеристика моделей данных. Основные свойства. Понятие атрибутов, доменов.
- •6. Отношения модели данных. Понятия сущности и связи.
- •7. Ограничение целостности модели данных. Трехуровневая архитектура ansi/sparc.
- •8. Структурные компоненты модели данных в нотации idef1x. Понятия сущность, связь. Типы сущностей и связей.
- •9. Реляционная модель данных. Базовые структурные компоненты реляционной модели данных. Основные свойства.
- •10. Свойства реляционной модели данных. Представление сущности.
- •11. Свойства реляционной модели данных. Представление связи.
- •12. Требования целостности в реляционной модели данных.
- •13. Язык определения данных в реляционной модели данных. Основные возможности. Примеры.
- •14. Типы ограничений целостности, основные типы данных, основные операции реляционной модели данных.
- •15. Проектирование реляционных баз данных. Цели проектирования, основные этапы.
- •16. Проектирование реляционных баз данных. Проблемы обновления, удаления, добавления данных. Типы ограничений целостности.
- •17. Функциональная зависимость. Нормализация отношений. Концепция нормальных форм.
- •18. Первая и вторая нормальные форма. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •20. Понятие многозначной зависимости. Примеры.
- •21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
- •22. Основные свойства sql, как языка программирования. Отличие от других языков программирования.
- •23. Основы построения sql- запросов. Источники данных запроса. Условия выборки кортежей. Примеры.
- •24. Левые, правые и полные соединения. Функции для работы с null значениями. Выборка уникальных записей. Примеры.
- •25. Использование подзапросов. Типы подзапросов. Примеры.
- •26. Коррелированные подзапросы. Особенности использования in, not in,exists, not exists.
- •27. Теоретико-множественные операции в sql-запросах. Примеры.
- •28. Агрегирующие функции. Группировка кортежей. Примеры.
- •29. Представления. Особенности использования. Примеры.
- •30. Триггеры в Transact sql. Пример реализации триггера.
- •31. Курсоры. Основные функции. Правила применения. Примеры.
- •32. Внутренние структуры данных. Двухуровневая система доступа к данным. Отношения каталогов.
- •33. Методы доступа к данным. Бинарные деревья.
- •34. Методы доступа к данным. Многоходовые деревья.
- •35. Методы доступа к данным. Сбалансированные деревья. Структура, правила следования. Основные свойства.
- •36. Операция вставки элемента в в-дерево. Проблема переполнения, методы решения. Пример.
- •37. Операция удаления элемента из в-дерева. Проблема антипереполнения. Методы решения. Пример
- •42. Индекс на основе битовых карт. Основные свойства.
- •43. Индекс на основе битовых карт. Структура листового блока. Операция добавления элемента.
- •44. Индекс на основе битовых карт. Операция обновления элемента. Блокировка записей.
- •45. Методы доступа к данным. Основные операции выполнения sql-выражения.
- •46. Методы доступа к данным. Типы соединений таблиц.
19. Третья нормальная форма. Нормальная форма Бойса-Кодда. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.
Отношение находится в 3НФ тогда и только тогда, когда оно находится в 2НФ, и для каждого не ключевого атрибута отсутствует транзитивная зависимость от первичного ключа.
Транзитивная зависимость. Если для атрибутов A, B и C некоторого отношения существуют зависимости вида AB и BC, это означает, что атрибут C транзитивно зависит от атрибута A через атрибут B (при условии, что атрибут А функционально не зависит ни от атрибута B, ни от атрибута C).
Пример. Есть таблица ПОСТАВЩИК (Sid, SName, City, Code). В ней следующие зависимости: Sid à SName, Sid à City, City à Code. Так как код города зависит от города, то выявляется транзитивная зависимость Sid à Code.
Возникают аномалии 3НФ:
Аномалия вставки: невозможно сохранить данные о новом городе, пока не будет введена запись о новом поставщике с новым городом (первичный ключ не может содержать неопределённые значения);
Аномалия удаления: при удалении последнего поставщика из данного города теряется информация о городе вообще;
Аномалия обновления: при изменении кода города или названия города у одного поставщика придётся изменить эти поля у всех поставщиков с данным городом и кодом. Также при изменении кода города придётся изменить и название города, и наоборот – при изменении названия города придётся изменить код города.
Чтобы нормализовать к 3НФ, надо произвести декомпозицию (разбиение) таблицы на две: ПОСТАВЩИК (Sid, SName, City) и ГОРОД (City, Code).
Отношение находится в НФБК тогда и только тогда, когда каждый его детерминант является потенциальным ключом. Для проверки принадлежности отношения к НФБК необходимо найти все его детерминанты и убедиться в том, что они являются потенциальными ключами. Детерминантом является один атрибут или группа атрибутов, от которой полностью функционально зависит другой атрибут.
Различие между ЗНФ и НФБК заключается в том, что функциональная зависимость АВ допускается в отношении ЗНФ, если атрибут В является первичным ключом, а атрибут А не обязательно является потенциальным ключом. Тогда как в отношении НФБК эта зависимость допускается только тогда, когда атрибут А является потенциальным ключом. Следовательно, нормальная форма Бойса-Кодда является более строгой версией формы ЗНФ, поскольку каждое отношение НФБК является также отношением ЗНФ, но не всякое отношение ЗНФ является отношением НФБК.
Ситуация, когда отношение будет находиться в 3NF, но не в BCNF, возникает, например, при условии, что отношение имеет два (или более) потенциальных ключа, которые являются составными и имеют общий атрибут. На практике такая ситуация встречается достаточно редко, для всех прочих отношений 3NF и BCNF эквивалентны.
Отношение находится в нормальной форме Бойса-Кодда (НФБК), если оно находится в 3НФ, и в нем отсутствовали зависимости ключевых атрибутов от неключевых атрибутов
Пример. Пусть имеется переменная отношения СЛУЖ_ПРО_ЗАДАН1 {СЛУ_НОМ, СЛУ_ИМЯ, ПРО_НОМ, СЛУ_ЗАДАН} с множеством FD, показанным на рисунке 1 слева.
В отношении СЛУЖ_ПРО_ЗАДАН1 служащие уникально идентифицируются как по номерам удостоверений, так и по именам. Следовательно, существуют FD СЛУ_НОМСЛУ_ИМЯ и СЛУ_ИМЯСЛУ_НОМ. Но один служащий может участвовать в нескольких проектах, поэтому возможными ключами являются {СЛУ_НОМ, ПРО_НОМ} и {СЛУ_ИМЯ, ПРО_НОМ}. В таблице ниже показано возможное значение переменной отношения СЛУЖ_ПРО_ЗАДАН1.
СЛУ_НОМ |
СЛУ_ИМЯ |
ПРО_НОМ |
СЛУ_ЗАДАН |
2934 |
Иванов |
1 |
A |
2941 |
Иваненко |
2 |
B |
2934 |
Иванов |
2 |
B |
2941 |
Иваненко |
1 |
A |
Переменная отношения СЛУЖ_ПРО_ЗАДАН1 может быть приведена к BCNF путем одной из двух декомпозиций: СЛУЖ_НОМ_ИМЯ {СЛУ_НОМ, СЛУ_ИМЯ} и СЛУЖ_НОМ_ПРО_ЗАДАН {СЛУ_НОМ, ПРО_НОМ, СЛУ_ЗАДАН} с множеством FD и значениями, показанными на рисунке слева и в таблицах ниже, и СЛУЖ_НОМ_ИМЯ {СЛУ_НОМ, СЛУ_ИМЯ} и СЛУЖ_ИМЯ_ПРО_ЗАДАН {СЛУ_ИМЯ, ПРО_НОМ, СЛУ_ЗАДАН} (FD и значения результирующих переменных отношений выглядят аналогично).
Очевидно, что каждая из декомпозиций устраняет трудности, связанные с обновлением отношения СЛУЖ_ПРО_ЗАДАН1.
Значение переменной отношения СЛУЖ_НОМ_ИМЯ |
|
Значение переменной отношения СЛУЖ_ПРО_ЗАДАН | |||
СЛУ_НОМ |
СЛУ_ИМЯ |
|
СЛУ_НОМ |
ПРО_НОМ |
ПРО_ЗАДАН |
2934 |
Иванов |
|
2934 |
1 |
A |
2941 |
Иваненко |
|
2941 |
2 |
B |
|
|
|
2934 |
2 |
B |
|
|
|
2941 |
1 |
A |