
- •14) Доступ к базам данных в двухзвенных моделях клиент-сервер
- •15) Использование библиотек доступа и встраиваемого sql
- •20) Для чего предназначен оператор Select и как он работает sql?
- •21) Пояснить, как работают вложенные подзапросы
- •26)Пояснить возможность изменения значений в представлении.
- •27) Как определяются права доступа пользователей к данным (язык sql)?
- •29)Для чего предназначен оператор Select и как он работает sql?
- •30) Смотри 27
- •31) Какого назначение журнализации и архивирования
- •32) Какие механизмы используются для поддержания целостного состояния базы данных
26)Пояснить возможность изменения значений в представлении.
ОПРЕДЕЛЕНИЕ МОДИФИЦИРУЕМОСТИ ПРЕДСТАВЛЕНИЯ
Если команды модификации могут выполняться в представлении, представление, как уже говорилось, будет модифицируемым; в противном случае оно предназначено только для чтения при запросе. Не противореча этой терминологии, мы будем использовать выражение "модифицировать представление" (updating a view), что означает возможность выполнения в представление любой из трёх команд модификации DML (Вставить, Изменить и Удалить), которые могут изменять значения.
критерии, по которым определяют, является ли в SQL-представление модифицируемым, или нет:
Оно должно выводиться из одной, и только из одной, базовой таблицы.
Оно должно содержать первичный ключ этой таблицы (это технически не предписывается стандартом ANSI, но было бы неплохо придерживаться этого).
Оно не должно иметь никаких полей, которые являлись бы агрегатными функциями.
Оно не должно содержать DISTINCT в своем определении.
Оно не должно использовать GROUP BY или HAVING в своем определении.
Оно не должно использовать подзапросы (это ANSI-ограничение, которое не предписано для некоторых реализаций).
Оно может быть использовано в другом представлении, но это представление должно также быть модифицируемым.
Оно не должно использовать константы, строки или выражения для значений (например: comm * 100) среди выбранных полей вывода.
27) Как определяются права доступа пользователей к данным (язык sql)?
По соображениям безопасности не каждому пользователю прикладной системы может быть разрешено получать информацию из какой-либо таблицы, а тем более изменять в ней данные. Для определения прав пользователей относительно объектов базы данных (таблицы, представления, индексы) в SQL определена пара команд GRANT и REVOKE. Синтаксис операции передачи прав на таблицу:
GRANT <тип_права_на_таблицу>
ON <имя_таблицы> [<список_столбцов>]
TO <имя_пользователя>
Права пользователя на уровне таблицы определяются следующими ключевыми словами:
SELECT - получение информации из таблицы
UPDATE - изменение информации в таблице
INSERT - добавление записей в таблицу
DELETE - удаление записей из таблицы
INDEX - индексирование таблицы
ALTER - изменение схемы определения таблицы
ALL - все права
В поле <тип_права_на_таблицу> может быть указано либо ключевое слово ALL или любая комбинация других ключевых слов.
GRANT ALL ON publishers TO andy;
Пользователю peter предоставим права на извлечение и дбавление записей на эту же таблицу:
GRANT SELECT INSERT ON publishers TO peter;
Отмена прав осуществляется командой REVOKE:
REVOKE <тип_права_на_таблицу>
ON <имя_таблицы> [<список_столбцов>]
FROM <имя_пользователя>
Все ключевые слова данной команды эквивалентны оператору GRANT.
Большинство систем поддерживают также команду GRANT для назначения привилегий на базу данных в целом.
28) Определить основные понятия реляционной базы данных. Пояснить какие формы языка SQL существуют и их назначение.
Основными понятиями реляционных баз данных являются тип данных, домен, атрибут, кортеж, первичный ключ и отношение.
Для
начала покажем смысл этих понятий на
примере отношения СОТРУДНИКИ, содержащего
информацию о сотрудниках некоторой
организации:
1.1. Тип данных
Понятие тип данных в реляционной модели данных полностью адекватно понятию типа данных в языках программирования. Обычно в современных реляционных базах данных допускается хранение символьных, числовых данных, битовых строк, специализированных числовых данных (таких как "деньги"), а также специальных "темпоральных" данных (дата, время, временной интервал). Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных (соответствующими возможностями обладают, например, системы семейства Ingres/Postgres). В нашем примере мы имеем дело с данными трех типов: строки символов, целые числа и "деньги".
1.2. Домен
Понятие домена более специфично для баз данных, хотя и имеет некоторые аналогии с подтипами в некоторых языках программирования. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат "истина", то элемент данных является элементом домена.
Наиболее правильной интуитивной трактовкой понятия домена является понимание домена как допустимого потенциального множества значений данного типа. Например, домен "Имена" в нашем примере определен на базовом типе строк символов, но в число его значений могут входить только те строки, которые могут изображать имя (в частности, такие строки не могут начинаться с мягкого знака).
Следует отметить также семантическую нагрузку понятия домена: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. В нашем примере значения доменов "Номера пропусков" и "Номера групп" относятся к типу целых чисел, но не являются сравнимыми. Заметим, что в большинстве реляционных СУБД понятие домена не используется, хотя в Oracle V.7 оно уже поддерживается.
1.3. Схема отношения, схема базы данных
Схема отношения базы данных - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута).
Схема базы данных (в структурном смысле) - это набор именованных схем отношений.
1.4. Кортеж, отношение
Кортеж, соответствующий данной схеме отношения в базе данных, - это множество пар {имя атрибута, значение}, которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения. "Значение" является допустимым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым, степень или "арность" кортежа, т.е. число элементов в нем, совпадает с "арностью" соответствующей схемы отношения. Попросту говоря, кортеж - это набор именованных значений заданного типа.
Отношение - это множество кортежей данной базы данных, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят "отношение-схема" и "отношение-экземпляр", иногда схему отношения называют заголовком отношения, а отношение как набор кортежей - телом отношения. На самом деле, понятие схемы отношения в базе данных ближе всего к понятию структурного типа данных в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем одно или несколько отношений с данной схемой.
Однако в реляционных базах данных это не принято. Имя схемы отношения в таких базах данных всегда совпадает с именем соответствующего отношения-экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения-экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализациях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных.
Обычным житейским представлением отношения является таблица, заголовком которой является схема отношения, а строками - кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы. Поэтому иногда говорят "столбец таблицы", имея в виду "атрибут отношения". Когда мы перейдем к рассмотрению практических вопросов организации реляционных баз данных и средств управления этими базами данных, мы будем использовать эту житейскую терминологию. Этой терминологии придерживаются в большинстве коммерческих реляционных систем управления базами данных.
Реляционная база данных - это набор отношений, имена которых совпадают с именами схем отношений в схеме базы данных.
Как видно, основные структурные понятия реляционной модели данных (если не считать понятия домена) имеют очень простую интуитивную интерпретацию, хотя в теории реляционных баз данных все они определяются абсолютно формально и точно.
Формы языка SQL:
Интерактивный — позволяет конечному пользователю в интерактивном режиме выполнять SQL-операторы.
Статический SQL — может реализовываться как встроенный SQL или модульный, формируется до запуска программы.
Динамический SQL - формирует операторы SQL в ходе работы программы.
Встроенный SQL- позволяет включать операторы SQL в код программы на другом языке программирования (напр., С++).