- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.5. Метод er - проектирования
- •1.5.1. Сущности и связи
- •1.5.2. Степень связи
- •1.5.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.5.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.5.5. Последовательность проектирования бд при использовании er- метода
- •1.5.5. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.5. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.5. Изменение данных
- •3.4.7. Удаление данных
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 70
- •Часть 3. Разработка приложений для работы с базами данных 113
1.5.2. Проблемы, вызываемые использованием универсального отношения
Существует несколько причин, почему не следует использовать универсальное отношение в качестве единственного в БД. Различают три специфические проблемы: проблема, связанная с обновлением (модификацией) данных в БД; проблема, обусловленная необходимостью удаления кортежей; проблема, обусловленная необходимостью включения новых кортежей. Выделенные проблемы обычно называют аномалиями обновления, удаления и вставки, понимая под аномалией отклонение от нормы.
Проблема вставки
Если появляется новый студент еще не закончивший изучение дисциплины, для него необходимо включить в БД кортеж с нулевыми (пустыми) значениями атрибутов Дисциплина, Семестр и Оценка. Нулевых значений следует избегать. Следовательно, включение в БД нового студента невозможно вплоть до завершения им изучения дисциплины.
На рис.5.4,а показан пример того, как будет выглядеть отношение УСПЕВАЕМОСТЬ в случае принудительного включения в него информации о студенте, не завершившем изучение ни одной дисциплины.
УСПЕВАЕМОСТЬ
Сном |
Сфам |
Кном |
Тном |
Дисц. |
Сем. |
Оценка |
111 |
Серов |
120 |
2135 |
ВМ |
3 |
2 |
111 |
Серов |
120 |
2135 |
ТМ |
2 |
4 |
111 |
Серов |
120 |
2135 |
Физика |
3 |
5 |
222 |
Перов |
211 |
3257 |
ВМ |
3 |
4 |
222 |
Перов |
211 |
3257 |
Химия |
1 |
5 |
222 |
Перов |
211 |
3257 |
ВТ |
4 |
4 |
333 |
Иванов |
301 |
3589 |
ТМ |
2 |
5 |
110 |
Поляков |
201 |
3290 |
ВМ |
1 |
4 |
444 |
Белов |
401 |
5452 |
|
|
|
а)
111 Серов
444 Белов
б)
Рис.5.4. а- результат вставки записи с пустыми полями; б- ошибочный результат выполнения запроса, вызванный наличием пустых полей.
Пустые символьные строки представляются пробельными полями (Дисциплина и Семестр), в то время как нулевые численные значения в поле Оценка интерпретируются как 0.
Рис.5.4,б иллюстрирует возможные последствия появления 0.0 при отсутствии информации. Получен ответ на запрос "Выдать список Сном и Сфам всех студентов, получивших хотя бы одну оценку ниже 3.0". В число таких студентов попал Белов, хотя он не закончил изучение ни одной дисциплины.
Проблемы обновления
В отношении УСПЕВАЕМОСТЬ большое число избыточных данных. Она характеризуется как явной, так и неявной избыточностью. Явная избыточность заключается в том, что фамилия данного студента, номер комнаты и номер телефона могут появляться в отношении несколько раз.
Неявная избыточность обнаруживается в том, что один и тот же номер телефона имеют все студенты, живущие в одной комнате.
Как в первом, так и во втором случае обновление информации, связанное с внесением изменений может приводить к ошибкам. Например, если изменился номер телефона в комнате, то это изменение необходимо выполнить во всех кортежах, в которых имеется изменяемый номер телефона. Если по той или иной причине этого не сделать, то в базе данных возможна ситуация, когда одна и та же комната будет иметь разные номера телефонов.