
- •Первая нормальная форма.
- •Основной пример. Отношение (Сотрудники-Отделы-Проекты)
- •Функциональные зависимости отношений.
- •Вторая нормальная форма.
- •Анализ декомпозированных отношений
- •Третья нормальная форма.
- •Алгоритм приведения к 3нф.
- •Сравнение нормализованной и ненормализованной модели.
- •Корректность процедуры нормализации - декомпозиция без потерь.
- •Теорема Хеза.
- •Четвертая нормальная форма.
- •Многозначные зависимости.
- •Теорема Фейджина.
- •Пятая нормальная форма.
- •Зависимости соединения.
- •Приведение от 3нф к 5нф.
- •Информационная система. Состав и свойства.
- •Функциональные части ис. Обеспечивающие части ис.
- •Средства структурного анализа и их взаимоотношения.
- •Диаграммы потоков данных.
- •Основные компоненты диаграммы потоков данных.
- •Контекстная диаграмма dfd и детализация процессов.
- •Процесс построения модели dfd
- •Триггеры и ограничения. События, условия и действия.
- •Объявление и открытие курсора.
- •Оператор fetch.
- •Предметная область и ее модель.
- •Физическое проектирование бд.
- •Процедурные и декларативные языки манипулирования данными.
- •Потребительские свойства ис.
- •Характерные особенности современных крупных проектов ис.
- •Частные принципы создания ис.
- •Организационно-технологические принципы создания ис.
- •Аспекты описания ис.
- •Стадии проектирования ис.
- •Предпроектная стадия проектирования ис.
- •Этап проектирования ис.
- •Этап внедрения ис.
- •Анализ информационных потребностей ис.
- •Жизненный цикл программного обеспечения ис.
- •Модели жизненного цикла по ис.
- •Каскадная модель жизненного цикла по ис.
- •Спиральная модель жизненного цикла по ис.
- •Итерационная модель жизненного цикла по ис.
- •Этап определения стратегии.
- •Принципы структурного анализа.
- •Словарь данных dfd.
- •Спецификации управления.Диаграммы переходов состояний (std).
- •Из каких объектов состоит std.
- •Основные понятия er-диаграмм: сущности, экземпляры, атрибуты, связи.
- •Типы и модальности связей.
- •Более сложные элементы er-модели.
- •Подтипы и супертипы.
- •Получение реляционной схемы из er-диаграммы.
- •Пример разработки простой er-модели.
- •Проектирование баз данных.
- •Концептуальное и логическое проектирование бд.
- •Денормализация для оптимизации
- •Физическое проектирование бд. Типы данных.
- •Физическое проектирование бд. Индексы, кластеры.
- •Физическое проектирование бд. Временные данные.
- •Физическое проектирование бд. Хранение объектов данных.
- •Оптимизация запросов, основные понятия.
- •Синтаксическая оптимизация
- •Оптимизация, основанная на правилах
- •Оптимизация, основанная на вычислении стоимости
- •Последовательность шагов оптимизации запросов
- •Физические операции манипулирования данными.
- •Анализ запросов с целью повышения скорости их выполнения
- •Использование базовых переменных, понятие курсора
- •Базовая переменная sqlstate.
- •Операции встроенного sql, не использующие курсоров.
- •Операции, использующие курсоры.
- •Операторы позиционного удаления и модификации данных.
- •1.Оператор позиционного удаления
- •2.Оператор позиционной модификации
- •Понятие, назначение и структура хранимых процедур.
- •Использование хранимых процедур.
- •Операторы окончания транзакции.
- •Встроенный sql в vba.
- •Уровни моделирования выделяемые при разработке базы данных.
- •Принципы проектирование реляционных баз данных
- •Критерии оценки качества логической модели данных. Адекватность базы данных предметной области
- •Назначение нормализации отношений.
- •Приведение к 5нф.
- •Этапы разработки проекта: стратегия и анализ.
- •Этапы проектирования.Стратегия.
- •Этап анализа.
- •Основные методологии структурного анализа.
- •Сильные и слабые сущности.
- •Некоторые принципы проверки качества и полноты информационной модели.
- •Методология idef1х.
- •Идентифицирующие и неидентифицирующие связи.
- •Мощность связи.
Использование базовых переменных, понятие курсора
Рассмотрим подробно следующий код программы со встроенным языком SQL.
EXEC SQL BEGIN DECLARE SECTION ;
DCL SQLSTATE CHAR(5) ;
DCL P# CHAR(6) ;
DCL WEIGHT FIXED DECIMAL(3) ;
EXEC SQL END DECLARE SECTION ;
P# = ‘P2’ ; /* например */
EXEC SQL SELECT P.WEIGHT
INTO :WEIGHT
FROM P
WHERE P.P# = :P# ;
IF SQLSTATE = ‘00000’
THEN … ; /* WEIGHT (ВЕС) = выбираемому значению */
ELSE … ; /* возникла какая-то исключительная ситуация */
Операторы встроенного SQL предваряются инструкцией EXEC SQL, так что их легко отличить от других операторов базового языка, и заканчиваются специальным завершающим символом («;» для PL/1).
Выполняемый оператор SQL может быть в программе везде, где могут быть выполняемые базовые операторы. В отличие от интерактивного SQL, встроенный SQL включает отдельные операторы, которые являются чисто декларативными, а не выполняемыми..
Операторы SQL могут включать ссылки на базовые переменные такие ссылки должны включать префикс в виде двоеточия для отличия их от имен столбцов SQL. Базовые переменные могут использоваться во встроенном SQL везде, где могут использоваться литералы в интерактивном языке SQL. Они могут также находиться в инструкции INTO операторов SELECT и FETCH, обозначая результирующие переменные для выборки, и в определенных операторах динамического SQL.
Назначение инструкции INTO оператора SELECT – указать результирующие (целевые) переменные, в которые будут возвращены выбранные значения.
Все базовые переменные, на которые будут ссылаться операторы SQL, должны быть определены в разделе описаний встроенного SQL, который ограничивается операторами BEGIN и END раздела описаний (DECLARE SECTION).
Каждая программа встроенного SQL должна включать базовую переменную, называемую SQLSTATE. После выполнения какого-либо оператора SQL в такую переменную в программе возвращается код состояния; в частности, код состояния 00000 означает, что оператор выполнился успешно, а значение 02000 – что оператор выполнился, но никаких данных, удовлетворяющих запрос, не было найдено. Таким образом, каждый оператор SQL в программе должен завершаться проверкой переменной SQLSTATE, а соответствующие действия должны предприниматься, если значение не то, которое ожидалось.
Базовые переменные должны иметь подходящие типы данных в соответствии с тем, как эти переменные используются.
Базовые переменные для столбцов SQL должны иметь те же имена.
Как уже упоминалось, каждое выражение SQL в принципе должно сопровождаться проверкой возвращаемого значения SQLSTATE. Оператор WHENEVER предназначен для упрощения этого процесса и имеет следующий синтаксис:
EXEC SQL WHENEVER условие действие завершающий_символ
Условие может принимать значение SQLERROR (ошибка SQL) или NOT FOUND (не найдено – SQLSTATE =02000), а действие – это либо оператор CONTINUE (продолжить), либо оператор GO TO (перейти к). Оператор WHENEVER не является выполняемым, это просто директива для процессора языка SQL. Наличие в программе выражения «WHENEVER уловие GO TO метка» приведет к тому, что процессор вставит оператор “IF условие GO TO метка” после каждого встретившегося ему выполняемого оператора SQL, а вот по выражению “WHENEVER условие CONTINUE” процессор не вставляет никаких операторов.
операторы выборки имеют специальную трактовку. Проблема состоит в том, что такие операторы выбирают в общем случае не одну строку, в то время как базовые языки не приспособлены для обработки выборки более одной строки за один раз. Таким образом, необходим мостик между уровнем выборки «множества за один раз» к уровню выборки «строки за один раз», что обеспечивается курсором. Курсор – это новый вид объекта SQL, который применяется только во встроенном SQL. Он представляет собой такой вид указателя, который может быть использован для перемещения по набору строк, указывая поочередно на каждую из них и таким образом обеспечивая возможность адресации к этим строкам – к одной за один раз.