Ограничения целостности
В любой момент времени БД содержит некую определенную конфигурацию значений данных, и предполагается, что эта конфигурация отражает действительность, то есть является моделью реального мира.
Например, кортеж отношения P (Детали) — деталь Р7 весит минус 25 кг —не имеет смысла, поскольку вес в реальном мире не может быть отрицательным. Следовательно, определение БД нуждается в расширении, включающем правила целостности, назначение которых в том, чтобы информировать СУБД о разного рода ограничениях реального мира, а значит и предотвращать появление таких недопустимых конфигураций значений.
Большинство БД подчиняется очень многим специальным правилам целостности, в том смысле, что они применяются к одной конкретной БД. Например, (1) Вес деталей должен быть больше нуля, (2) Значения статуса поставщиков должны быть в диапазоне 1-100, (3) Статус поставщиков из города Красноярск должен быть равен 40.
Однако в реляционной модели есть два особых общих правила целостности, которые применяются к любой БД. То есть во 2-й части реляционной модели определяются два ограничения, которые должны выполняться в любой реляционной БД:
(1) целостность сущностей (связана с первичным ключом),
(2) ссылочная целостность (связана с внешними ключами).
Определение: Пусть R — некоторое отношение. Тогда потенциальный ключ К для R — это подмножество множества атрибутов R, обладающее свойствами:
(1) Свойством уникальности — нет двух различных кортежей в R с одинаковым значением K.
(2) Свойством неизбыточности — никакое из подмножеств К не обладает свойством уникальности (т.е. настоящий потенциальный ключ не должен включать лишних атрибутов для идентификации уникальности.).
Любое отношение имеет по крайней мере один потенциальный ключ.
Потенциальный ключ, состоящий из одного атрибута, называется простым. Например, в отношении S (Поставщики) потенциальный ключ — это уникальный номер поставщика {S#}.
Потенциальный ключ, состоящий из более чем одного атрибута, называется составным.
Отношение может иметь несколько потенциальных ключей. Традиционно, один из потенциальных ключей объявляется первичным, а остальные — альтернативными.
PS:
Потенциальные ключи обеспечивают основной механизм адресации на уровне кортежей в реляционной системе. Следовательно, единственный гарантируемый системой способ точно указать на какой-нибудь кортеж — это указать значение некоторого первичного ключа. Например, S# — первичный ключ, тогда с помощью выражения S WHERE S# = ‘S3’ мы получим не больше одного кортежа. CITY — не первичный ключ и с помощью выражения S WHERE CITY = ‘КАНСК’ мы получим в общем случае количество кортежей, которое нельзя предсказать. Таким образом, первичные ключи имеют такое же фундаментальное значение для успешной работы реляционной системы, как адресация основной памяти для успешной работы компьютера.
Дата добавления: 2016-06-24; просмотров: 550;