Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных.doc
Скачиваний:
160
Добавлен:
16.03.2016
Размер:
6 Мб
Скачать
☆

21.5. Заключение

В этой лекции мы обсудили важные аспекты языка SQL, относящиеся к механизмам обновления данных. В разделе 21.2. Базовые средства манипулирования даннымибыли рассмотрены операторы прямого SQL, предназначенные для вставки, модификации и удаления данных из существующих таблиц. ОператорыUPDATEиDELETEэтой категории иногда называют поисковыми, поскольку в них включаются условия на строки таблицы, которые должны быть модифицированы или удалены. В языке SQL определены так-жепозиционныеоператоры модификации и удаления строк, а такжединамические позиционныеварианты данных операторов, но для их обсуждения требуется общее рассмотрение встраиваемого и динамического SQL, что выходит за рамки данного курса. На мой взгляд, поисковые версии операторов модификации и удаления хорошо характеризуют соответствующие возможности языка SQL. Кроме того, операторINSERT, представленный в этой лекции, специфицирован в языке SQL только в таком варианте.

Раздел 21.3. Представления, над которыми возможны операции обновленияпосвящен обсуждению возможностей языка SQL, связанных с применимостью операций обновления базы данных через виртуальные таблицы, в том числе через представления. Мы рассмотрели ограничения языка SQL/92, накладываемые на виртуальные таблицы, к которым применимы операции обновления. Отмечалось, что эти ограничения являются достаточными, но не необходимыми для применения операций обновления. Был описан подход стандарта SQL:1999, где предлагаются рекомендации, но не требования, которых следует придерживаться реализациям SQL, чтобы соответствовать стандарту.

Наконец, в разделе 21.4. Операции обновления баз данных и механизм триггероврассматривался механизм триггеров. В первом подразделе упоминались основные понятия триггеров, которые были введены при выполнении проекта System R. Далее приводились основные синтаксические конструкции, предназначенные для определения триггеров, а также была описана их базовая семантика. В следующем подразделе обсуждались принципы выполнения триггеров, заложенные в стандарт SQL:1999. Наконец, в заключение раздела были рассмотрены имеющиеся взаимосвязи между ссылочными действиями и триггерами.

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

Часть следующей лекции, относящаяся к средствам языка SQL, которые предназначены для управления транзакциями, также имеет непосредственное отношение к операторам обновления баз данных.

Лекция 22. Средства языка sql для обеспечения авторизации доступа к данным, управления транзакциями, сессиями и подключениями

22.1. Введение

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

Данная лекция включает материал, в меньшей степени концептуально связанный, чем это было в предыдущих лекциях курса, посвященных языку SQL. В первом из основных разделов лекции 22.2. Поддержка авторизации доступа к данным в языке SQLмы обсудим базовые идеи авторизации доступа к данным, заложенные в основу языка SQL. Методавторизации доступа, используемый в SQL, относится кмандатным (mandatory) видам защиты данных. При этом подходе с каждым зарегистрированным в системе пользователем (субъектом) и каждым защищаемым объектом системы связываетсямандат, определяющий действия, которые может выполнять данный субъект над данным объектом. В отличие от такого подхода, при применениидискреционного (discretionary) метода ограничения доступас каждым из объектов системы связывается одна или несколькокатегорий пользователей, каждой из которых позволяются или запрещаются некоторые действия над объектом.

Следующий раздел 22.3. Управление транзакциями в SQLпосвящен фундаментальному в области баз данных (и не только) понятиютранзакции– последовательности операций над базой данных (в общем случае включающей операции обновления базы данных), которая воспринимается системой как одна неделимая операция. При классическом подходе к управлению транзакциями следуют принципуACID (Atomicy, Consistency, Isolation, Durability). Этому принципу следовали и разработчики языка SQL. Однако понятие транзакции выходит далеко за пределы SQL; механизмы управления транзакциями составляют отдельную и большую исследовательскую область. В данной лекции мы не будем углубляться в технические детали управления транзакциями (этому посвящалась Лекция 13) и ограничимся возможностями, заложенными в язык SQL.

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