Целостность БД Понятие целостности является одним из основополагающих в теории БД. Любая БД содержит в себе информацию об объектах реального мира, находящихся в связи между собой Под целостностью БД понимается соответствие модели предметной области, хранимой в БД, объектам реального мира и их связям между собой в каждый момент времени. Целостность бывает физической и логической Поддержание целостности БД включает проверку целостности и ее восстановление в случае обнаружения противоречий Целостность БД Целостность БД Физическая Логическая Возможность физического доступа к данным в любой момент времени Ссылочная целостность: обеспечение корректной модификации взаимосвязанных отношений Структурная целостность: структуры данных должны удовлетворять свойствам реляционных отношений Языковая целостность: поддержка стандарта SQL Семантическая целостность: реализация механизма ограничений целостности Целостность БД Ссылочная целостность Действия при модификации взаимосвязанных отношений Кортежи подчиненного отношения должны уничтожаться при удалении кортежа основного отношения, связанного с ними Кортежи основного отношения можно удалять только при отсутствии связанных с ними кортежей подчиненного отношения Кортежи подчиненного отношения при удалении кортежа основного отношения, связанного с ними, не удаляются, но модифицируются таким образом, что на месте ключа родительского отношения устанавливается значение NULL Ограничения целостности Ограничения целостности атрибута Значение по умолчанию Ограничения целостности кортежа Ограничения целостности отношения Уникальность Тип значений Формат значений Признак определенного значения Указание на домен Диапазон значений Ограничения целостности связи между отношениями Ограничения целостности алгоритмических зависимостей Ограничения целостности на запрет обновлений Целостность БД Ограничение целостности связи: значение внешних ключей подчиненной таблицы всегда должны соответствовать одному из значений первичных ключей главной таблицы Ограничения целостности взаимосвязанных отношений Ограничение по существованию: для существования данного объекта в данной таблице необходимо, чтобы он был связан с определенным объектом в другой таблице Обратная связь по существованию: запись в основной таблице не может существовать без связанных с ней записей в подчиненной таблице Кардинальность связи: число элементов в связи должно находиться в некотором диапазоне – закрытом или открытом Целостность БД Ограничение по существованию Кафедры №_каф Название Заведующий 15 Экономика Морозов В.М. 23 Физика Григорьев В.А. 24 Химия Федотова Л.И. Сотрудники Таб_№ ФИО Кафедра 234 Глотов С.Ю. 15 246 Проклова М.Ы. 15 358 Логунов М.П. 24 Для существования записи в таблице “Сотрудники” необходимо, чтобы она была связана с одной из записей в таблице “Кафедры” Целостность БД Ограничение по связи Кафедры №_каф Название Заведующий 15 Экономика Морозов В.М. 23 Физика Григорьев В.А. 24 Химия Федотова Л.И. Сотрудники Таб_№ ФИО 234 Глотов С.Ю. 246 Проклова М.Ы. 358 Логунов М.П. Кафедра 15 NULL 24 Запись в таблице “Сотрудники” может быть не связана ни с одной записью в таблице “Кафедры” Категории контроля целостности Контроль целостности Одномоментный Отложенный Режим контроля целостности Оперативный Аудиторный Описание ограничения целостности Явное Неявное Ограничения диапазонов значений Односторонние диапазоны: фиксация либо верхней, либо нижней границы значений Открытые диапазоны Двусторонние диапазоны: фиксация верхней и нижней границ значений Закрытые диапазоны Открытый односторонний диапазон: в библиотеку записывают читателей не моложе 17 лет Открытый двусторонний диапазон: база данных не содержит информацию о несовершеннолетних и пенсионерах Закрытый двусторонний диапазон: на военную службу призывают граждан в возрасте от 18 до 37 лет Целостность БД Операторы SQL, обеспечивающие ограничения целостности UNIQUE – ограничение на уникальность имени DEFAULT – ограничение на значение по умолчанию [NOT] NULL – ограничение на задание определенного значения PRIMARY KEY – ограничение на первичный ключ FOREIGN KEY – ограничение на внешний ключ REFERENCES – ключевое слово для ссылки на главную таблицу CHECK – условие проверки на допустимость значения CONSTRAINT – ключевое слово, используемое для именования ограничений Обозначения ограничений: CONSTRAINT PK – для ограничения на первичный ключ CONSTRAINT FK – для ограничения на внешний ключ CONSTRAINT CK – для проверочного ограничения CONSTRAINT U – для ограничения уникальности CONSTRAINT DF – для ограничения значения по умолчанию