Алгоритм проектирования БД методом «сущность-связь»
Метод сущности-связи (ER) основан на некоторой важной семантической информации о реальном мире и предназначен для логического представления данных. ER-модель определяет значение данных в контексте их взаимодействия с другими данными. Элементы модели: Сущность – объект представляющий интерес в данной предметной области. Должен иметь экземпляры, отличающиеся друг от друга и допускающих однозначную идентификацию. Сущность определяется множеством атрибутов, которые описывают свойства данной сущности. Ключ сущности – атрибут или набор атрибутов, однозначно определяющих экземпляр сущности. Связь – ассоциация установленная между 2 отношениями (бинарная) или большим количеством сущностей. Имеет 2 характеристики: степень связи и обязательность. Алгоритм: 1. Построение диаграммы ER-типа: А) выделение сущностей и их ключей Б) определение связей и их характеристик 2. Генерация набора предварительных отношений на основании правил генерации и наполнение полученных отношений атрибутами. 3. Исследование каждого из отношений на НФБК (отношение находится в НФБК, если и только если каждый детерминант отношения является возможным ключом) 4. Исследование набора предварительных отношений на избыточность. Отношение считается избыточным, если: А) все его атрибуты являются подмножествами множества атрибутов других отношений из этого же набора данных. Б) если отношения можно получить серией JOIN-операций из других отношений этого же набора.
Функции СУБД по защите данных Одним из важных аспектов работы с данными является защита данных от возможных угрожающих ситуаций (как преднамеренных так и случайных). Риск потери данных может возникнуть, например, в следующих ситуациях:
-система может быть разрушена во время выполнения некоторых программ, оставив при этом базу данных в непредсказуемом состоянии; -при выполнении двух конфликтующих программ между ними может возникнуть конфликт; -данные могут быть испорчены преднамеренно; -обновления могут изменять базу данных недопустимым способом. Следовательно, система должна обеспечивать функции защиты данных от подобных проблем, в частности восстановление, параллелизм, защиту и целостность. Первые две являются аспектами процесса транзакции. Восстановление Восстановление в СУБД означает восстановление самой БД, то есть возвращение самой БД в правильное или корректное состояние, после какого-то сбоя. Основной принцип, на котором строится такое восстановление- избыточность. Эта избыточность организуется на физическом уровне и скрыта от пользователя. Если любая часть информации, содержащаяся в базе данных, может быть реконструирована из другой, хранимой в системе избыточной информации, значит, база данных восстанавливаема. Принцип восстановления не зависит от того, является БД реляционной или нет. Транзакция - логичеcкая единица работы. Предположим, что в отношении P введен новый атрибут TOTAL (количество поставленных деталей данного типа). TOTAL= сумма значений QTY в SP Покажем добавление в базу данных новой поставки: (необходимо выполнить INSERT для SP и UPDATE для P) BEGIN TRANSACTION; INSERT ((S#:’S5’, P#:’P1’, QTY:100)) INTO SP; IF ошибка THEN GOTO UNDO; UPDATE P WHERE P#=‘P1’ TOTAL=TOTAL+100; IF ошибка THEN GOTO UNDO; COMMIT TRANSACTION; GOTO FINISH; UNDO: RULLBACK TRANSACTION; FINISH: RETURN; Заметим, что мы говорим об атомарной операции (добавление новой поставки), хотя на самом деле выполняются 2 обновления. Причем, между этими двумя обновлениями база данных находится в некорректном состоянии. Таким образом транзакция - не просто одиночная операция систем БД, а скорее согласование нескольких операций. В целом это преобразование одного согласованного состояния БД в другое согласованное состояние. Когда обновление INSERT осуществляется, а обновление UPDATE нет, то БД приходит в несогласованное состояние. Недопустимо, чтобы было выполнено только одно из указанных обновлений.
Система, поддерживающая транзакции, обеспечивает гарантию того, что если во время выполнения некоторых из обновлений произошла ошибка, то все обновления будут аннулированы - физический смысл транзакции. Системный компонент, обеспечивающий атомарность, называется администратором или диспетчером транзакции, а ключами к его выполнению служат операторы COMMIT и RULLBACK TRANSACTION. COMMIT TRASACTION сообщает администратору, что транзакция завершена успешно, БД - в корректном состоянии и все обновления могут быть зафиксированы. RULLBACK TRANSACTION. сообщает администратору, что произошла какая-то ошибка, БД - в несогласованном состоянии и все обновления должны быть аннулированы.
Транзакция начинается с выполнения оператора BEGIN и заканчивается FINISH: RETURN COMMIT TRASACTION устанавливает точку фиксации или точку синхронизации, которая соответствует концу логической единицы работы. Выполнение оператора RULLBACK TRASACTION возвращает БД в состояние, в котором она была во время операции BEGIN т.е. в предыдущую точку фиксации. Но в любом случае либо COMMIT либо RULLBACK означает только конец транзакции, а не конец программы. В предыдущем примере мы использовали явный текст для определения ошибки.. Однако на самом деле программы далеко не всегда могут использовать явный текст для всех ошибок. Следовательно, система будет выполнять RULLBACK неявно для любой программы, которая не достигла запланированного завершения (т.е. переход на метку FINISH и выполнение RETURN). Таким образом транзакция - это не только логическая единица работы, но также единица восстановления при неудачном выполнении операции. Возможна ситуация, когда сбой в системе произойдет после успешного выполнения COMMIT, но до того, как обновления будут физически записаны в БД (они могут оставаться в буфере ОП и будут утеряны в момент сбоя). Даже если подобное случилось, процедура перезагрузки должна установить эти обновления в БД исследуя соответствующие сообщения в файле регистрации.
Из этого следует, что файлы регистрации должны быть физически записаны перед завершением операции COMMIT. Это правила введения файлов регистрации известно как протокол предварительной записи в журнале, т.е. запись об операции осуществляется перед ее выполнением. Таким образом процедура перезагрузки сможет восстановить любые успешно завершенные транзакции, хотя их обновление не были записаны физически до отказа системы. Следовательно, транзакция действительно является логической единицей восстановления. Из сказанного следует, что транзакции обладают 4 свойствами: атомарность, согласованность, изоляция и долговечность (АСИД). Атомарность - выполняется все или ничего. Согласованность – транзакции (Т) переводят одно согласованное состояние БД в другое согласованное состояние. Изоляция -Т отделены одна от другой. Если запущено множество конкурирующих между собой Т, любое обновление определенной Т будет скрыто от остальных до тех пор, пока эта Т выполняется. Долговечность - когда Т выполнена ее обновления сохраняются, даже если в следующий момент произойдет сбой системы. Система должна быть готова к восстановлению не только после небольших локальных нарушений, таких как невыполнение операции в пределах определенной Т, но также после глобальных нарушений. Существует два вида глобальных нарушений: 1. Отказ системы (сбой в питании), поражающий все выполняющиеся в данный момент Т. но физически не нарушающий БД в целом - аварийный отказ программного обеспечения. 2. Отказ носителей - поломка головки дискового накопителя –аварийный отказ аппаратуры. Следствием отказа системы первого вида будет потеря содержимого ОП в частности рабочих буферов БД. Поскольку точное состояние какой - либо выполняющейся в момент нарушения транзакции неизвестно, транзакция может не завершиться успешно и таким образом будет отменена при перезагрузке. Более того, возможно потребуется повторно выполнить определенную успешно завершенную в момент сбоя транзакцию, если не были физически выполнены обновления этой транзакции.
Как система узнает, какую Т отменить, а какую выполнить повторно? В определенный интервал времени, когда в журнале накапливается достаточное количество записей, система автоматически принимает контрольную точку. Принятие контрольной точки включает физическую запись содержимого рабочих буферов БД, непосредственно в БД и специальную физическую запись контрольной точки, которая представляет собой список всех осуществляющихся в данный момент транзакций. Рассмотрим пять возможных состояний транзакций на момент сбоя. Очевидно, что при перезагрузке системы транзакции типа Т3 и Т5 должны быть отменены, а Т2 и Т4 выполнены повторно. Т1 вообще не включается в процесс перезагрузки. Во время перезагрузки система вначале проходит через процедуру идентификации транзакции типа Т2- Т5, при этом выполняются следующие шаги: 1 шаг - создается 2 cписка транзакций: UNDO - список транзакций на отмену; REDO - список транзакций на повторное выполнение; В список UNDO вносятся все транзакции, представленные из записи контрольной точки на момент времени tc. Список REDO в стартовом варианте - пустой 2 шаг - осуществляется поиск в файле регистрации, начиная с времени tc. 3 шаг - если в файле регистрации обнаружена запись BEGIN TRASACTION, то тогда транзакция добавляется в список UNDO. 4 шаг - если в файле регистрации обнаруживается запись COMMIT, то это транзакция добавляется в список REDO. 5 шаг - когда достигается конец файла регистрации списки, UNDO и REDO анализируются для идентификации типа Т2 и Т4, перешедших из одного списка в другой. Транзакции, перешедшие в список REDO, удаляются из списка UNDO. UNDO - T3, T5 REDO - Т2, Т4 После этого система просматривает назад файл регистрации, отменяя транзакции из списка UNDO и затем рассматривает снова вперед, повторно выполняя транзакции из списка REDO. Восстановление БД в правильное состояние путем отмены (UNDO) выполненных операций называется обратным восстановлением. Восстановление системы в правильное состояние повторным (REDO) выполнением называется прямым восстановлением.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|