Файл: Тема концепция управления данными в современных информационных системах Цель лекции.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.11.2023

Просмотров: 226

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

При запуске SQL Server после аварии системы происходит автоматический запуск механизма воспроизведения. В этом механизме воспроизведения используется журнал транзакций, позволяющий определить, для каких транзакций требуется воспроизведение и для каких не нужно. Многие транзакции не требуют воспроизведения, но SQL Server должен прочитать журнал транзакций, чтобы определить, каким транзакциям это все же требуется. SQL Server начинает чтение журнала транзакций с момента создания последней контрольной точки.

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

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

При повторном исполнении транзакции происходит воспроизведение изменений, внесенных в базу данных, но не записанных на диск, чтобы вернуть файлы данных к состоянию, в котором они находились на момент отказа. Иными словами, повторное исполнение фиксированных транзакций приводит базу данных к состоянию, в котором она находилась на момент отказа (за вычетом всех нефиксированных транзакций).

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

Примеры правил: вес детали должен быть положительным; количество знаков в телефонном номере не должно превышать 15; возраст родителей не может быть меньше возраста их биологического ребёнка и так далее.

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

Очевидно, что ограничения должны быть формально объявлены для СУБД, после чего СУБД должна предписывать их выполнение. Объявление ограничений сводится просто к использованию соответствующих средств языка базы данных, а соблюдение ограничений осуществляется с помощью контроля со стороны СУБД над операциями обновления, которые могут нарушить эти ограничения, и запрещения тех операций, которые их действительно нарушают. При первоначальном объявлении ограничения система должна проверить, удовлетворяет ли ему в настоящий момент база данных. Если это условие не соблюдается, ограничение должно быть отвергнуто; в противном случае оно принимается (то есть записывается в каталог системы) и начиная с этого момента соблюдается.


Механизмы обеспечения целостности являются одной из составляющих концепции модели данных.

В теории реляционных баз данных принято выделять четыре типа ограничений целостности:

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

- Ограничением переменной отношения называется ограничение на значения, которые разрешено принимать указанной переменной отношения.

- Ограничением атрибута называется ограничение на значения, которые разрешено принимать указанному атрибуту.

- Ограничение типа представляет собой ни что иное, как определение множества значений, из которых состоит данный тип.

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

Выделяют четыре вида поддержки целостности базы данных:


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), задание условий на значения атрибутов. Задание значения по умолчанию означает, что каждый раз при вводе новой строки в отношение, при отсутствии данных в указанном столбце этому атрибуту присваивается именно значение по умолчанию.

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

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

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

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

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