Правила ссылочной целостности
Внешний ключ подчиненной таблицы можно рассматривать как ссылку на строку главной таблицы с таким же значением первичного ключа. Отсюда вытекает основное правило ссылочной целостности – все значения внешнего ключа должны быть согласованы с соответствующими значениями первичного ключа. Применительно к нашему примеру это означает, что в таблице контактные телефоны не должно быть кодов клиентов, которых нет в основной таблице клиенты. Ссылочная целостность должна жестко контролироваться при выполнении любых операций с данными таблиц (правило Кодда №12). Правило Кодда №7 устанавливает 4 таких операции – извлечение, вставка новых строк, удаление строк и изменение (обновление) существующих строк (операции select, insert, delete, update). Операция извлечения не может нарушить целостности, т.к. не изменяет данные. Рассмотрим основные стратегии поддержки ссылочной целостности для остальных операций. Операция вставки критична только для подчиненной таблицы (можно добавить нового клиента, у которого нет телефона, но нельзя добавить телефон несуществующего клиента), поэтому вставка новых строк в подчиненную таблицу должна проверяться на согласованность значений внешнего ключа. Удаление строк подчиненной таблицы, наоборот, абсолютно безопасно (можно удалить любой телефон, не нарушив ссылочной целостности). Однако, удаление строк главной таблицы при наличии связанных строк в подчиненной таблице непременно приведет к нарушению ссылочной целостности, чего допустить нельзя ни в коем случае. Здесь имеется две основных стратегии удаления · запрет удаления таких строк (ограничение удаления - restrict) · каскадное удаление строки главной таблицы вместе со всеми связанными строками подчиненной таблицы (удаление каскадом - cascade).
В нашем конкретном примере с телефонами разумным решением будет каскадное удаление (при удалении клиента автоматически должны удаляться и все строки с его телефонами). В реальной практике чаще применятся запрет удаления строк при наличии на них хотя бы одной ссылки из других таблиц. Отметим, что ни одна СУБД не позволит удалить всю таблицу целиком, если имеется хотя бы одна другая таблица, которая на нее ссылается. Изменение (обновление) значений внешнего, а особенно первичного ключа заполненной базы данных обычно не происходит, однако стратегия каскадного обновления некоторыми СУБД поддерживается. В следующей главе пособия реляционная модель данных будет определена более формально. Наличие формального математического описания считается одним из достоинств реляционной модели. Реляционная модель Цель изучения данной главы – освоить реляционную модель данных как математическую основу языка SQL. После изучения главы вы будете: · знать реляционную терминологию, понимать определения основных реляционных терминов · знать операции реляционной алгебры, отличия реляционной алгебры от реляционного исчисления, понимать логику разработки запросов в терминах реляционной алгебры и реляционного исчисления · знать правила поддержки целостности данных при выполнении основных операций манипулирования данными. В реляционной модели выделяют три части: · Структурная часть · Манипуляционная часть · Целостная часть Рассмотрим каждую из них подробнее.
Читайте также: I. Правила аускультации легких. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|