Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Поддержка целостности базы данных




Выделяют четыре вида поддержки целостности базы данных (содержание данного пункта скопировано из работы [19]).

1. Поддержка структурной целостности, которая трактуется как то, что реляционная СУБД (системы управления реляционными базами данных, представляющих совокупность взаимосвязанных двумерных таблиц) должна допускать работу только с однородными структурами данных типа «реляционное отношение» (п.1.3.8.1) или двумерная таблица.

В дополнение к структурной целостности необходимо рассмотреть проблему неопределенных Null значений. Неопределенное значение интерпретируется в реляционной модели как значение, неизвестное на данный момент времени. Это значение при появлении дополнительной информации в любой момент времени может быть заменено на некоторое конкретное значение. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для выявления равенства значения некоторого атрибута неопределенному применяют специальные стандартные предикаты:

<имя атрибута>IS NULL и <имя атрибута> IS NOT NULL.

Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение TRUE (Истина), а предикат IS NOT NULL – FALSE (Ложь), в противном случае предикат IS NULL принимает значение FALSE, а предикат IS NOT NULL принимает значение TRUE.

В стандарте SQL2 появилась возможность сравнивать не только конкретные значения атрибутов с неопределенным значением, но и результаты логических выражений сравнивать с неопределенным значением, для этого введена специальная логическая константа UNKNOWN. В этом случае операция сравнения выглядит как:

Логическое выражение> IS {TRUE | FALSE | UNKNOWN}

2. Поддержка языковой целостности, которая состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. He должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту. Именно поэтому доступ к информации, хранимой в базе данных, и любые изменения этой информации могут быть выполнены только с использованием операторов языка SQL.

3. Поддержка ссылочной целостности (Declarative Referential Integrity, DRI). Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления или удаления.

Контроль целостности связей осуществляется автоматически СУБД согласно восьми правилам, которые устанавливаются при проектиро­ва­нии БД – по одному правилу для операций добавления, изменения и удаления записей таблицы.

Ввод новых записей. Если добавляется новая запись в дочерний объект, для которого отсутствует запись из родительского объекта, то такой ввод мо­жет быть заблокирован (правило контроля целостности), иначе (правило игнорирования контроля целостности) – запись добавляется в любом случае.

Пример. Блокировка ввода записи дочернего объекта “СОТРУД­НИК”, ес­ли указывается значение атрибута “Код подразде­ле­ния”, отсут­ствую­ще­го в родительском объекте “ПОДРАЗДЕЛЕНИЕ”.

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

Пример. После изменения в родительском объекте “ПОДРАЗДЕЛЕ­НИЕ” значения атрибута “Код подразделения” с 2 на 202 автоматически из­ме­нят­ся в дочернем объекте “СОТРУДНИК” все записи со значением атрибута “Код подразделения”, равным 2, на новое значение 202 (все сотрудники из подразделения с кодом 2 переведутся в подразделение с новым кодом 202). Если такой перевод не может быть реальным, то можно установить правило блокировки корректировки, что не позволит изменить код под­раз­де­ления в объекте “ПОДРАЗДЕЛЕНИЕ” на новое значение, если есть сот­руд­ники в данном подразделении.

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

Пример. После удаления в родительском объекте “ПОДРАЗДЕЛЕ­НИЕ” записи со значением атрибута “Код подразделения”, равным 201, авто­матически удаляются в дочернем объекте “СОТРУДНИК” все записи со значением атрибута “Код подразделения”, равным 201 (все сотрудники из подразделения с кодом 201 увольняются). Если такого расфор­миро­ва­ния подразделения не может быть, то устанавливают правило блокировки каскадного удаления записей. Это не позволит удалить запись с кодом под­раз­де­ления в объекте “ПОДРАЗДЕЛЕНИЕ”, равным значению 201 (снача­ла нужно удалить все записи из объекта “СОТРУДНИК” со значением атри­бута “Код под­раз­де­ле­ния”, равным 201, а затем удалить запись в ро­ди­тельском объекте “ПОД­РАЗДЕЛЕНИЕ” со значением атри­бута “Код подразделения”, равным 201).

При создании базы данных для каждой связи указываются нужные правила контроля целостности, обычно, каскадное обновление, блокировка каскадного удаления и контроля целостности при включении новой записи.

4. Поддержка семантической целостности, соблюдение различных ограничений, вызванных конкретными условиями задачи.

Семантическая поддержка может быть обеспечена двумя путями: декларативным и процедурным путем.

Декларативный путь связан с наличием механизмов в рамках СУБД, обеспечивающих проверку и выполнение ряда декларативно заданных правил-ограничений, называемых чаще всего «бизнес-правилами» (Business Rules) или декларативными ограничениями целостности.

Выделяются следующие виды декларативных ограничений целостности.

Ограничения целостности атрибута: значение по умолчанию, задание обязательности или необязательности значений (Null), задание условий на значения атрибутов. Задание значения по умолчанию означает, что каждый раз при вводе новой строки в отношение, при отсутствии данных в указанном столбце этому атрибуту присваивается именно значение по умолчанию.

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

Ограничения целостности, задаваемые на уровне отношения.

Декларативные ограничения целостности относятся к ограничениям, которые являются немедленно проверяемыми. Есть ограничения целостности, которые являются откладываемыми до завершения транзакций.

Процедурный путь предполагает написание оригинальных процедур контроля целостности, например использование триггеров.




Поделиться с друзьями:


Дата добавления: 2014-12-10; Просмотров: 898; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.