
- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
6.3.4. Нормальная форма Бойса-Кодда
Обычно третьей нормальной формы вполне достаточно для того, чтобы база данных считалась оптимизированной. Форма Бойса-Кодда решает более узкую проблему, когда часть составного первичного ключа зависит от значения другого столбца и этот столбец сам по себе не может быть первичным ключом, но может быть использован в качестве части другого первичного ключа.
В этом случае:
отношение имеет два (или более) потенциальных ключа (детерминанта1),
два потенциальных ключа являются сложными,
ключи перекрываются (т.е. имеют, по крайней мере, один общий атрибут).
Детерминант при этом является множеством атрибутов.
Отношение находится в нормальной форме Бойса-Кодда, если оно находится в третьей нормальной форме и каждый детерминант отношения является возможным ключом отношения.
Для приведения отношения к нормальной форме Бойса-Кодда надо разделить исходное отношение на части, выделив в отдельное отношение атрибуты, меняющиеся в составе потенциальных ключей.
Пусть, например, имеется отношение со схемой:
(Номер зач. книжки, Идентификатор, Дисциплина, Дата, Оценка),
отражающее сдачу студентом экзаменов в сессию, в том числе и пересдачи по одной и той же дисциплине. Первичным ключом отношения может быть
ключ (Номер зач. книжки, Дисциплина, Дата) или
ключ (Идентификатор, Дисциплина, Дата).
Неизбежного повторения данных можно избежать, разделив это отношение на два других со схемами:
(Номер зач. книжки, Дисциплина, Дата, Оценка) и
(Номер зач. книжки, Идентификатор).
Другой возможный вариант приведения к нормальной форме Бойса-Кодда:
(Идентификатор, Дисциплина, Дата, Оценка) и
(Идентификатор, Номер зач. книжки)
Оба варианта приведения равноценны. Рекомендуется выполнить оба варианта приведения самостоятельно и оценить результаты.
6.3.5. Четвертая и пятая нормальные формы
Четвертую нормальную форму применяют лишь к промежуточным таблицам, создаваемым для преобразования отношений «многие ко многим». Таблица нарушает требования четвертой нормальной формы, если служит мостом между более чем двумя таблицами.
Пятая нормальная форма называется нормальной формой с проецированием соединений. Она используется при разрешении трех и более сущностей, которые связаны друг с другом отношениями m:n.
Разрешение этих отношений при помощи связующей сущности может привести к получению дефектной модели, в которой могут появиться несуществующие отношения (аномалия проецирования соединений).
Поскольку в подавляющем большинстве случаев для решения реальных задач достаточно третьей нормальной формы, четвертая и пятая нормальные формы подробно не рассматриваются.
6.3.6. Денормализация
Следствием полной нормализации является переизбыток таблиц. Внешняя избыточность значений устранена, зато появилось множество значений, реализующих внутренние связи между таблицами. Кроме того, возникают дополнительные затраты времени на выполнение операций объединения, что влияет на производительность. В свое время экономия дискового пространства была оправданной, однако сегодня большее значение имеет скорость вычислений.
Нормализация – это процесс логической группировки данных, направленный на то, чтобы приложению не нужно было заниматься синхронизацией дублирующихся значений. ("По одному факту в одном месте").
Денормализация служит противоположным целям ради повышения производительности. Денормализация – это процесс достижения компромиссов в нормализованных таблицах посредством намеренного введения избыточности в целях увеличения производительности. К денормализации нельзя подходить легкомысленно. Выполняя денормализацию, вы берете на себя обязанность поддерживать целостность базы данных программным путем. В большинстве случаев на это пойти легко, потому что в приложениях имеются определенные средства контроля целостности.
В ряде случаев к денормализованным таблицам можно добавлять первичные ключи в виде полей-счетчиков. В результате индексы будут состоять из целых чисел, а не строк, что приведет к существенному ускорению объединений таблиц.
Для упрощения работы в денормализованных таблицах могут содержаться внутренние таблицы (их можно было бы при нормализации выделить в отдельные таблицы), позволяющие обращаться к записям по одним полям, а выводить ‑ другие (например, марка изделия и его полное наименование).
Основные типы денормализации:
- нисходящая денормализация (предполагается перенос атрибута из родительской таблицы в дочернюю). Единственный выигрыш заключается в том, что можно избежать лишней операции соединения;
- восходящая денормализация (информация из дочерней таблицы сохраняется в родительской в дополнительном столбце);
- внутритабличная денормализация. (выполняется в пределах одной таблицы добавлением лишних столбцов). Значения лишних столбцов могут вычисляться, но если поиск нужен по значению лишнего столбца, то для организации ответов на запросы лучше иметь уже готовые столбцы. (Например, если строка содержит два числовых столбца X и Y, то Z=X*Y легко вычислить во время выполнения. Однако если для запроса необходимо осуществить поиск по Z, то можно сохранить избыточные значения Z в столбце, построить индекс по Z и запросы будет использовать этот индекс).