Правила целостности объектов
Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Правила целостности объектов





Осложнения при обеспечении целостности данных могут быть вызваны неопределенными или отсутствующими значениями, например, каталоги произведения искусства неизвестен автор картины, или в БД «школа» есть дети-сироты, соответсвенно у них не заполнен реквизит родители.

Для решения данной проблемы отсутствия значений британский ученый Эдгар Франк Кодд предложил ввести специальные метки, которые назвал Null-значениями, он определил их следующим образом: если данный кортеж имеет Null значение данного атрибута, то это означает, что в нем значение атрибута отсутствует. Это не тоже что числовой ноль или пробел, это вообще не значение, а только метка обозначающая отсутствие любого значения. Некоторые специальсты по реляционным БД, например, К.Дейт считают что Null-значения не нужны и даже вредны, т.к это нарушает целостность данных но тем не менее большинство современных реляционных БД поддерживают Null-значения.

С использованием Null-значений связанно правило целостности объектов:

Не один элемент первичного ключа базового отношения не может быть Null-значением, это правило объясняется следующим:

1) Картежы отношений соответствуют объектам реального мира, а по определению эти объекты различимы, т.е некоторым образом опознаваемы.

2) Первичные ключи выполняют функцию уникальной идентификации объектов.

3) Если невозможно идентифицировать объект, то нельзя сказать существует ли он вообще.

Уточнение этого правила:

  • Данное правило касается только базовых отношений, т.е не затрагивает вычисляемые и производные отношения.
  • Данное правило применимо только для первичных ключей, для альтернативных ключей Null-значения могут быть или запрещены или разрешены.

Как используются Null-значений для внешних ключей.



  1. Когда нет данных, т.е нет соответствующего картежы в ссылочном отношении, например нет данных о родителях ученика.
  2. При каскадном удалении, например, на факультете расформировали одну из групп, а студентов этой группы распределяют в другие группы, но пока точно неизвестно в какие, тогда при каскадном удалении этой группы из таблицы Группа удалятся и все студенты этой группы из таблицы студенты, но нам этого не нужно, поэтому нужно временно заменить значение групп в отношении Студенты на Null-значение. Для избежания Null-значений можно использовать значение по умолчанию, например в БД Факультет для атрибута адрес используется значение по умолчанию «не известно».

Понятие внешнего ключа

 

Внешний ключ группа ссылается на первичный ключ код группы отношения Группа, причем в отношении студент, значение атрибута Группа допустимо только в том случае, если такое значении имеется в качестве первичного ключа отношения Группа. Внешний ключ существет для непротиворечивости данных как с внешним миром, так и внутри самой БД, т.е значение внешнего ключа не может быть таким, которого нет среди значения первисного ключа связанной таблицы.

В реляционной БД возможна связь внешнего ключа не только с первичным, но и с альтернативным ключом, но нельзя создавать дублирующиеся связи и с первичным и с альтернативным ключами, чтобы избежать избыточности данных.

Пусть R2 – базовое отношение некоторой БД, тогда внешний ключ отношения R2 – это подмножество множества атрибутовR2 такое, что:

  • существует базовое отношение R1, содержащее потенциальный ключ
  • каждое значение внешнего ключа в текущем значении R2 всегда совпадает со значением потенциального ключа некоторого кортежа в текущем значении отношения R1.

Следствие из определения:

1) по определению каждое значение внешнего ключа должно является значением соответствующего потенциального ключа, но обратное не требуется, например, может существовать кружок, который пока никто не посещает.

2) Внешний ключ будет составным тогда и только тогда, когда соответствующий потенциальный ключ также будет составным, например, в БД Факультет есть отношение Расписание. В отношении Расписание присутствует составной внешний ключ Группа, Дисциплина, Преподаватель.

 

3) Каждый отрибут, входящий в данный внешний ключ должен быть определен на том же домене, что и соответствующий атрибут соответствующего потенциального ключа.

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.