- •1. Понятие базы данных и банка данных.
- •1.1 Основные определения.
- •1.2 Составляющие банка данных.
- •1.3 Цели использования банков данных.
- •1.4 Трехуровневая архитектура базы данных.
- •1.5 Основные функции субд.
- •1.5.1 Управление данными во внешней памяти.
- •1.5.2 Управление оперативной памятью.
- •1.5.3 Управление транзакциями
- •1.5.4 Журнализация
- •1.5.5. Поддержка языков бд
- •2. Модели данных.
- •2.1 Ранние модели данных.
- •2.1.1 Иерархическая модель данных.
- •2.1.2 Сетевая модель данных.
- •2.2 Реляционная модель данных.
- •2.4 Объектная модель данных.
- •2.5 Нереляционные субд.
- •3. Реляционная модель данных.
- •3.1 Структура и основные понятия реляционной модели данных.
- •3.2 Правила Кодда для реляционных субд.
- •3.3 Реляционная алгебра и реляционное исчисление.
- •3.3.1 Реляционная алгебра.
- •3.3.2 Реляционное исчисление.
- •4. Проектирование баз данных.
- •4.1 Проектирование при помощи нормализации.
- •4.1.1 Первая нормальная форма.
- •4.1.2 Вторая нормальная форма.
- •4.1.3 Третья нормальная форма и нормальная форма Бойса-Кодда.
- •4.1.4 Четвертая нормальная форма.
- •4.1.5 Пятая нормальная форма.
- •4.2 Модель «сущность-связь».
- •4.2.1 Появление и развитие метода. Современное состояние.
- •4.2.2 Метод Баркера.
- •4.2.3 Метод idef1x.
- •4.2.4 Получение схемы базы данных из модели «сущность-связь».
- •4.3 Денормализация базы данных.
- •5. Язык sql.
- •5.1 Появление и развитие языка.
- •5.2 Современная структура языка.
- •5.3 Язык определения данных.
- •5.4 Язык манипулирования данными.
- •5.4.1 Запросы insert, update, delete.
- •5.4.2 Запрос select.
- •6. Управление транзакциями.
- •6.1 Понятие транзакции. Основные свойства транзакций.
- •7.2 Восстановление.
- •6.3 Параллельность.
- •6.3.1 Проблемы параллельных транзакций и уровни изолированности.
- •6.3.2 Блокировки данных.
- •6.4 Поддержка транзакции в языке sql и библиотеках ado.Net.
- •Рекомендуемая литература
4.1.1 Первая нормальная форма.
Переменная отношения находится в первой нормальной форме (1НФ) тогда и только тогда, когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.
Собственно говоря, любое отношение, соответствующее принципам реляционной модели (в первую очередь, принципу атомарности атрибутов), находится в 1НФ.
4.1.2 Вторая нормальная форма.
Переменная отношения находится во второй нормальной форме (2НФ) тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее потенциального ключа.
Потенциальный ключ – минимально возможное множество атрибутов отношения, позволяющее однозначно определить конкретный кортеж. Один из потенциальных ключей выбирается в качестве первичного, но в отношении может иметься несколько потенциальных ключей, помимо первичного ключа.
Неприводимость зависимости означает, что зависимость существует только для всего потенциального ключа, и не существует для его части, то есть нельзя исключить из состава потенциального ключа ни одного атрибута без того, чтобы зависимость исчезла.
Вернемся к примеру, на основе которого мы пояснили понятие функциональной зависимости. В нашем случае потенциальным ключом отношения будет первичный ключ, а именно – номер зачетной книжки студента. Поскольку потенциальный ключ состоит из одного поля, то любая зависимость от него является неприводимой. То есть, наше отношение находится в 2НФ.
4.1.3 Третья нормальная форма и нормальная форма Бойса-Кодда.
Переменная отношения находится в третьей нормальной форме (3НФ) тогда и только тогда, когда она находится во второй нормальной форме и ни один неключевой атрибут не находится в транзитивной функциональной зависимости от потенциального ключа.
Транзитивная зависимость имеет следующий вид. Предположим, что Y функционально зависит от X, а Z функционально зависит от Y. Тогда между X и Z имеется транзитивная функциональная зависимость (через Y).
Рассмотрим ситуацию все на том же примере. Очевидно, что в нашем примере со студентами и группами шифр группы зависит от номера зачетной книжки студента. В свою очередь, наименование группы зависит от шифра группы. Мы имеем дело с транзитивной зависимостью. Для ее устранения необходимо разделить отношение на два меньших: Студенты (НомерЗачетнойКнижки, Фамилия, Имя, Отчество, ДатаРождения, ШифрГруппы) и Группы (ШифрГруппы, НаименованиеГруппы). Легко видеть, что в этом случае у нас уменьшилось дублирование данных – наименование группы хранится для каждой группы однократно. Теперь наши отношения находятся в 3НФ.
Нормальная форма Бойса-Кодда (НФБК, BCNF) – это дополнительно уточненная 3НФ, для которой добавлено еще одно условие.
Определение НФБК звучит следующим образом:
Отношение находится в НФБК тогда и только тогда, когда каждая ее нетривиальная и неприводимая слева функциональная зависимость имеет своим детерминантом некий потенциальный ключ.
Нетривиальной является зависимость, в которой зависимая часть не является подмножеством детерминанта, или, для нашего случая, зависимый атрибут не входит в состав ключа. То есть, все атрибуты, не входящие в состав первичного ключа, зависят от первичного ключа, но не от его части.
