АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Условия целостности данных

Читайте также:
  1. I Распад аустенита в изотермических условиях
  2. I. При каких условиях эта психологическая информация может стать психодиагностической?
  3. I. Психологические условия эффективности боевой подготовки.
  4. IV. ТРЕБОВАНИЯ К УЧАСТНИКАМ И ИХ УСЛОВИЯ ДОПУСКА
  5. V. Финансовые условия участия в Конкурсе
  6. VI ПРИЧИНЫ, УСЛОВИЯ И ВТОРЖЕНИЕ
  7. А) ОСНОВНЫЕ УСЛОВИЯ ВЕРНОЙ ПЕРЕДАЧИ СЛОВ, ОБОЗНАЧАЮЩИХ НАЦИОНАЛЬНО-СПЕЦИФИЧЕСКИЕ РЕАЛИИ
  8. А) Поведение фирмы в условиях совершенной конкуренции
  9. Абстрактные структуры данных
  10. Автоматизированная система обработки данных правовой статистики
  11. Авторское право - правовое положение авторов и созданных их творческим трудом произведений литературы, науки и искусства.
  12. АДАПТАЦИЯ И ОСНОВНЫЕ СПОСОБЫ ПРИСПОСОБЛЕНИЯ ЖИВЫХ ОРГАНИЗМОВ К ЭКСТРЕМАЛЬНЫМ УСЛОВИЯМ СРЕДЫ

Для сохранения непротиворечивости и правильности хранимой информации, СУБД поддерживает так называемые условия целостности данных.

Как правило, в реляционных БД используются следующие условия целостности:

Обязательное наличие данных. Некоторые столбцы базы данных должны обязательно содержать некоторые определенные значения, т.е. для них не допускаются значения NULL. В качестве примера из рассмотренного выше примера учебной базы данных такими столбцами являются, очевидно, столбцы fname, lname и некоторые другие. Стандарт ANSI/ISO и большинство коммерческих СУБД (ORACLE в частности) поддерживают выполнение подобного условия посредством ограничения NOT NULL;

Условие на значение. Во многих коммерческих СУБД при создании базы данных для некоторых столбцов таблиц можно назначить условия на принимаемые ими значения. Данные условия задаются в инструкциях по созданию таблиц посредством так называемых check conditions. В качестве примера можно рассмотреть фрагмент инструкции create table для создания таблиц:

create table staff (sno integer not null,

age integer,

check (sno between 101 and 199),

check (age >=21));

Целостность таблицы (сущности). Первичный ключ таблицы должен в каждой строке иметь уникальное значение и не допускать значений NULL. Создание первичных ключей таблиц в БД поддерживается СУБД посредством ограничения primary key;

Деловые правила. Обновление информации в базе данных может быть ограничено так называемыми деловыми правилами. К примеру, в системе можно запретить принимать заказы на определенный вид продукции, в случае если на складе не имеется её достаточного количества. Реализация данных правил в СУБД может реализовываться посредством автоматически запускаемых процедур, запуск которых осуществляется после выполнения некоторых из операций по изменению содержимого записей базы. Такие процедуры сохраняются в откомпилированном виде в базе и являются наряду с таблицами также объектами базы. Эти процедуры называются триггерами и при создании “прикрепляются ” к определенным таблицам, а также настраиваются на определенные операции изменения записей этих таблиц;

Непротиворечивость. Многие реальные операции вызывают в базе данных несколько изменений одновременно. Например, операция увольнения сотрудника должна реально сопровождаться переводом всех выполняемых им работ на какого-то другого сотрудника, либо путем временного задания значений NULL или значений по умолчанию для некоторых предназначенных для этого столбцов. Зачастую последовательное выполнение инструкций, в совокупности решающих общую задачу по изменению информации в базе данных с соблюдением конечного непротиворечивого состояния базы данных, решается СУБД посредством поддержки механизма транзакций. Транзакция считается успешно завершенной, если каждая из операций, входящих в неё, выполнена успешно. Подтверждением успешного завершения является выполнение инструкции commit. В случае неуспешного завершения хотя бы одной из операций транзакция должна отменить все произведённые ранее изменения в базе и перевести её в начальное непротиворечивое состояние посредством инструкции rollback. Выполнение инструкции rollback вызывает “откат” текущей транзакции;

Ссылочная целостность. В рассматриваемом контексте нарушение целостности может случится при выполнении операций удаления или обновления над связанными строками различных таблиц базы данных. Стандартом ANSI/ISO регламентированы правила удаления и обновления связанных строк таблиц. Таких правил четыре:

restrict. Запрещает удалять или обновлять строки-предки, в случае если на них ссылаются строки-потомки из других таблиц базы данных. В некоторых СУБД данное правило носит название no action. Следует также иметь в виду, что данное правило зачастую воспринимается СУБД по умолчанию;

cascade. Согласно ему СУБД производит автоматическое (каскадное) удаление или обновление значений в некоторых столбцах строк-потомков при удалении или изменении соответствующих им столбцов в строках-предках. Данное правило опасно в употреблении, в случае если в базе существуют разнообразные множественные связи. Правило реализуется посредством ограничения foreign key посредством фраз on delete или on update cascade.

set null и set default. Регламентируются стандартом ANSI/ISO, однако не поддерживаются СУБД ORACLE. В соответствии с этими правилами при удалении или изменении первичного ключа строки-предка во внешнем ключе строки-потомка устанавливаются значения null или значения по умолчанию.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)