- •Белорусский государственный университет модели данных и субд Учебное пособие
- •Введение
- •Раздел 5 посвящен семантическим или инфологическим моделям, используемым в современных программных системах поддержки проектирования, называемых case-системами (Computer Aided Software Engineering).
- •Раздел 10 посвящен вопросам распределенной обработки данных, здесь рассматриваются проектирование распределенных систем обработки данных, уделяется большое внимание фрагментации данных.
- •1. Основные понятия и определения теории баз данных.
- •1.1. Причины возникновения систем баз данных.
- •1.3. Системы управления базами данных.
- •2. Классификация моделей данных.
- •2.1. Моделирование данных.
- •2.2. Иерархическая модель.
- •2.3. Сетевая модель.
- •2.4. Реляционная модель.
- •2.5. Объектно-ориентированная модель.
- •2.6. Объектно-реляционная модель.
- •2.7. Многомерная модель.
- •3. Реляционная алгебра и реляционное исчисление.
- •3.1. Реляционная алгебра.
- •3.2. Реляционное исчисление.
- •4. Проектирование реляционных баз данных на основе нормализации.
- •4.1. Нормализация отношений, цели нормализации.
- •4.2. Структура функциональных зависимостей.
- •4.2.1. Функциональные зависимости и их свойства.
- •4.2.2. Ключи схем отношений.
- •4.2.3. Полные и неполные функциональные зависимости.
- •4.2.4. Покрытие множеств зависимостей.
- •4.2.5. Декомпозиция схем отношений.
- •4.2.6. Декомпозиции, сохраняющие зависимости.
- •4.3 Нормальные формы отношений.
- •4.3.1. Первая и вторая нормальные формы схем отношений.
- •4.3.2. Третья нормальная форма схем отношений.
- •4.3.4. Четвертая нормальная форма схем отношений.
- •4.3.5. Пятая нормальная форма схем отношений.
- •5. Семантическое моделирование
- •5.1. Цели и средства семантического моделирования.
- •5.2. Метод “сущность-связь”.
- •5.3. Этапы моделирования.
- •5.4. Правила формирования отношений.
- •Формирование отношений для связи 1:1.
- •Формирование отношений для связи 1:м.
- •6. Структура субд и основные функции.
- •6.1. Типовая организация современной субд.
- •6.2. Поддержка языков бд.
- •6.3. Управление данными во внешней памяти.
- •6.4. Управление буферами оперативной памяти.
- •6.5. Управление транзакциями.
- •6.6. Журнализация и восстановление после сбоев.
- •7. Управление транзакциями.
- •7.1. Свойства транзакций. Проблемы параллельного выполнения.
- •7.2. Консервативные методы управления транзакциями.
- •7.2.1. Метод блокировки.
- •7.2.2. Метод временных отметок.
- •7.3. Оптимистические методы управления транзакциями.
- •7.4. Уровень детализации блокируемых элементов данных.
- •8. Восстановление базы данных после сбоев.
- •8.1. Основные принципы и функции восстановления.
- •8.3. Создание контрольных точек.
- •8.4. Методы восстановления.
- •9. Защита баз данных.
- •9.1. Основные понятия.
- •9.2. Компьютерные средства защиты.
- •9.3. Некомпьютерные средства защиты.
- •10. Распределенные базы данных
- •10.1. Основные концепции.
- •10.2. Функции распределенных субд.
- •10.3. Разработка распределенных реляционных баз данных.
- •10.4. Распределение данных.
- •10.5. Фрагментация.
- •10. 6. Обеспечение прозрачности в рсубд.
- •11. Введение в субд oracle.
- •11.1. Характеристика субд Oracle.
- •11.2. Объекты базы данных Oracle.
- •11.4. Архитектура базы данных Oracle.
- •11.5. Архитектура экземпляра базы данных Oracle.
- •11.6. Формирование базы данных и экземпляра Oracle.
- •12. Основы языка sql.
- •12.1. Алфавит и лексемы языка sql.
- •12.2. Типы данных языка sql.
- •12.3. Операторы языка sql.
- •12.4. Операции языка sql.
- •12.5. Функции языка sql.
- •12.6. Создание, модификация и удаление таблиц.
- •12.7. Выбор информации из базы данных.
- •13. Основы языка pl/sql.
- •13.1. Алфавит и лексемы языка.
- •13.3. Типы данных и объявление переменных.
- •13.4. Операторы.
- •13.5. Курсоры.
- •13.6. Обработка исключительных ситуаций.
- •13.7. Триггеры базы данных.
- •13.8. Хранимые процедуры и функции.
- •13.9. Пакеты.
- •13.10. Объекты.
- •Литература
13. Основы языка pl/sql.
PL/SQL – это процедурный, блочно-структурированный язык программирования, являющийся расширением языка SQL. Он представляет ряд возможностей, которые обеспечивают возможность создания больших, многофункциональных приложений для работы с базой данных.
13.1. Алфавит и лексемы языка.
Алфавит языка включает следующий набор символов:
английские буквы верхнего и нижнего регистров A..Z, a..z;
арабские цифры 0..9;
символы + - * / < > = ; : . , ' ~ ! @ # $ % ^ & _ ( ) { } [ ]
символы табуляции, пробелы и символы возврата каретки.
Лексемы, группы символов алфавита, делятся на идентификаторы, литералы, разделители и комментарии.
Идентификаторы имеют длину до тридцати символов и состоят из прописных и строчных букв, цифр и знака подчеркивания, причем первой должна быть буква. Допускается, но не рекомендуется использовать специальные символы, такие как #, $. Некоторые из идентификаторов в языке PL/SQL имеет специальное синтаксическое значение. Такие идентификаторы называются зарезервированными и не должны переопределяться.
Литералы – это явно заданное число, символ, строка или логическое значение, не представленное идентификатором. Литералы делятся на числовые, строковые и логические.
Числовые литералы бывают двух типов: целые и действительные. Целые литералы – это знаковые числа без десятичной точки (6 ; -14). Действительные литералы – знаковые целые или дробные числа с десятичной точкой (6.667; -12.0). Допускается запись числовых литералов в экспоненциальной форме (1.0Е-7; 2Е5).
Строковые литералы – это последовательность символов, заключенных в одинарные кавычки (апострофы). Все строковые литералы, за исключением пустой строки ('') имеют тип CHAR. Если в строковом литерале необходимо указать одинарную кавычку, то при записи она просто удваивается.
Логические литералы – это предопределенные значения TRUE, FALSE и NULL. NULL указывает на неизвестное значение.
Разделитель – это совокупность одного или двух символов, которая имеет определенное значение в PL/SQL. Простые разделители содержат только один символ. К ним относятся, например, знаки арифметических операций ( + , – , * , / ), знаки операций отношения ( = , > , < ), признак конца выражения ( ; ). Составные разделители содержат два символа. К ним относятся, например, оператор присваивания ( := ), оператор конкатенации ( | | ), операция возведения в степень ( ** ), начало и конец метки ( << >> ), оператор диапазона ( .. ), операция отношения неравно (<>, !=, ~=, ^= ), операция отношения меньше или равно ( <= ), операция отношения больше или равно ( >= ).
Комментарии содержат пояснительный текст и делятся на однострочные и многострочные. Однострочный комментарий представляет собой строку, начинающуюся с двух символов дефис (-). В многострочном комментарии текст заключается в специальные разделители: /* */.
13.2. Структура программы.
Представляет собой набор блоков PL/SQL, рекурсивно вложенных друг в друга.
Структура блока:
[<<метка>>]
[DECLARE
раздел объявлений]
BEGIN
исполняемый раздел
[EXEPTION
раздел обработки исключений]
END[<<метка>>];
Обязательным должен быть только исполняемый раздел, содержащий операторы языка. Существуют следующие типы блоков: анонимные, именованные, триггеры и подпрограммы (процедуры, функции, пакеты). Анонимные блоки в отличие от именованных не содержат меток. Именованные и анонимные блоки называются динамическими.
