Файл: Тема концепция управления данными в современных информационных системах Цель лекции.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), задание условий на значения атрибутов. Задание значения по умолчанию означает, что каждый раз при вводе новой строки в отношение, при отсутствии данных в указанном столбце этому атрибуту присваивается именно значение по умолчанию.
Ограничения целостности, задаваемые на уровне доменов, при поддержке доменной структуры. Эти ограничения удобны, если в базе данных присутствуют несколько столбцов разных отношений, которые принимают значения из одного и того же множества допустимых значений.
Ограничения целостности, задаваемые на уровне отношения.
Декларативные ограничения целостности относятся к ограничениям, которые являются немедленно проверяемыми. Есть ограничения целостности, которые являются откладываемыми до завершения транзакций.
Процедурный путь предполагает написание оригинальных процедур контроля целостности, например использование триггеров.
Под безопасностью обычно понимают средства защиты от хакеров и другие риски подключения к данным. При этом часто упускается из виду риск физической кражи носителей данных. Поэтому соблюдение политики безопасности обязывает использовать шифрование, как способ скрытия данных с помощью ключа или пароля. Это делает данные бесполезными без соответствующего ключа или пароля для дешифрования. Шифрование не решает проблемы управления доступом, однако повышает защиту за счет ограничения потери данных даже при обходе системы управления доступом.