23.Структура языка SQL и его типы.
Язык SQL, соответствующий последним стандартам, представляет собой богатый и сложный язык. Поэтому приходится разбивать язык на уровни такие, что каждый уровень языка включает все конструкции, входящие в более низкие уровни. Возможны различные способы разбиения языка на уровни. Один из способов разбиения языка SQL на уровни имеет следующий вид.
•Прямой SQL (di-rect) содержит кон-струкции, которые можно использо-вать при прямом взаимодействии ко-нечного пользова-теля с СУБД (напри-мер, в интерактив-ном режиме).
•Встроенный (embedded) уровень расширяется конструкциями, позволяющи-ми использовать возможности прямого SQL в программах, написанных на традицион-ных языках программирования.
•На уровне динамического (dynamic) языка SQL во встраиваемый SQL добавляются конструкции, позволяющие приложениям обращаться к СУБД с конструкциями прямого SQL, которые динамически образуются во время выполнения программы. Типы данных в языке SQL. Данные, хранящиеся в столбцах таблиц SQL-ориентированной БД, являются типизиро-ванными, то есть представляют собой значения одного из типов данных, предопределенных в языке SQL или определяемых пользователями путем применения соответствующих средств языка. Для этого при определении отношения каждому его атрибуту назначается некоторый тип данных (или домен), и в дальнейшем СУБД должна следить за тем, чтобы в каждом столбце каждой строки каждого отношения присутствовали только допустимые значения.
Категории типов данных:
• Точные целочисленные типы (INTEGER, SMALLINT).•Точные типы, допускающие наличие дробной части (NUMERIC (p, s), где p задает точность значений, а s – число десятичных цифр в дробной части. •DECIMAL (p, s), DECIMAL (p), DECIMAL.•Литералы типов точных чисел, представляемые в виде строк символов, изображающих десятичные числа со знаком или без знака, допускается внутри числа разделительная точка). •Приближенные числовые типы.•REAL – числа с плавающей точкой одинарной точности (точность опре-деляется конкретной реализацией).•DOUBLE PRECISION – числа с плаваю-щей точкой двойной точности.•FLOAT(p) – параметрический тип (точ-ность задается параметром p). •Литеральное выражение вида xEy. Типы символьных строк:•Тип CHARACTER (x) (или CHAR) - значе-ниями являются символьные строки (на-бор символов ASCII). •Тип CHARACTER VARYING (x), где x – ко-личество символов в строке.•Тип CHARACTER LARGE OBJECT – предназначен для определения столбцов, хранящих большие и разные по размеру группы символов.•Литералы символов строк, заключен-ные в одинарные или двойные кавычки.
47. Функции защиты данных. Журнализация и параллелизм. Основные свойства транзакции. Контроль транзакций в многопользовательских СУБД.
Транзакцией называется некоторая неделимая последовательность опе-раций над данными БД, которая отслеживается СУБД от начала до завершения.Если по каким-либо причинам (сбои и отказы в оборудовании, ошибки в ПО) транзакция остается незавершенной, то она отменяется. Основные свойства транзакции:•Атомарность – выполняются все входящие в транзакцию операции или не выполняется ни одна операция.•Сериализуемость (или изоляция)– от-сутствует взаимное влияние выполня-емых в одно и то же время транзакций.•Долговечность – даже «крах» систе-мы не приводит к утрате результатов зафиксированной транзакции.
24. Понятие представления и курсора. Описание и использование курсора.
В результате выборки данных из одного или нескольких отношений может быть получено множество кортежей, назы-ваемое представлением.Представление по существу является таблицей, формируемой в результате выполнения запроса.Преимущество использования представ-лений по сравнению запросами к основной таблице состоит в том, что представление будет модифицировано автоматически каждый раз, когда таблица, лежащая в его основе, изменяется. Содержание пред-ставления не фиксировано, и обновляется каждый раз, когда на него ссылаются в команде. Для удобства работы с представлениями в язык SQL введено понятие курсора. Курсор представляет собой своеобраз-ный указатель, используемый для перемещения по наборам кортежей при их обработке.В описательной части программы вы-полняют связывание переменной типа курсор (CURSOR) с оператором языка SQL (обычно с оператором SELECT). В выполняемой части программы производится открытие курсора (OPEN<имя курсора>), перемеще-ние курсора по кортежам (FETCH <имя курсора>), сопровождаемое соответствующей обработкой и, на-конец, закрытие курсора (CLOSE <имя курсора>).
48. Безопасность и целостность базы данных. Ограничения целостности и основные методы обеспечения безопасности баз данных.
Ограничения целостности используются при разработке БД, чтобы контролировать правильность данных, вводимых в БД, и кор-ректность вычислений. Например, размер до-хода не должен быть отрицательным, источник дохода должен выбираться из известного списка и т.п. Таким образом, в данном ком-поненте ДЛМ формулируются условия, ко-торым должны удовлетворять отдельные пока-затели и группы показателей, чтобы инфор-мация, хранимая в БД, имела смысл.