- •Курсовой проект
- •Содержание
- •1 Подготовительная работа
- •1.1 Программные продукты, используемые при проектировании базы данных
- •1.2 Создание структуры базы данных
- •2. Проектирование базы данных
- •2.1. Создание базы данных
- •2.2. Создание таблиц
- •2.3. Заполнение таблиц
- •2.4. Создание триггеров
- •3. Создание запросов
- •3.1. Создание запросов к базе данных
- •3.2. Создание представлений
- •3.3. Создание функции
- •Список использованных источников
2.4. Создание триггеров
Триггер - это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события - добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных.
Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. В случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции. Тем самым внесение изменений запрещается, отменяются также все изменения, уже сделанные триггером. Создает триггер только владелец базы данных. Для базы данных «Кондитерская фабрика» создадим три триггера:
1) Триггер типа UPDATE печатает определенный текст, при каждой модификации таблицы «Водители». Триггер- (рисунок 5).
Рисунок 5 - Триггер типа UPDATE
Будет возвращено сообщение «В таблицу были внесены изменения (строк обработано: 1)», так как в результате выполнения оператора UPDATE был запущен триггер. В данном триггере мы задали вывод сообщения, чтобы можно было увидеть работу триггера;
2) Триггер типа DELETEбудет сохранять все строки, удаленные из таблицы «Доставка», в таблицу «Доставка_Корзина» для последующего анализа данных. Код создания триггераDELETE, внесение строки в таблицу «Доставка» и её удаление, приведены на рисуноке 6.
Создание триггера «Доставка_Корзина»:
CREATE TRIGGER Корзина
ON Доставки
FOR DELETE
AS
INSERT INTO Доставки_Корзина
SELECT * FROM Доставки_Корзина
GO
Рисунок 6 - Триггер типа DELETE
Отметим, что надпись о количестве обработанных строк отобразилась дважды. Первый это непосредственно удаление строки, а второй запись ее в таблицу «Доставка_Корзина». Это возможно потому, что резервной таблице присвоены те же имена колонок и те же типы данных, что и в исходной таблице. Изначально таблица «Доставка_Корзина» не содержит записей, она будет заполняться по мере удаления записей из таблицы «Доставка»;
3) Триггер INSERT для таблицы «Заказы» будет проверять указано ли количество изделия (хотя бы 1). Проверка триггера представлена на рисунке 7:
-- создание триггера типа INSERT
CREATE TRIGGER Триггер3
ON Заказы
AFTER INSERT
AS
IF (SELECT КОЛИЧЕСТВО FROM ЗАКАЗЫ) < 1
ROLLBACK
Рисунок 7 - Проверка триггера типа INSERT
3. Создание запросов
3.1. Создание запросов к базе данных
С помощью запросов мы выбираем необходимую информацию из базы данных.
Создадим два запроса к базе данных «Кондитерская фабрика»:
1) Найдем кондитерские изделия стоимость которых меньше двух недель:
SELECT Наименование,
Срок годности,
Дата_изготовления
FROM Кондитерские_изделия
WHERE Срок годности<14
2) Найдем все шоколадные батончики из таблицы «Кондитерские изделия»
SELECT Наименование
FROM Кондитерские_изделия
WHERE Наименование
LIKE '%Шоколадный батончик%'
3.2. Создание представлений
Представление – это виртуальная таблица, определяемая запросом, содержащим оператор SELECT. Эта виртуальная таблица состоит из данных одной или нескольких реальных таблиц, а для пользователей представление выглядит, как реальная таблица. Пользователи могут обращаться к этим виртуальным таблицам в операторах Transaсt-SQL таким же образом, как и к таблицам. К представлению можно применять операции SELECT, INSERT, UPDATE и DELETE. Создание представлений осуществляется с помощью оператора CREATE VIEW языка T-SQL.
Создадим три представления для разных таблиц базы данных:
1) Представление по таблице «Водители»:
CREATE VIEW Водители_представление
AS SELECT
Номер_водителя,
Фамилия,
Имя,
Отчество
FROM Водители
2) Представление для таблицы «Доставка», в котором выводятся все номера водителей меньше 13:
CREATE VIEW Доставки_представление
AS SELECT
Дата_вывоза,
Дата_доставки,
Номер_водителя
FROM Доставки
WHERE Номер_водителя<003
3) Представление для таблицы «Кондитерские изделия», в котором выводятся только те строки в которых цена изделия превышает 300 рублей:
CREATE VIEW Кондитерские_изделия_представление
AS SELECT
Наименование
FROM Кондитерские_изделия
WHERE Цена >300