
- •Министерство образования и науки Российской Федерации
- •Содержание
- •Лабораторная работа №1-2 анализ поведения системы с использованием контекстных диаграмм йордана – де марко
- •Лабораторная работа №3 анализ данных. Построение инфологической модели данных бд
- •Задание 1
- •Задание 3
- •Задание 5
- •Задание 6
- •Задание 7
- •Задание 9
- •Лабораторная работа №4 преобразование инфологической модели данных в реляционную на основе правил преобразования
- •Лабораторная работа №5 построение реляционной моедли бд с использованием метода нормальных форм
- •Лабораторная работа №6 Проект как средство объединения элементов приложения. Создание базы данных в состве проекта visual foxpro
- •Лабораторная работа №7 создание базы данных в составе проекта vfp
- •Лабораторная работа №8 создание форм как средства работы с таблицами
- •Форма как средство ввода и редактирования данных
- •Создание формы с помощью конструктора форм
- •Окно конструктора форм
- •2. Создание формы
- •3. Настройка параметров формы
- •4. Среда окружения формы
- •6. Размещение объектов в форме
- •6.1. Размещение полей таблиц и надписей к ним с использованием построителя формы
- •6.2. Текстовая информация
- •6.3. Поле ввода
- •6.4. Использование построителя для создания формы
- •6.5. Поле редактирования
- •6.6. Кнопки управления
- •6.6.1. Размещение одиночных кнопок
- •6.6.2. Редактирование составных объектов Создание группы кнопок
- •7. Создание формы с помощью мастера
- •Лабораторная работа № 9-10 Запросы к базе данных
- •I. Создание однотабличного запроса:
- •II. Создание многотабличного запроса:
- •III. Группировка полей запроса
- •IV. Подзапросы
- •Использование представлений данных
- •Создание представления данных
- •Просмотр представления данных
- •Сохранение созданного представления данных
- •Параметры представления данных
- •Редактирование данных
- •Установка редактируемых полей
- •Лабораторная работа № 11-12 Создание и печать отчетов
- •2.2. Типы полос окна конструктора отчета
- •Лабораторная работа №13 Хранимые процедуры и триггеры
- •1. Условия достоверности, хранимые процедуры, триггеры
- •Хранимые процедуры
- •Условия достоверности ввода данных на уровне поля таблицы
- •Условия достоверности ввода данных на уровне записей
- •Триггеры
- •Использование триггеров и хранимых процедур
- •Использование триггеров при определении ссылочной целостности
- •Определение значения поля при добавлении новой записи
- •Проверка удовлетворения введенных значений заданному условию
- •Лабораторная работа № 14 Создание меню приложения
- •Лабораторная работа № 15 Генерация приложения
- •Построение проекта и генерация приложения
- •Установка основной программы проекта
- •Использование опции Exclude
- •Очистка проекта от удаленных файлов
- •Построение проекта
- •1. Последовательность действий при настройке параметров формы
- •Форматы данных
- •2. Поле ввода
- •Коды шаблонов picture
- •3. Использование построителя при создании поля ввода
- •Назначение флажков вкладки format
- •Назначение параметров вкладки style
- •4. Поле редактирования
- •5. Кнопки управления
- •5.1. Размещение одиночных кнопок
- •5.2. Создание группы кнопок
- •Расширенные средства ввода данных
- •1. Отображение данных в форме в табличном виде
- •2. Использование построителя
- •Назначение вкладок окна Grid Builder
- •3. Свойства, определяющие объект Grid
- •3.1. Свойства объекта Column
- •Свойства объекта Header
- •3.3. Свойства объекта Text
- •4. Создание многотабличных форм для таблиц, имеющих отношение "один-ко-многим"
- •4.1. Создание многотабличной формы с помощью мастера
- •Варианты продолжения работы с формой
- •4.2. Создание объекта Grid с помощью конструктора форм
- •Создание формы, содержащей объект Grid
- •Создание формы, содержащей три объекта Grid
- •5. Создание формы с вкладками
- •6. Набор форм
- •7. Таймер
- •Назначение свойств объекта Timer
- •7.1. Создание формы с использованием таймера
- •8. Добавление данных в список
- •Рекомендации по созданию отчета
- •Создание отчета с помощью конструктора отчетов
- •1. Окно конструктора отчетов
- •2. Типы полос окна конструктора отчета
- •3. Использование команды Quick Report для размещения полей
- •4. Установка среды окружения отчета
- •5. Размещение объектов в отчете
- •5.1.Размещение в отчете текстовой информации
- •5.2. Добавление в отчет областей заголовка и итогов
- •5.3. Создание простого отчета
- •5.4. Размещение полей
- •5.5. Формирование выражения поля
- •5.6. Задание формата данных
- •5.7. Задание условий печати
- •5.8. Расположение поля в полосе
- •5.9. Размещение итогового поля
- •5.10. Размещение в отчете линий и прямоугольников
- •5.11. Панель инструментов Color Palette
- •5.12. Размещение в отчете рисунков
- •6. Создание отчета в свободной форме
- •7. Создание табличного отчета
- •8. Группировка данных в отчете
- •8.1. Использование группировки в отчете
- •9. Использование в отчете переменных
- •10. Разметка страницы отчета
- •11. Создание многоколоночного отчета
Использование триггеров и хранимых процедур
Рассмотрим несколько примеров использования триггеров и хранимых процедур для определения условия достоверности ввода данных и начальных значений полей таблицы.
Использование триггеров при определении ссылочной целостности
В простых случаях Visual FoxPro может самостоятельно создать триггер. Для этого необходимо воспользоваться опцией Edit Referential Integrity определения связи в окне конструктора БД.
Ссылочная целостность предназначена для автоматической генерации выражения и функции триггера для пары связанных таблиц, т.е. она следит за тем, чтобы значение внешнего ключа дочерней таблицы всегда соответствовало значению ключевого поля родительской таблицы. Никакие другие поля в этом случае значения не имеют.
Для указания построителю, какое поле считать ключевым, а какое внешним ключом, необходимо установить, необходимо установить между двумя таблицами «постоянную связь». Затем необходимо выбрать один из трех возможных типов отношений между этими таблицами (табл.2).
Таблица 2
Формирование правил для различных типов отношений
Триггер |
Тип отношения |
Правило |
UPDATE |
Cascade |
При изменении ключевого поля родительской таблицы изменить значение внешнего ключа во всех соответствующих записях подчиненной таблицы |
Restrict |
Запретить модификацию ключевого поля родительской таблицы, если существует хотя бы одна соответствующая ей запись в подчиненной таблице | |
Ignore |
Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой | |
DELETE |
Cascade |
При удалении записи в родительской таблице удалить все соответствующие записи подчиненной таблицы |
Restrict |
Запретить удаление записи в родительской таблице, если существует хотя бы одна соответствующая ей неудаленная запись в подчиненной таблице | |
Ignore |
Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой | |
INSERT |
Cascade |
Не существует |
Restrict |
Запретить создание новой записи в подчиненной таблице, если в родительской таблице не существует записи с указанным значением ключевого поля | |
Ignore |
Не настраивать никаких отношений между таблицами. Модификация в одной таблице никак не влияет на модификацию в другой |
Эти правила относятся исключительно к содержимому ключевого поля родительской таблицы и внешнего ключа дочерней.
После выбора типа взаимоотношений между таблицами происходит следующее:
в хранимых процедурах базы данных создаются функции, обеспечивающие указанный тип взаимоотношений вводимых данных;
в свойствах таблиц добавляются в выражения триггеров вызов соответствующих функций (см. рис.3).
Контрольные вопросы:
Перечислите правила, которые формируются при установлении типа связи для соответствующих операций в таблице.
В каких случаях срабатывают триггеры, созданные с помощью Referential Integrity Builder?
Практическое задание:
Для двух связанных таблиц БД (согласно индивидуальному заданию) определить различные правила для контроля ссылочной целостности с использованием триггеров UPDATE, DELETE и INSERT. Выполнить действия по вставке, модификации и удалению записей, отслеживая срабатывание триггеров при корректных и некорректных действиях с записями таблицы.