- •Введение
- •Содержание
- •1. Файловые системы
- •История развития
- •Файловые системы, принципы построения
- •Работа с типизированным файлом
- •Недостатки файловых систем
- •Задание
- •Реляционная таблица
- •Определение домена
- •Создание таблиц в среде Microsoft Access
- •Задание
- •Реляционные ключи
- •Связь между таблицами
- •Обеспечение целостности данных
- •Построение схемы данных средствами Microsoft Access
- •Мастер подстановок
- •Задание
- •Концепция ER-модели
- •Задание
- •Первая нормальная форма (1NF)
- •Вторая нормальная форма (2NF)
- •Третья нормальная форма (3NF)
- •Нормальная форма Бойса-Кодда (BCNF)
- •Четвёртая нормальная форма (4NF)
- •Пятая нормальная форма (5NF)
- •Задание
- •Выборка значений из таблиц – SELECT
- •Порядок сортировки – ORDER BY
- •Ограничение набора данных – WHERE
- •Предикат существования EXISTS
- •Агрегатные функции
- •Группировка данных – Group By
- •Псевдонимы столбцов
- •Псевдонимы таблиц
- •Объединение нескольких таблиц
- •Построение запросов в среде Microsoft Access
- •Задание
- •Вставка новой записи – INSERT
- •Редактирование данных – UPDATE
- •Удаление записей – DELETE
- •Задание
- •Основные типы данных SQL-92
- •Язык определения данных – DDL
- •Задание
- •Подготовка отчёта в среде Access
- •Задание
- •3-х уровневая архитектура ANSI-SPARC
- •Создание форм для ввода данных в Microsoft Access
- •Задание
- •Строка соединения ADO
- •Соединение с хранилищем данных, компонент TADOConnection
- •Установка соединения
- •Пример соединения без регистрации пользователя
- •Информирование о БД
- •Задание
- •Базовый класс доступа к данным TDataSet
- •Открытие и закрытие набора данных
- •Обновление набора данных
- •Перемещение по набору данных
- •Создание закладок и переход к закладке
- •Редактирование записей в наборе
- •Фильтрация набора данных
- •Организация поиска данных
- •Взаимодействие с элементами управления данными
- •Задание
- •Поле таблицы – класс TField
- •Классификация полей по функциональному назначению
- •Классификация полей по типу обслуживаемых данных
- •Обращение к отдельному объекту-полю
- •Задание
- •Поля подстановки
- •Вычисляемые поля
- •Организация отношения главная-подчинённая таблица
- •Задание
- •Поля BLOB
- •Задание
- •Источник данных – компонент TDataSource
- •Общие черты компонентов отображения данных
- •Сетка базы данных – компонент TDBGrid
- •Статический текст – компонент TDBText
- •Строка ввода БД – компонент TDBEdit
- •Многострочный текстовый редактор БД – TDBMemo
- •Изображение БД – компонент TDBImage
- •Список БД – TDBListBox
- •Комбинированный список БД – TDBComboBox
- •Флажок БД – TDBCheckBox
- •Радиогруппа БД – TDBRadioGroup
- •Компонент – TDBCtrlGrid
- •Навигатор – TDBNavigator
- •Задание
- •Создание базы данных
- •Удаление базы данных
- •Создание таблиц
- •Пример создания таблиц средствами Transact SQL
- •Создание представлений
- •Задание
- •Определение и использование переменных
- •Операторы управления Transact-SQL
- •Базовые функции Transact-SQL
- •Хранимые процедуры
- •Триггеры
- •Задание
- •Запрос TADOQuery
- •Хранимая процедура TADOStoredProc
- •Транзакции и их изоляция
- •Управление транзакциями и компонент TADOConnection
- •Задание
- •Построение простейшего документа XML
- •Атрибуты
- •Определение документа DTD
- •Задание
56
Как правило, триггер представляет собой последний рубеж обороны по поддержке бизнесправил базы данных.
CREATE TRIGGER имя_триггера ON имя_таблицы
FOR ([DELETE]| [INSERT] | [UPDATE])
AS инструкция_на_языке_SQL
В соглашении о SQL-92 нет чёткого описания синтаксиса создания триггера. Поэтому приводим достаточно условную синтаксическую конструкцию. Ключевые слова DELETE, INSERT, UPDATE указывают после какого события (удаления, вставки, редактирования) должен выполняться триггер.
В InterBase допускается использование ключевого слова BEFORE (например: BEFORE DELETE), говорящего, что событие происходит перед операцией (в данном случае удаления).
CREATE TRIGGER Delete_Book FOR Writer
ACTIVE BEFORE DELETE AS
DELETE FROM Book WHERE Book.Wrt_Key=Writer.Wrt_Key
Предложенный пример триггера (синтаксис InterBase) удаляет все книги из таблицы Book, написанные конкретным автором перед тем, как и сам автор будет удалён из таблицы
Writer.
Удаление триггера – DROP TRIGGER
DROP TRIGGER имя_триггера
Как и все операции удаления, операция удаления триггера начинается ключевым словом DROP, далее следует пояснение – какой объект из базы данных удаляется – TRIGGER, и в заключении через точку передаётся имя таблицы и имя триггера.
Задание
Используя изученные на занятии операторы SQL, подготовьте последовательность инструкций SQL позволяющих создать приведённые к четвёртой нормальной форме таблицы в соответствии с ER-моделью подготовленной вами на занятии IV. Модель “Сущ- ность-связь” (ER-модель). Предложите инструкции SQL, позволяющие реструктурировать имеющиеся таблицы (добавлять или удалять поля, изменять характеристики полей).
Ставропольский государственный университет, кафедра КБ
57
IX. Разработка отчётов БД в среде Access
Вид занятия – лабораторное занятие. Время занятия – 2 часа.
Программное обеспечение – среда Microsoft Access.
Отчёты (reports) предоставляют наиболее гибкий и одновременно наглядный способ отображения информации содержащейся в базе данных. Отчеты позволяют выбрать из базы данных требуемую пользователем информацию и оформить ее в виде документов, которые можно просмотреть и напечатать.
Средствами отчёта невозможно внести изменения в содержащиеся в БД данные.
Подготовка отчёта в среде Access
В среде Access отчёт может создаваться как на основе таблиц, так и на базе заранее подготовленных запросов. Допустим, что нам требуется подготовить отчёт по списочному составу студентов нашего ВУЗа. Разработаем простой объединяющий запрос:
SELECT Students.*, Spec.*
FROM Spec
INNER JOIN Students ON Spec.Spec_ID = Students.Spec_ID ORDER BY SurName, FName;
Сохраните вновь созданный запрос под именем “Report_StudentsList” и щёлкните по кнопке “Отчёты” на панели управления базой данных. Затем щелкните по кнопке “Создать” на панели инструментов. В окне “Новый отчёт” в качестве источника данных выберите недавно созданный запрос “Report_StudentsList”, вид отчёта – “Автоотчёт: ленточный” (рис. 9.1). После нажатия кнопки “OK” мастер самостоятельно разместит на форме отчёта элементы отображения данных, установит связи с соответствующими столбцами набора данных, подберёт размер, начертание и цвет шрифта (рис. 9.2). Вполне естественно, что подготовленный таким образом отчёт не будет иметь презентабельный вид. Он требует дополнительной творческой доработки.
Рисунок 9.1. – Мастер создания ленточных отчётов
© Осипов Д.Л., 2011
58
Рисунок 9.2. – Результат работы мастера отчётов
Для “ручной” настройки отчёта необходимо перейти в режим конструктора. Отчёт сразу “рассыпается” на пару десятков самостоятельных элементов управления. Здесь и обычные компоненты-метки (предназначенные для вывода вспомогательных надписей) и компоненты-поля (отвечающие за получение информации из результирующего набора данных).
Рисунок 9.3. – Открытие отчёта в режиме конструктора
Для настройки характеристик отдельного элемента выведите на экран его свойства (пункт “Свойства” контекстного меню). В рамках редактора свойств Вы сможете управлять всеми параметрами элемента управления.
Задание
В соответствии с полученными на занятии IV заданиями подготовьте 3-4 отчёта. Основной отчёт должен объединять в себе информацию из всех таблиц БД. Один из отчётов должен быть создан с помощью мастера отчётов Access.
Ставропольский государственный университет, кафедра КБ
59
X. Разработка интерфейса клиентского приложения БД в среде Access
Вид занятия – лабораторное занятие. Время занятия – 2 часа.
Программное обеспечение – среда Microsoft Access.
В задачи разработчика баз данных входит не только создание ключевых объектов БД (например, таблиц и запросов), но и разработка интуитивно понятного интерфейса позволяющего обычному пользователю (не имеющего ни малейшего представления об особенностях физической организации данных) просматривать, добавлять, редактировать и удалять данные.
3-х уровневая архитектура ANSI-SPARC
Идея отделения пользователя от физических данных возникла не вчера. Уже в начале 70-х годов XX века предпринимались первые попытки стандартизации структуры СУБД. Так в 1975 году Комитетом планирования стандартов и норм SPARC (Standards Planning and Requirements Committee) Национального Института Стандартизации США
(American National Standard Institute – ANSI), ANSI/X3/SPARC (ANSI, 1975). Коми-
тет ANSI/SPARC при проектировании СУБД была признана необходимость использования трехуровневого подхода (рис. 10.1).
|
|
Пользователь |
|
Пользователь |
|
|
Пользователь |
|||
Внешний |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
||
уровень |
|
Представление 1 |
|
Представление 2 |
|
Представление N |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Концептуальный уровень |
|
|
|
Концептуальная схема |
|
|
|
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Внутренний уровень |
|
|
|
Внутренняя схема |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Физическая организация данных
БД
Рисунок 10.1.- 3-х уровневая архитектура ANSI-SPARC
Цель трехуровневой архитектуры ANSI-SPARC заключается в отделении пользователь-
ского представления базы данных от ее физического представления.
Для отделения пользователя от данных модель ANSI_SPARC рекомендовала введение трёх уровней: внешнего, концептуального и внутреннего. Внешний уровень отражает представление БД с точки зрения пользователей. Этот уровень описывает ту часть базы данных, которая относится к каждому пользователю. Концептуальный уровень формирует обобщающее представление БД. Этот уровень описывает то, какие данные хранятся в базе данных, а также связи, существующие между ними. Наконец внутренний уровень отвечает за физическое представление базы данных в компьютере. Этот уровень описывает, как информация хранится в базе данных.
На протяжении предыдущих занятий мы с Вами активно работали в рамках внутреннего и концептуального уровня архитектуры ANSI-SPARC, а на самой первой лабораторной работе (I. Файловый системы) даже прикоснулись к особенностям физической организации данных первых прототипов современных БД. Сегодня настал черёд разработки
Ставропольский государственный университет, кафедра КБ