В системе MySQL предусмотрен определенный механизм ограничений первичных и внешних ключей в целях поддержки целостности данных. Столбцы могут быть объявлены таким образом, чтобы сделать ввод значений NULL недопустимым. Для предотвращения появления незаполненных столбцов, MySQL поддерживает использование значений по умолчанию, которые совместно со свойствами NOT NULL обеспечивают ввод в столбец только допустимых данных, в противном случае столбец останется пустым.
Транзакции
До недавнего времени MySQL не имел возможностей по обработке транзакций, однако, начиная с версии 3.23, у MySQL появились такие дескрипторы, как InnoDB и BDB, которые имеют возможность работы с транзакциями, аналогично коммерческим реляционным СУБД.
Считается, что СУБД может работать с транзакциями, если она соответствует условиям теста, известного как ACID-тест. Удовлетворяющая ACID-тесту база данных должна иметь следующие характеристики:
■ атомарность (A);
■ целостность (C);
■ изолированность (I);
■ надежность (D).
Рассмотрим все эти характеристики детальнее. Скоро
В то время как будущие версии MySQL должны иметь внешние ключи во всех типах таблиц, эта составляющая ссылочной целостности сейчас предусмотрена только в таблицах типа InnoDB.
Атомарность
По определению транзакцией называется операция или последовательность операций, которые позволяют осуществить доступ к данным базы данных или их изменение. Согласно терминологии языка SQL, транзакция возникает, когда один или несколько операторов SQL работают единым блоком. Каждый оператор SQL в таком блоке зависит от других операторов; другими словами, если один из операторов из блока по какой-то причине выполнен не будет, будет сделан "откат" всех операторов и все данные возвращаются в состояние, которое они имели перед началом транзакции. Группировка операторов SQL как части единого блока (или транзакции) сообщает MySQL о том, что весь блок должен выполняться атомарно.
Атомарное выполнение представляет собой дилемму "все или ничего". Все операторы SQL должны выполняться для того, чтобы база данных сохраняла целостность данных; в противном случае выполнение ни одного из операторов, принадлежащих блоку, завершено не будет. В СУБД MySQL начало блока обозначается оператором BEGIN. Транзакция (или рабочий блок) не будет помечена как выполненная до тех пор, пока не будет выполнен оператор COMMIT, по которой MySQL завершает действие. При необходимости оператор ROLLBACK инициирует откат всех изменений данных в состояние, которое они имели до выполнения оператора BEGIN.
Например, при дебитовании и кредитовании вашего банковского счета, банк добавляет и вычитает деньги со счета одной транзакцией. В эти модификации обычно вовлечено несколько таблиц. Таким образом, банк не в состоянии поддерживать целостность данных, не гарантируя выполнения всей транзакции, а не только ее части.
Управление транзакциями очень важно для систем клиент/сервер, выполняющих ввод данных, или для любого приложения, которое должно рассчитывать на хорошую защиту от неопределенной потери данных, как это было в примере с банком, описанном выше.
Целостность
Можно сказать, что целостность достигнута, если после каждой транзакции система остается в целостном состоянии, независимо от успешности выполнения транзакции.
Предположим, например, что ваш банк выполняет транзакцию по переводу денег с одного банковского счета на другой. Эта транзакция вычитает определенную денежную сумму с одного банковского счета, но ей не удается прибавить эту же сумму на другом счете, на который переводится данная денежная сумма. Это значит, что с этого момента система больше не будет находиться в целостном состоянии. В таком случае эта транзакция нарушает ограничения, обеспечивающие целостность, и система больше не соответствует требованиям ACID-теста.
В СУБД MySQL целостность поддерживается прежде всего механизмами регистрации MySQL, которые записывают все изменения, происходящие в базе данных, обеспечивая протоколирование и восстановлении транзакций. Когда система отключается посредине выполнения транзакции, процесс восстановления MySQL использует эти журналы для определения успешности завершения транзакции и при необходимости делает откат.
В дополнение к процессу протоколирования, в MySQL предусмотрены механизмы блокировки, обеспечивающие блокировку всех таблиц, строк и индексов, участвующих в транзакции вне зависимости от того, будут ли они выполнены успешно или будет сделан откат.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Целостность данных
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Компоненты поддержки | Все о MySQL. Целостность данных. Продолжение. |