
- •Содержание
- •1.1. Основные понятия
- •1.2. Компоненты БнД
- •1.3. Классификация БнД и бд
- •1.4. Этапы проектирования бд
- •1.5. Взаимосвязь этапов проектирования бд
- •Вопросы для самоконтроля
- •Раздел 2. Проектирование баз данных. Тема 2. Инфологическое моделирование (начало)
- •2.1. Необходимость инфологического моделирования
- •2.1.1. Виды ограничений целостности
- •2.1.2. Причины, приводящие к нарушению ограничений целостности
- •2.2. Описание объектов и их свойств
- •Тема 3. Инфологическое моделирование (окончание)
- •3.1. Описание связей между объектами.
- •3. 2. Описание сложных объектов
- •Вопросы для самоконтроля
- •Тема 4. Даталогическое проектирование
- •4.1. Общие сведения
- •4.2. Подход к даталогическому проектированию
- •4.3. Определение состава бд
- •4.4. Разновидности даталогических моделей
- •Вопросы для самоконтроля
- •Тема 5. Реляционная даталогическая модель базы данных
- •5.1. Основные понятия
- •5.2. Цели проектирования рбд
- •5.2.1. Возможность хранения всех необходимых данных в бд
- •5.2.2. Исключение избыточности данных
- •5.2.3. Сведение числа хранимых в бд отношений к минимуму
- •5.2.4. Нормализация отношений
- •Вопросы для самоконтроля
- •Тема 6. Метод проектирования реляционной базы данных на основе илм
- •Вопросы для самоконтроля
- •Тема 7. Пример проектирования реляционной базы данных на основе илм
- •7.6. Определение состава бд
- •7.7. Определение отношений, включаемых в бд
- •7.8. Описание логической структуры бд на языке субд (схема бд)
- •7.9. Сравнение спроектированной рбд с однотабличной бд
- •Вопросы для самоконтроля
- •Раздел 3. Описание информационных потребностей пользователей базы данных. Тема 8. Информационные потребности пользователей базы данных.
- •8.1. Типы и языки запросов
- •8.2. Реляционная алгебра (алгебра отношений)
- •8.2.1. Проекция
- •8.2.2. Выборка
- •8.2.3. Соединение
- •8.2.4. Объединение
- •8.2.5. Пересечение
- •8.2.6. Вычитание
- •8.2.7. Умножение
- •8.2.8. Деление
- •8.3. Примеры запросов на реляционном языке
- •Вопросы для самоконтроля
- •Раздел 4. Использование языкаSql для работы с базами данных. Тема9. Структурированный язык запросов sql
- •9.1. Стандарт и разновидности языка sql
- •9.2. Краткое введение в sql
- •Тема 10. Основные элементы языка sql. Использование языка sql для выборки данных
- •10.1. Оператор select
- •Тема 11. Отбор строк из таблиц. Условия поиска строк
- •Вопросы для самоконтроля
- •Тема 12. Сортировка таблиц
- •Тема 13. Использование псевдонимов для обозначения таблиц базы данных. Самосоединение таблиц. Итоговые запросы и агрегатные функции
- •Вопросы для самоконтроля
- •Тема 14. Запросы с группировкой
- •Тема 15. Вложенные запросы
- •Вопросы для самоконтроля
- •Тема 16. Изменение данных в базе данных
- •16.1. Корректировка таблиц бд
- •16.2. Создание объектов бд
- •16.3. Создание представлений
- •Вопросы для самоконтроля
- •Рекомендуемая литература
2.1.2. Причины, приводящие к нарушению ограничений целостности
Нарушение целостности данных может возникнуть в результате ошибок при вводе данных или выполнении иных корректировок, а также в результате сбоев в работе вычислительной системы.
Нарушение целостности может возникнуть и при выполнении операций реляционной алгебры (проекция, соединение).
Для предотвращения нарушения семантической целостности при выполнении реляционных операций нужно, чтобы соблюдались следующие правила.
1. Отношение может “проецироваться”, если: 1) отношение находится в 3НФ и 2) результирующее отношение содержит тот же самый ключ или эквивалентный возможный ключ.
2. Отношения А и В могут соединяться по атрибутам элементов данных A.x и B.y, если: 1) отношения А и В находятся в 3НФ и 2) A.x является атрибутом в А (включая ключевой атрибут) и B.y является ключом или возможным ключом в В.
К сожалению, большинство существующих в настоящее время СУБД не контролирует семантическую целостность при выполнении операций реляционной алгебры, и этот контроль возлагается на администратора БнД или конечного пользователя.
Предположим, что в ПО имеет место следующая ситуация: 1) предприятие имеет несколько корпусов, которые находятся в разных местах, т.е. степень связи между сущностями “предприятие” и “место расположения” - 1:N; 2) служащий работает на каком-либо предприятии (степень связи “служащий” - “предприятие” - М:1). Для отображения этой ПО в БД созданы два отношения: СЛУЖАЩИЕ (ФИО, код_предприятия, должность) и РАСПОЛОЖЕНИЕ_ПРЕДПРИЯТЯ (код_предприятия, адрес). Третье отношение отображает информацию о ПРЕДПРИЯТИИ в целом. Если выполнить операцию соединения этих двух отношений по условию равенства кодов предприятий, то полученное в результате отношение будет семантически неверно, так как, несмотря на то, что корпуса предприятия находятся по разным адресам, каждый из служащих работает только в одном определенном месте. Если бы степень связи “предприятие” - “место расположения” была 1:1, то никаких проблем при выполнении операции соединения не возникло бы.
Нарушение целостности при выполнении операций с таблицами БД может возникнуть и в других ситуациях. Пусть, например, имеются две таблицы X и Y, и в результате операции соединения получается новая таблица Z. После этого делается попытка в таблицу Z внести новые данные или скорректировать имеющиеся. В большинстве случаев нельзя заранее определить, какие изменения надо внести в исходные таблицы X и Y, чтобы сохранилась целостность всей БД. Поэтому обычно таблицу Z обновлять не разрешается.
Во многих системах, когда подобные таблицы возникают в результате выполнения запросов, они автоматически защищаются от обновления, и при их просмотре на экране дисплея высвечивается сообщение “Только для просмотра”. Если СУБД не контролирует подобные ситуации или таблицы были созданы такими способами, что система не установит наличие взаимосвязи между ними, то обеспечение целостности возлагается на проектировщика.
Наличие в БД исходных и соединенной таблиц приводит к дублированию данных, а любое явное или неявное дублирование требует специальных мер по обеспечению целостности данных.
Реализация контроля за соблюдением ОЦ требует в некоторых случаях больших затрат. Если это возможно, то надо задавать условия, когда может быть нарушена целостность, и проверять эти условия только в случаях, которые могут привести к нарушению ОЦ. Например, если имеется условие, что зарплата руководителя не может быть ниже зарплаты подчиненного ему служащего, то увеличение зарплаты руководителя не может нарушить целостность и проверку БД в этом случае проводить не надо.