- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах.
- •2 Перечень тем ипр их наименование и объем в часах
- •3 Перечень тем контрольных работ их наименование и объем в часах
- •4. Курсовая работа, ее характеристика
- •Перечень тем курсовых работ
- •5. Литература
- •5.1 Основная
- •5.2 Дополнительная
- •6. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •7. Учебно-методическая карта дисциплины
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •Indexed р#
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •InnoDb в MySql 5.1
- •2.7.3. Сетевые структуры
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •Изучение процессов преобразования входных данных в выходные.
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.4.15. Обратное проектирование бд
- •3.4.16. Итог
- •3.5. Повышение качества бд на стадии проектирования
- •3.5.1. Памятки разработчикам бд
- •3.5.2. Показатели качества бд
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальные практические работы Индивидуальная практическая работа № 1 Общие сведения
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальная практическая работа № 2 Общие сведения
- •Указания по выбору варианта
- •Практическая часть
3.4.7. Вторая нормальная форма
Отношение находится во второй нормальной форме (2НФ), если она находится в 1НФ, и при этом любой её атрибут, не входящий в состав первичного ключа, функционально полно зависит от первичного ключа.
Функционально полная зависимость означает, что атрибут функционально зависит от всего первичного составного ключа, но при этом не находится в функциональной зависимости от какой-либо из входящих в него атрибутов (частей).
Или другими словами: в 2НФ нет неключевых атрибутов, зависящих от части составного ключа (+ выполняются условия 1НФ).
Пусть наличие компьютера у сотрудника по правилам фирмы зависит от должности (начальник – есть компьютер, подчинённый – нет компьютера). Тогда приведённое на рисунке отношение НЕ находится во 2НФ, т.к. допускает указание наличия компьютера у подчинённого.
Рисунок 3.4.7.1 – Отношение, НЕ находящееся во 2НФ
Чтобы привести это отношение ко 2НФ, нужно разбить его на два отдельных:
Рисунок 3.4.7.2 – Новая схема БД, соответствующая 2НФ
Таким образом, процедура приведения отношения ко 2НФ состоит в выполнении двух действий:
пересмотру состава ключа отношения;
созданию подчинённого отношения, в которое будут вынесены все те неключевые атрибуты исходного отношения, которые не зависят от ключа исходного отношения.
3.4.8. Третья нормальная форма
Отношение находится в третьей нормальной форме (3НФ), если она находится во второй нормальной форме (2НФ) и при этом любой её неключевой атрибут нетранзитивно зависит от первичного ключа.
Таким образом, отношение находится в 3NF тогда и только тогда, когда оно находится во 2НФ и отсутствуют транзитивные зависимости неключевых атрибутов от ключевых.
Вспомним: транзитивной зависимостью неключевых атрибутов от ключевых называется следующая: A à B и B à C, где A – набор ключевых атрибутов (ключ), B и С – различные множества неключевых атрибутов.
При решении практических задач в большинстве случаев третья нормальная форма является достаточной. Процесс проектирования реляционной базы данных, как правило, заканчивается приведением к 3НФ.
Более того: после нескольких лет работы с БД почти невозможно «заставить своё сознание» создать модель БД, не находящейся в 3НФ.
Пусть в некоторой фирме на отдел приходится один телефон. Тогда хранить информацию о телефоне в таблице с сотрудниками – бессмысленно, т.к. она будет дублироваться.
Т.о. приведённое ниже отношение НЕ находится в 3НФ.
Рисунок 3.4.8.1 – Отношение, НЕ находящееся в 3НФ
Разбив это отношение на два отдельных, мы получим 3НФ:
Рисунок 3.4.8.2 – Схема БД, соответствующая 3НФ
3.4.9. Нормальная форма Бойса-Кодда
Отношение находится в нормальной форме Бойса-Кодда (НФБК), если оно находится в 3НФ, и в нём отсутствуют зависимости ключевых атрибутов (или их частей) от неключевых атрибутов.
НФБК можно определить и так:
Детерминант – любой атрибут, от которого функционально-полно зависит некоторый другой атрибут.
Отношение находится в НФБК, если оно находится в 3НФ и каждый детерминант является возможным ключом.
Рассмотрим следующее отношение:
Рисунок 3.4.9.1 – Отношение, НЕ находящееся в НФБК
Курсовые проекты ведут несколько преподавателей по различным дисциплинам, и каждый студент закреплён за одним из них.
Студент выполняет только один проект, а одну и ту же тему проекта могут выполнять несколько студентов, но у разных преподавателей.
Возможные ключи:
Преподаватель, Тема;
Предмет, Тема.
Функциональные зависимости:
Преподаватель, Тема à Студент (от ключа)
Предмет, Тема à Студент (от ключа)
Студент à Тема.
Это отношение находится в 3НФ, так как в нём отсутствуют частичные и транзитивные зависимости неключевых атрибутов от ключа.
Однако имеется зависимость части составного ключа Тема от неключевого атрибута Студент, что порождает следующие аномалии:
существует проблема контроля непротиворечивости данных, так как изменение преподавателя по дисциплине требует просмотра всего отношения с целью поиска и изменения кортежей, содержащих данные о преподавателе этой дисциплины;
данные о студенте и его проекте не могут быть занесены в БД до тех пор, пока не назначен руководитель проекта;
и наоборот, если необходимо удалить руководителя, то будут удалены данные о руководимом им студенте.
Устранение этих аномалий достигается устранением функциональной зависимости части составного ключа от неключевого атрибута (Студент à Тема).
После преобразования мы получим такой набор отношений:
Рисунок 3.4.9.2 – Схема БД, соответствующая НФБК
Вопрос: в чём здесь будет проблема?
Ответ: теперь каждый преподаватель может вести курсовые строго по одному предмету. Если так и надо – OK. Если нет – нужно дальше перерабатывать модель БД.
Однако, есть ещё проблема:
Допустим, у нас есть отношение, в котором хранится информация о бронировании теннисных кортов. По правилам фирмы, каждому корту сопоставлен строго свой тариф.
Приведённое на рисунке отношение находится в НФБК, но позволяет допустить ошибку: вписать не тот тариф не тому корту.
Рисунок 3.4.9.3 – Отношение в НФБК, допускающее внесение ошибочных данных
Здесь по бизнес-правилам есть только один первичный ключ – {Корт, Сеанс, Тариф}.
Разобьём отношение на два так, чтобы исключить возможность возникновения только что описанной ошибки.
Рисунок 3.4.9.4 – Схема БД, не допускающая внесения ошибочных данных
Обратите внимание!
В первой таблице у нас первичный ключ: Корт + Сеанс (т.к. по здравому смыслу эта комбинация полей должна иметь уникальные значения).
Во второй таблице у нас первичный ключ: Корт + Тариф (т.к. по правилам фирмы эта комбинация полей должна иметь уникальные значения).
Но! При установлении связей осуществляется миграция ВСЕГО первичного ключа из родительской таблицы в дочернюю.
Т.о. мы получим исходное отношение + потеряем автоматическую реализацию вышеназванных правил фирмы и здравого смысла.
«Выкрутиться» можно так: связать отношения ТОЛЬКО по ключу Корт, ввести в таблицу Сеанс суррогатный первичный ключ, а выполнение правил «навесить» на триггеры или хранимые процедуры.