- •Содержание
- •1. Введение
- •2. Разработка и анализ технического задания
- •2.1. Описание предметной области
- •2.3.2. Требования к защите информации
- •2.3.3. Требования к объему хранимых данных
- •2.3.4. Требования к времени выполнения типичных операций
- •2.3.5. Требования к программному обеспечению (по)
- •2.3.6. Требования к техническому обеспечению
- •2.4. Анализ технического задания
- •2.5. Выбор средств решения выполнения технического задания
- •3.4 Триггеры
- •3.5 Резервное копирование и восстановление базы данных
- •4. Разработка клиентской части для бд
- •4.1 Разработка интерфейса
- •5. Заключение
- •6. Список использованной литературы
3.4 Триггеры
Триггер – это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.
Триггер, обеспечивающий ссылочную целостность таблиц категорий и велосипедов.
Словесное описание:
При удалении категории должны быть удалены все велосипеды этой категории.
SQL аналог:
DELIMITER //
CREATE TRIGGER `delete_category` BEFORE DELETE ON `category`
FOR EACH ROW BEGIN
DELETE FROM bicycle WHERE category_id = OLD.id;
END//
DELIMITER ;
Триггер, увеличивающий рейтинг клиента после каждого заключенного акта на сумму этого акта.
Словесное описание:
При добавлении акта в таблицу обновлять запись клиента, который фигурирует в акте, увеличив его рейтинг на указанную в акте сумму.
SQL аналог:
DELIMITER //
CREATE TRIGGER `add_act` AFTER INSERT ON `act`
FOR EACH ROW BEGIN
UPDATE
client
SET
rating = rating + NEW.cost
WHERE
id = NEW.client_id;
END//
DELIMITER ;
Триггер, изменяющий связь клиент-скидка при изменении рейтинга клиента.
Словесное описание:
При изменении клиента искать какой наибольший рейтинг соответствует клиенту и изменять его идентификатор в записи клиента.
SQL аналог:
DELIMITER //
CREATE TRIGGER `update_discount` BEFORE UPDATE ON `client`
FOR EACH ROW begin
SELECT
id INTO @discount_id
FROM
client_discount
WHERE
rating = (
SELECT
MAX(rating)
FROM
client_discount AS cd
WHERE
cd.rating <= NEW.rating
);
SET NEW.discount_id = IFNULL(@discount_id, NEW.discount_id);
end//DELIMITER ;
3.5 Резервное копирование и восстановление базы данных
Резервное копирование в MySQL очень просто. Достаточно выполнить следующую команду:
mysqldump -uLOGIN -pPASS DBNAME > dump.txt
LOGIN – это логин пользователя базы данных
PASS – его пароль
DBNAME – имя базы данных
dump.txt – путь к создаваемой резервной копии
mysqldump создает резервную копию в виде текстового файла со всеми запросами, необходимыми для восстановления базы. Чтобы импортировать созданный дамп обратно достаточно просто выполнить все запросы из файла резервной копии, например так:
mysql -uLOGIN -pPASS DBNAME < dump.txt
Для автоматизации процесса создания резервных копий я воспользовался встроенным планировщиком задач – cron. Выполним команду
crontab –e
И напишем следующее правило:
0 0 * * * mysqldump -uLOGIN -pPASS DBNAME
| gzip -c > `date "+%Y-%m-%d"`.gz
Эта команда, запускаясь из cron в полночь (00:00) каждых суток, делает дамп базы DBNAME и архивирует его архиватором gzip в файл-архив с именем, соответствующим текущей дате.
