Кондаков Базовое программное обеспечение 2007
.pdfСоздание представлений. Синтаксис команды:
CRIATION VIEW [owner.]view_name [(column_name[,column_name]…)] [WITH ENCRYPTION]
AS select_statement [WITH CHECK OPTION]
где: view_name – имя создаваемого представления;
column_name – имя столбцов в представлении, эти имена заменяют имена реальных столбцов, которые берутся из реальных таблиц. Иногда столбцы в представлении могут создаваться в виде некоторой операции над исходными полями. Тогда исходного имени нет в принципе;
ENCRIPTION – наличие этой опции обеспечивает своего рода защиту, не позволяя пользователю определить, откуда представление извлекает столбцы;
WITH CHECK OPTION – включает контроль всех операций над строками для гарантии их сохранения при модификации данных с использованием представления;
AS select_statement – это предложение содержит информацию, каким образом и на основании каких таблиц создается представление.
Со специальной утилитой формирования представления мы познакомились на прошлой работе.
Создание триггера. Триггер – вид хранимой процедуры, выполняемый автоматически при попытке выполнить заданное действие с таблицей. Выполняется при попытке осуществить удаление, вставку или изменение данных. Вид SQL запроса на создание триггера:
Create trigger TrName ON table_name
FOR INSERT, UPDATE, DELETE
AS sql_statement
На рис. 4.4 приведено окно утилиты создания триггера. Она вызывается из редактора создания таблицы.
51
Рис. 4.4. Окно создания триггера
Выполнение работы
1. Первоначальное знакомство с базой данных Pubs.
•Загрузить компьютер и войти в систему со своим пользовательским login.
•Стартовать клиентскую часть SQL Server.
•Открыть в окне Server Manager базу данных Pubs, просмотреть группы и пользователей, которые допущены к работе с базой данных.
•Просмотреть объекты базы данных, таблицы, сохраняемые процедуры, представления, правила.
•Щелкнув два раза на имени, просмотреть структуру таблиц
AUTHORS и JOBS.
2. Использование запросов SQL для изучения базы данных Pubs.
•Открыть инструмент SQL Query.
•Просмотреть объекты базы данных, зафиксированные в системной таблице SYSOBJECTS. Для этого выполнить следующий запрос:
SELECT name, type FROM sysobjects
52
В результате запроса используются следующие обозначения: С – ограничение; D – значение по умолчанию; F – внешний
ключ; K – первичный ключ; L – журнал; P – сохраняемая процедура; R – правило; RF – сохраняемая процедура для размножения; S – системная таблица; TR – триггер; U – пользовательская таблица; V – представление; X – расширенная сохраняемая процедура.
•Сохранить результат выполнения запроса на диске D: в дирек-
тории LABORATORY.
•Составить и проверить действие следующих запросов:
♦Просмотреть всю информацию об авторах (таблица
AUTHORS).
♦Просмотреть все имена авторов (фамилию и имя) и их ID.
♦Просмотреть все имена авторов и города для авторов, проживающих в Калифорнии (CA).
♦Просмотреть все имена авторов и города для авторов, проживающих в Калифорнии или Юте (UT). Использовать два варианта – оператор IN и логическое OR.
♦Просмотреть все имена авторов, проживающих в городах, начинающихся на «C».
♦Просмотреть все города, в которых проживают авторы, названия не должны повторяться.
♦Просмотреть названия и цены книг в таблице TITLES, чья цена лежит в промежутке между 5 и 10 долларами. Использовать два варианта – операции сравнения и оператор BETWEEN.
Просмотреть все названия издательств (таблица PUBLISHERS), для которых не определено название штата.
♦Показать все книги, в названии которых хотя бы один раз встречается буква «p» и цена которых превышает $16.
Синтаксис запросов отразите в листе отчетности. Сохранить на диске и распечатать результат последнего запроса.
3.Изучение использования функций агрегирования.
•Определить полное число записей в таблице AUTHORS.
•Определить полную сумму скидок (discount) в таблице DISCOUNT.
•Определить среднюю, максимальную и минимальную цену
(price) книги в таблице TITLES.
53
•Определить среднюю цену книг в таблице titles, сгруппированную по идентификаторам издательства (внешний ключ), вывести идентификатор издательства и среднюю цену.
•Проделать то же, что и в предыдущем пункте, но для средних цен ≥ 10.
4. Изучение возможностей представления данных.
•Просмотреть названия и цены книг в таблице TITLES, чья цена лежит в промежутке между 5 и 10 долларами. При выводе информации озаглавить столбцы: Название, Цена.
•Теперь проделать то же самое, ограничив вывод названия подстрокой от 1 до 20 символов (функция substring (столбец, первый символ, последний символ)). Сохранить и распечатать результат запроса.
•Вывести список фамилий авторов по алфавиту (из таблицы AUTHORS), озаглавив колонку – фамилия автора.
•Вывести из таблицы TITLES тип книги (type) и среднюю цену для книг, у которых значение royalty = 10, сгруппированное и упорядоченное по типам.
5. Функции изменения данных.
•Перейти в таблицу, созданную на предыдущем занятии.
•Добавить строку в таблицу «тип контейнера».
•Изменить название контейнера в этой строке.
•Уничтожить эту строку.
После всех операций, использовать предложение SELECT для проверки результатов.
6.Создать представление. В процессе выполнения предыдущей лабораторной работы мы создали представление с помощью помощника. Сейчас мы создадим представление с помощью запроса на языке SQL. Представление должно содержать дату транзакции и имя пользователя, проводящего транзакцию.
7.Создать правило, ограничивающее вес контейнера величиной
400.Убрать аналогичное ограничение, установленное на предыдущей лабораторной работе. Проверить функционирование правила.
8.Создать хранимую процедуру, реализующую проведение транзакции.
Имя процедуры – new_trans. Список формальных параметров:
@us_id – идентификатор пользователя, тип – numeric;
54
@tr_type_id – идентификатор типа транзакций, тип – numeric; @con_id – идентификатор контейнера, тип – numeric; @weight – вес контейнера, тип – real;
@loc_id – идентификатор места расположения, тип – numeric. Процедура должна быть оформлена как транзакция. В начале и
в конце стоят команды BEGIN TRANSACTION и COMMIT TRANSACTION соответственно.
В теле процедуры необходимо декларировать (команда Declare)
две переменных @@smd – тип smalldatetime и @@trid – идентифи-
катор транзакции. Далее последовательно выполняются следующие команды:
Записать (select) в переменную @@smd значение сегодняшней даты с помощью функции GETDATE().
Вставить в таблицу transactions информацию о новой транзакции.
Получить значение идентификатора этой транзакции (максимальное значение идентификатора) и записать его в переменную
@@trid.
Вставить новую запись в таблицу container_transaction. Проверить работу хранимой процедуры.
9.Создать триггер, который на попытку удаления строки из таблицы «Пользователи» будет выводить сообщение (сообщение выводится командой Print «текст сообщения») и отменять выполнение команды. Попытаться выполнить удаление.
10.Выйти из SQL Server и выключить компьютер.
55
Лист отчетности
Студент________________________, группа________________
Количество объектов в базе данных Pubs________________
Синтаксис запросов пункта 2:
Результаты использования функций агрегирования: полное число записей в таблице AUTHORS___________
суммарная скидка в таблице DISCOUNTS_____________
средняя цена книги _______________________
максимальная цена книги__________________
минимальная цена книги___________________
Сколько издательств имеют среднюю цену книги больше или рав-
ную 10 долларам?_________________
Фамилия первого и последнего автора по алфави-
ту_______________________
Дата______________ Подпись преподавателя_________________
56
Лабораторная работа 5
СОЗДАНИЕ БАЗЫ ДАННЫХ В СУБД MICROSOFT ACCESS
Цель работы: научить студентов созданию реляционных баз данных в программном средстве MS Access. Продемонстрировать основные способы поддержания целостности данных в базах данных Access. Дать основные представления о создании простейшего интерфейса для ввода и просмотра данных, сортировки информации и создании запросов к базе данных.
Теоретические основы
Система управления базами данных Microsoft Access является одной из наиболее популярных среди настольных систем, поддерживающих реляционные модели базы данных. СУБД Microsoft Access входит в пакет MS Office, и в настоящее время эксплуатируется версия MS Access 2003. Данный программный продукт является мощным средством управления данными, позволяющим создавать приложения для работы с базами данных различной сложности. Основные черты Microsoft Access:
•стандартный интерфейс пакета MS Office;
•простой способ создания основных объектов базы данных, позволяющий интуитивно выполнять основные функции даже неопытным пользователям;
•средства автоматизации создания запросов;
•средства автоматизации создания графического интерфейса пользователя с помощью форм;
•наличие языка программирования, позволяющего создавать более сложные управления данными;
•поддержка структурированного языка запросов SQL;
•возможность работы с базами данных различных форматов через использование возможностей ODBC;
•возможность подключения базы данных к World Wide Web;
•легкость экспорта данных в MS SQL Server.
Специалисты рекомендуют использовать MS Access для конструирования приложений клиент/сервер для случаев, удовлетворяющих следующим требованиям:
57
•количество пользователей ограничено двадцатью;
•объем базы данных не превышает 500 Мб;
•умеренные требования к надежности и защите данных.
В этом случае MS Access легко формирует систему файлового сервера. Рассмотрим последовательность действий при создании и работе с базами данных в Access.
Создание таблиц базы данных. При запуске СУБД появляется заставка, предлагающая открыть уже существующую базу данных, перечисляя все используемые ранее базы данных, либо приступить к созданию новой. Выбираем последнее и нажимаем клавишу подтверждения. Определяем папку, в которой будет расположена база данных, и задаем ее имя. На экране открывается форма, которая в дальнейшем, по мере наполнения базы данных, будет предоставлять нам интерфейс для создания объектов базы и просмотра дан-
ных (рис. 5.1).
Рис. 5.1. Форма работы с базой данных СУБД MS Access
Основное действие при создании базы данных – создание таблицы. Access предлагает три способа создания таблиц. Можно ис-
58
пользовать помощник, который предлагает огромный выбор уже готовых шаблонов таблиц. Можно создать таблицу «по факту», сразу заполняя поля данными. Но опытный пользователь всегда предпочтет создание таблицы с использованием конструктора таблиц, поскольку этот подход дает возможность полностью определять типы данных и ограничения на столбцы. На рис. 5.2 представлена форма создания таблицы в режиме конструктора.
Рис. 5.2. Форма создания таблицы в режиме конструктора
При сохранении таблицы вводим ее имя. Как видно из рисунка, мы определили ключевое поле и задали определенные ограничения на поля данных.
В отличие от MS SQL Server, Access позволяет существенно модифицировать таблицу после ее создания. Для этого достаточно выбрать таблицу и нажать клавишу «Конструктор». Открывается окно конструктора, и пользователь может вводить любые изменения.
Демонстрируется возможность задавать тип данных в поле. Для этого надо щелкнуть в столбце Тип данных нужного поля. Откроется список возможных типов данных. Можно задать длину дан-
59
ных, формат поля, значение по умолчанию и то, что поле обязательно должно быть заполненным. Обратите внимание на знак ключевого поля и тип данных – счетчик. Для такого типа наращивание номера ключевого поля происходит автоматически, и номера никогда не повторятся.
Для создания ключевого поля необходимо выбрать поле и щелкнуть второй клавишей мыши. Появляется всплывающее меню, в котором можно задать значение Главного ключа. Если выделено несколько полей, то будет создан составной ключ.
Чтобы заполнить таблицу, достаточно щелкнуть на иконке таблицы, и ввести данные непосредственно в поля таблицы. При вводе данных будут осуществляться проверки на выполнение всех ограничений (рис. 5.3)
Рис. 5.3. Ввод данных в таблицу
Установление связей между таблицами. Для создания связей между таблицами в главном меню открывается меню «Сервис» и в
60