6.Нормализация данных.1,2,3 нормальные формы.
Нормализация-процесс реорганизации данных с целью, избавления избыточности данных, что позволяет осуществлять непротиворечивое и корректное редактирование данных.
Нормальные формы
Теория нормализации основана на концепции нормальных форм. Каждой нормальной форме соответствует некоторый определенный набор ограничений, и отношение находится в некоторой нормальной форме, если оно удовлетворяет свойственному данной форме набору ограничений.
Первая нормальная форма
Отношение находится в первой нормальной форме, если значения всех атрибутов отношения атомарны (неделимы)
Вторая нормальная форма
Отношение находится во второй нормальной форме в том, и только в том случае, если отношение находится в первой нормальной форме, и каждый неключевой атрибут полностью зависит от первичного ключа
Переход от 1 к 2 нф:
1.Определить, на какие части можно разбить первичный ключ, так чтобы некоторые из неключевых полей зависели от одной из этих частей
2.Создать новую таблицу для каждой такой части ключа и группы
3.Удалить из исходной таблицы поля, перемещенные в другие таблицы
Третья нормальная форма
Отношение R находится в третьей нормальной форме в том, и только в том случае, когда оно находится во второй нормальной форме и каждый неключевой атрибут нетранзитивно (т.е. напрямую без посредников) зависит от первичного ключа.
Переход от 2 к 3 нф:
1.определить все поля (или группы полей), от которых зависят другие поля
2.создать новую таблицу для каждого такого поля и переместить в табл. Поля, от кот зависят др – ключ
3. удалить перемещенные поля из исходной таблицы
7.Транзакция.
Транзакцией называется некоторая неделимая последовательность операций над данными, к-ая воспринимается СУБД как единое целое и отслеживается ею от начала до завершения транзакции (это группа последовательных операций, которая представляет собой логическую единицу работы с данными). Если по каким-либо причинам одна из операций не выполняется, то вся транзакция отменяется и выполняется откат к исходному состоянию БД. Свойства транзакций: 1.Атомарность-выполняются все входящие в транзакцию операции или ни одна из них. 2.Серолизуемость-транзакции выполняются сами по себе. Отсутствует взаимное влияние выполняемых в одно и то же время транзакции. 3.Долговечность – даже крах системы не приводит к утрате результатов зафиксированной транзакций. Транзакции обеспечивают целостность и безубыточность БД. Контроль транзакции возможен как в однопользовательском, так и в многопользовательском СУБД. В многопользовательском СУБД при параллельном выполнении транзакции, возможны возникновения конфликтов, разрешение к-ых явл. функцией СУБД. При обнаружении конфликтов, происходит откат путем отмены изменений. Для этого СУБД ведет журнал изменений БД. Транзакционная система —система, реализующая транзакции над хранилищем данных. Задача транзакционной системы — обработать как можно больше транзакций в минимальное время с гарантией безошибочных результатов.
Принципы совместной обработки (сериализации) транзакций:
Транзакция не может получить доступ к незафиксированным данным.
Результат совместного выполнения транзакций должен быть эквивалентен результату их последовательного выполнения.
Долговечность - Если транзакция выполнена, то результаты ее должны сохраняться в системе, даже если в следующий момент произойдет сбой системы. Результатом выполнения транзакции может быть ее фиксация или откат.
Фиксация транзакции — это действие, обеспечивающее запись в БД всех изменений, которые были произведены в процессе ее выполнения.
Если нормальное завершение транзакции невозможно, напр., нарушены ограничения целостности БД, или пользователь выдал специальную команду, происходит откат транзакции. БД возвращается в исходное состояние, все изменения аннулируются. Механизм корректного отката и фиксации транзакций основан на использовании журнала транзакций.
Если транзакция работает с БД, расположенной на одном узле, то ее называют локальной. Таким образом, логически распределенная транзакция состоит из нескольких локальных.
Локальные и глобальные транзакции
С точки зрения пользователя, локальные и глобальные транзакции обрабатываются одинаково, т.е. СУБД должна организовать процесс выполнения распределенной транзакции так, чтобы все локальные транзакции, входящие в нее, синхронно фиксировались на затрагиваемых ими узлах распределенной системы.
Однако распределенная транзакция должна фиксироваться только в случае, когда зафиксированы все локальные транзакции, ее составляющие. Если прерывается хотя бы одна из локальных транзакций, должна быть прервана и распределенная транзакция.