Условия целостности данных
Чтобы информация, хранящаяся в БД была однозначной и непротиворечивой и сохраняла свою информативность, в реляционной модели устанавливаются некоторые ограничительные условия. Ограничительные условия – это правила, определяющие возможные значения данных. Они обеспечивающие логическую основу для поддержания корректности значений данных и позволяют свести к минимуму ошибки, возникающие при обновлении и обработке. Важнейшими ограничениями целостности данных являются:
· категорийная целостность;
· ссылочная целостность.
Ограничение категорийной целостности заключается в следующем. Кортежи отношения представляют в БД элементы определенных объектов реального мира, в соответствии с терминологией реляционных СУБД, категорий. Первичный ключ таблицы должен однозначно определять каждый кортеж и, следовательно, каждый элемент категории. Нарушение категорийной целостности возникает при попытке внести в отношение кортежи с неопределенным значением первичного ключа, т.е. можно сказать неизвестной категории. Поэтому картеж не может быть занесен в БД до тех пор, пока не будут определены все атрибуты ее первичного ключа.
Ограничения, накладываемые на внешние ключи для обеспечения целостности данных, называются ссылочной целостностью.
Другими словами, если две таблицы связаны между собой, то внешний ключ дочерней таблицы должен содержать только те значения, которые уже имеются среди значений первичного ключа родительской таблицы, в противном случае будет нарушено условие ссылочной целостности данных. Для соблюдения ссылочной целостности при вставке новых кортежей или модификации значений внешнего ключа в существующих кортежах, необходимо следить за корректностью значений внешнего ключа. Обычно СУБД следит за уникальностью значений первичного ключа и корректностью значений внешних ключей, следовательно, за котегорийной и ссылочной целостностью.
Правила сохранения ссылочной целостности могут выбираться разработчиком в зависимости от предметной области разрабатываемой БД и возможностей СУБД.
При удалении кортежей из отношения, на которые имеется ссылка, можно использовать один из трех вариантов, каждый из которых поддерживает ссылочную целостность:
· запрещать удаление кортежа, на который существует ссылка в подчиненном отношении (в этом случае для удаления кортежа главного отношения, необходимо удалить все ссылающиеся на него кортежи, либо изменить значения их внешнего ключа);
· при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешних ключей автоматически станет неопределенным;
· (каскадное удаление) при удалении кортежа из отношения, на который имеются ссылки, в подчиненных отношениях, автоматически удаляются все ссылающиеся кортежи подчиненных таблиц.
При обновлении значений в первичном ключе кортежа главной таблицы могут использоваться подобные правила:
· запрещать изменения значений в первичном ключе, на который существуют ссылки;
· (каскадное обновление) при изменении значений в первичном ключе главной таблицы, на который имеются ссылки, автоматически произойдет обновление значений внешних ключей ссылающихся на него кортежей.
Дата добавления: 2015-11-18; просмотров: 1024;