- •Курсовой проект
- •«Системное программирование»
- •Содержание
- •1 Проектирование базы данных
- •Описание предметной области «Магазин компакт дисков»
- •1.2 Логическая модель базы данных
- •1.3 Физическая модель базы данных
- •Создание базы данных «Магазин компакт дисков»
- •Создание таблиц
- •Создание файловых групп
- •Заполнение таблиц с помощью t-sql
- •Создание триггера
- •Создание пользователей
- •Создание автоматических задач по резервному копированию
- •Создание репликации данных
- •2 Описание языка t-sql
- •2.1 Создание запросов к бд
- •2.2 Создание представлений
- •2.3 Создание процедур
- •2.4 Экспорт данных в ms Excel
-
Создание триггера
Триггеры – особый инструмент SQL-сервера, используемый для поддержания целостности данных в базе данных. С помощью ограничений целостности, правил и значений по умолчанию не всегда можно добиться нужного уровня функциональности. Часто требуется реализовать сложные алгоритмы проверки данных, гарантирующие их достоверность и реальность. Кроме того, иногда необходимо отслеживать изменения значений таблицы, чтобы нужным образом изменить связанные данные. Триггеры можно рассматривать как своего рода фильтры, вступающие в действие после выполнения всех операций в соответствии с правилами, стандартными значениями и т.д.
Триггер представляет собой специальный тип хранимых процедур, запускаемых сервером автоматически при попытке изменения данных в таблицах, с которыми триггеры связаны. Каждый триггер привязывается к конкретной таблице. Все производимые им модификации данных рассматриваются как одна транзакция. В случае обнаружения ошибки или нарушения целостности данных происходит откат этой транзакции. Тем самым внесение изменений запрещается. Отменяются также все изменения, уже сделанные триггером.
Существует три типа триггеров:
INSERT TRIGGER – запускаются при попытке вставки данных с помощью команды INSERT.
UPDATE TRIGGER – запускаются при попытке изменения данных с помощью команды UPDATE.
DELETE TRIGGER – запускаются при попытке удаления данных с помощью команды DELETE.
Для примера создан триггер, который запретит любому пользователю ввести нового поставщика в соответствующую таблицу, если последний из Москвы. Триггер показан на рисунке 13.
Рисунок 13 – Триггер запрета ввода новой записи по условию
Скрипт создания триггера приведён ниже:
CREATE TRIGGER MoscowHaters
ON Postavshiki
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
if (select Firm_city from Postavshiki)='Moscow'
rollback
print 'We do not work with Moscow!'
END
При желании добавить данного поставщика будет показано сообщение об ошибке, пример показан на рисунке 14.
Рисунок 14 – сообщение об ошибке посредством триггера 1
Триггер №2. Триггер DDL.
USE CD_Shop
GO
CREATE TRIGGER CantDropMe
ON DATABASE
FOR DROP_TABLE
AS PRINT 'You cannot delete tables!'
ROLLBACK
Данный триггер предотвращает попытку удаления любой таблицы из базы данных CD_shop, при этом показывая сообщение об ошибке. Пример показан на рисунке 15.
Рисунок 15 – Сообщение об ошибке, вызываемое триггером 2
-
Создание пользователей
Для БД Магазин компакт дисков были созданы 2 пользователя: Manager и Seller. Создание их в Windows показано на рисунке 16.
Рисунок 16 – Создание пользователей в Windows
Далее в MSSQL был создан пользователь Manager с правами sysadmin (рисунок 17) и пользователь Seller с правами public и схемой по умолчанию datareader (рисунок 18)
Рисунок 17 – Роль sysadmin для пользователя Manager
Рисунок 18 – Назначение прав пользователю Seller внутри SQL Server
При попытке, например, создать новую таблицу, пользователю Seller будет показано сообщение об ошибке, как показано на рисунке 19.
Разграничение прав пользователей позволяет защитить данные, как от несанкционированного доступа, так и от случайных действий определенного круга пользователей.
Рисунок 19 – Сообщение об ошибке для пользователя Seller