Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kit.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
732.16 Кб
Скачать

60. Понятие транзакции. Обработка транзакций в sql.

Условия целостности данных:

1) обязательное наличие данных; 2) условие на значение;

3) целостность таблицы; 4) ссылочная целостность;

5) деловые правила; 6) непротиворечивость.

Для обеспечения целостности данных в SQL используются средства обработки транзакций. Транзакция – это совокупность операций манипулирования данными в системе баз данных, которая переводит базу данных из одного целостного состояния в другое.

SQL-транзакция – последовательность команд SQL, обладающая свойством атомарности (неделимости) относительно восстановления состояния базы данных. Иначе говоря, это несколько последовательных команд SQL, которые рассматриваются как единое целое.

В языке SQL обработка транзакций реализована с помощью двух команд: COMMIT и ROLLBACK. Они управляют изменениями, выполненными группой команд. Команда COMMIT сообщает об успешном окончании транзакции. Она информирует СУБД о том, что транзакция завершена, все ее команды выполнены успешно и противоречия в БД не возникли. Команда ROLLBACK сообщает о неуспешном окончании транзакции. Она информирует СУБД о том, что пользователь не хочет завершать транзакцию, и СУБД должна отменить все изменения, внесенные в БД в результате выполнения транзакции. В этом случае СУБД возвращает БД в состояние, в котором она находилась до выполнения транзакции.

Команды COMMIT и ROLLBACK используются в основном в программном режиме, хотя возможно их использование и в интерактивном режиме.

61. Управление доступом к данным: привилегии, их назначение и отмена.

К категории Управление доступом к данным относятся команды для осуществления административных функций, присваивающих или отменяющих привилегию использовать таблицы в БД определенным образом. Каждый пользователь БД имеет определенные привилегии по отношению к объектам БД. Привилегии – права пользователя на проведение тех или иных действий над определенным объектом БД. Привилегии могут меняться с течением времени: старые могут отменяться, новые – добавляться. Стандартом языка SQL предусмотрены следующие привилегии:

• SELECT – право читать таблицу;INSERT – право добавлять данные в таблицу;UPDATE – право изменять данные таблицы;

• DELETE – право удалять данные из таблицы;

• REFERENCES – право определять первичный ключ.

Пользователь, создавший таблицу, является ее владельцем. Как владелец, пользователь имеет все привилегии на таблицу и может назначить привилегии для работы с ней другим пользователям. Кроме владельца, привилегии может назначать администратор БД.

62.Встраивание sql в прикладные программы.

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

Программный SQL предназначен для того, чтобы встраивать SQL-запросы в прикладную программу, написанную на одном из языков программирования. При этом возникают следующие вопросы:

- компилятор с алгоритмического языка должен иметь возможность выделения в тексте прикладной программы последовательность операторов SQL.

- компилятор должен объединять возможности языка программирования высокого уровня (переменные, ветвления, циклы) и возможности SQL (запросы на языке, близком к естественному).

Программный SQL позволяет:

- использовать операторы интерактивного SQL в тексте программы на языке программирования высокого уровня;

- для передачи параметров в запрос использовать в тексте запроса переменные, объявленные в программе;

- для возврата в программу результатов запроса использовать специальные конструкции, отсутствующие в интерактивном SQL

Статический SQL – разновидность программного SQL, предназначенная для встраивания SQL-операторов в текст программы на языке программирования высокого уровня.

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

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

Динамический SQL – разновидность программного SQL, предназначенная для встраивания SQL-операторов в текст программы на языке программирования высокого уровня, допускающая динамическое формирование и выполнение запросов во время работы программы.

Динамический SQLтакже должен содержать дополнительные операторы (по сравнению с интерактивным SQL), например разновидности инструкций для работы с курсором в динамическом SQL – OPEN, FETCH, CLOSE

63 Диалекты языка SQL в СУБД. Несмотря на наличие междун-го стандарта ANSI SQL, многие компании, занимающиеся разработкой СУБД, вносят изме-я в язык SQL, примен-й в разрабат-ой СУБД, тем самым отступая от стандарта. Каждая из реализаций яз-а SQL в конкретной СУБД назыв-ся диалектом. Фун-и, кот-е добавл-ся к стандарту языка разработчиками коммерческих реализаций, принято назы-ть расширениями. Напр-р, в стандарте языка SQL определены конкретные типы данных, кот-е могут хран-ся вБД. Во мн-х реализациях этот список расширяется за счет разнообразных допол-й.Выдел-т 3 уровня соответствия стандарту ANSI/ISO — начал-й, промеж-ый и полный. В наст-ее вр-я не сущ-ет ни од-го диалекта, полностью соответ-его стандарту. Производ-и СУБД применяют собственные реализации SQL, отвечающие как минимум начальному уровню соответствия стандарту и содержащие некоторые расширения, специфические для данной СУБД. Не существует двух совершенно идентичных диалектов. Более того, поскольку разработчики баз данных вводят в системы все новые функциональные средства, они постоянно расширяют свои диалекты языка SQL, в результате чего отдельные диалекты все больше и больше отличаются друг от друга. Это имеет свои достоинства и недостатки. Конкретная реализация языка, может включать в себя более широкие возможности по сравнению со стандартом SQL, например, больше типов данных, большее количество команд, больше дополнительных возможностей у имеющихся команд. Такие возможности делают работу с конкретной СУБД более эффективной. Кроме того, такие нестандартные возможности языка проходят практическую апробацию и со временем могут быть включены в стандарт. Недостаток:различия в синтаксисе реализаций SQL затрудняют перенос приложений из одной системы в другую. Например, если приложение было напис-ано для базы данных MS SQL Server с использованием своего диалекта SQL – яз-а Transact-SQL, то при переносе системы в базу данных ORACLE, не все конструкции языка будут понятны соответствующему диалекту SQL – языку PL/SQL.В наст-ее вр используются следующие диалекты:(PL/SQL – в СУБД Oracle;Transact-SQL – в СУБД Microsoft SQL;Informix-SQL – в СУБД Informix;Jet SQL – Microsoft Access).Язык Jet SQL почти соответствует стандарту ANSI SQL.Различия яз-в Jet SQL и ANSI SQL: 1.они имеют разные наборы зарезерв-ых слов и типов данных; 2.разные правила применимы к оператору Between, исполь-му для опред-ия условий выборки записей;3.подстан-е знаки ANSI и Micr-ft Jet, кот-е испол-ся в операторе Like, различны;4.яз Jet SQL обычно предоставляет пользователю большую свободу;5.язык Jet SQL позволяет использовать более сложные выражения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]