Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_3.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
691.71 Кб
Скачать
  1. Триггеры и джобы

Триггер AddUserTrigger для таблицы user_info, при добавлении кортежа в эту таблицу создает кортежи в таблицах user_activity и visitor_statistic для пользователя с идентификатором id_user из user_info.

Триггер AddTopicTrigger для таблицы topic, при добавлении кортежа в эту таблицу увеличивает кол-во тем в рубрике, которой принадлежит данная тема, изменяет дату последней модификации, увеличивает кол-во тем пользователя, добавившего тему.

Триггер AddMessageTrigger для таблицы message_info, при добавлении кортежа в эту таблицу увеличивает кол-во сообщений в теме и рубрике, которой принадлежит данное сообщение, изменяет дату последней модификации темы и рубрики, увеличивает кол-во сообщений пользователя, добавившего сообщение.

Джоб BackUpDatabase осуществляет резерное копирование базы данных. Выполнение джоба будет происходить каждую неделю в понедельник в 5:00.

Джоб DetermineBestUser осуществляет выбор лучшего пользователя месяца. Выполнение джоба будет происходить каждый месяц в первый день месяца в 22:00.

Джоб TopicsDelete осуществляет удаление тем, на которые нет ни одного ответа в течение двух недель. Выполнение джоба будет происходить каждую неделю в понедельник в 6:00.

Джоб UnlockUsers осуществляет разблокировка пользователя согласно сроку разблокировки в «черном списке». Выполнение джоба будет происходить каждый день в 0:00.

  1. Тестирование

    1. Тестирование хранимых процедур и триггеров

Тестироване процедуры AddUser:

exec AddUser

@nikname = 'Alex',

@passwd = '1234',

@name = 'Алексей',

@surname = 'В',

@email = 'alex@mail.ru',

@birthday = '11-23-1992',

@city = 'Москва',

@telephone = '+79086153456',

@sex = 0,

@time_zone = 3

exec AddUser

@nikname = 'Ivan',

@passwd = '1222',

@name = 'Иван',

@surname = 'А',

@email = 'ivan@mail.ru',

@birthday = '03-12-1985',

@city = 'Тверь',

@telephone = '+79026123436',

@sex = 0,

@time_zone = 4

exec AddUser

@nikname = 'Olga',

@passwd = '1234',

@name = 'Ольга',

@surname = 'П',

@email = 'olga@mail.ru',

@birthday = '12-05-1989',

@city = 'Санкт-Петербург',

@telephone = '+79126343496',

@sex = 1,

@time_zone = 2

Тестирование показало корректность работы процедуры AddUser (созданы логин и пользователь, и заполнена таблица user_info), а также триггера AddUserTrigger, создающего для каждого зарегистрированного пользователя запись в таблицах user_activity и visitor_statistic

Тестироване процедуры DeleteUser:

exec DeleteUser

@nikname = 'Alex'

Тестирование показало корректность работы процедуры DeleteUser (логин и пользователь удалены, из таблицы user_info удален кортеж), записи в таблицах user_activity и visitor_statistic удалены.

Тестироване процедуры ShowPrivateInfo:

Залогинимся в БД от имени пользователя user_Ivan

exec ShowPrivateInfo

Процедура ShowPrivateInfo работает верно (информация выведена для текущего пользователя).

Тестироване процедуры ChangePrivateInfo:

exec ChangePrivateInfo

@city = 'Новосибирск',

@telephone = '+79086743857'

Процедура ChangePrivateInfo работает верно (введенная информация изменена, остальная оставлена без изменений).

Тестироване процедуры AddUserToBlackList:

exec AddUserToBlackList

@nikname = 'Olga',

@reason_text = 'нарушение правил форума',

@date_end = '01-12-2013'

Тестироване процедуры CreateGroup:

exec CreateRubric

@title = 'Rubric1'

Тестироване процедуры JoinGroup:

exec JoinGroup

@groupname = 'Group1'

Тестироване процедуры CreateTopic:

exec CreateTopic

@title = 'Topic1',

@rubric = 'Rubric1'

exec CreateTopic

@title = 'Topic2',

@rubric = 'Rubric1'

Процедура CreateTopic работает верно (темы добавлены, кол-во тем в рубрике изменено триггером AddTopicTrigger).

Тестироване процедуры CreateMessage:

exec CreateMessage

@message_text = 'Привет',

@title = 'Topic1'

exec CreateMessage

@message_text = 'Привет',

@title = 'Topic1'

Процедура CreateMessage работает верно (сообщения добавлены, кол-во сообщений в теме и популярность рубрики изменены триггером AddMessageTrigger).

Тестироване процедуры CreateVote:

exec CreateVote

@question = 'Вопрос',

@group = 'Group1',

@date_end = '01-08-2013'

Тестироване процедуры AddAnswer:

exec AddAnswer

@vote = 1,

@ans_text = 'Ответ №1'

exec AddAnswer

@vote = 1,

@ans_text = 'Ответ №2'

exec AddAnswer

@vote = 1,

@ans_text = 'Ответ №3'

Процедура AddAnswer работает верно (ответы добавлены, автоматически нумируются по порядку).

Тестироване процедуры VoteCast:

exec VoteCast

@vote = 1,

@ans_number = 2

Тестироване процедуры LeaveGroup:

exec LeaveGroup

@group = 'Group1'

Процедура LeaveGroup работает верно (полдьзователь удален из группы).

Тестироване процедуры DeleteMessageFromOwnTopic:

exec DeleteMessageFromOwnTopic

@id_message = 1

Создадим тему от имени другого пользователя. Добавим в него сообщение. Попытаемся его удалить. Получаем следующее сообщение:

т.е. пользователь имеет возможность удалять сообщения только из собственной темы.

Тестироване процедуры MessagesNumberStatistic:

DECLARE @num INTEGER

exec MessagesNumberStatistic

@agrigatetype = 3, --1 - min, 2 - max, 3 - avg

@periodtype = 3, --1 - day, 2 - month, 3 - year

@number = @num OUTPUT

PRINT @num

Результат 3

DECLARE @num INTEGER

exec MessagesNumberStatistic

@agrigatetype = 3, --1 - min, 2 - max, 3 - avg

@periodtype = 2, --1 - day, 2 - month, 3 - year

@number = @num OUTPUT

PRINT @num

Результат 2

DECLARE @num INTEGER

exec MessagesNumberStatistic

@agrigatetype = 2, --1 - min, 2 - max, 3 - avg

@periodtype = 1, --1 - day, 2 - month, 3 - year

@number = @num OUTPUT

PRINT @num

Результат 4

Тестироване процедуры TimeMessageStatistic:

exec TimeMessageStatistic

@periodtype = 1

exec TimeMessageStatistic

@periodtype = 2

exec TimeMessageStatistic

@periodtype = 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]