Создание и тестирование примитивной транзакционной системы

Создание и тестирование примитивной транзакционной системы

Данная статья посвящена созданию небольшой транзакционной системы с сущностями «Клиенты», «Карты», «Транзакции». Была спроектирована модель базы данных в третьей нормальной форме и наполнена сгенерированными данными. Также произведено тестирование системы на обеспечение целостности данных.

Авторы публикации

Рубрика

Информационные технологии

Журнал

Журнал «Научный лидер» выпуск # 28 (73), июль ‘22

Дата публицакии 11.07.2022

Поделиться

Данная модель создавалась при помощи СУБД Microsoft SQL Server [2]. Рассмотрим особенности данной системы. Клиент владеет одной или несколькими картами, а по карте может совершаться одна или более транзакций (операций).

Рисунок 1. Таблица clients

 

Таблица «Клиенты» (рисунок 1) имеет 2 поля: client_id – уникальный идентификатор клиента, тип данных INT; full_name – полное имя клиента, тип данных VARCHAR(256). На поле client_id создан первичный ключ.

Рисунок 2. Таблица cards

 

Таблица «Карты» (рисунок 2) имеет 4 поля: card_id – уникальный идентификатор карты, тип данных INT; card_num – 16-значный номер карты, тип данных CHAR(16); client_id – поле для связи с таблицей «Клиенты», тип данных INT; expiration_date – срок действия карты, тип данных DATE. Первичный ключ на поле card_id.

Рисунок 3. Таблица transactions

 

Таблица «Транзакции» (рисунок 3) имеет 7 полей: trans_id – уникальный идентификатор транзакции, тип данных INT; card_id – поле для связи с таблицей «Карты», тип данных INT; trans_amount – сумма транзакции, тип данных DECIMAL(18, 2); trans_type -– тип транзакции (дебет, кредит), тип данных VARCHAR(20); trans_status – статус транзакции (принята или отказана), тип данных VARCHAR(20); trans_comm – комментарий к транзакции, поясняющая её статус, тип данных VARCHAR(256); trans_date – дата транзакции, тип данных DATE. Также на поле trans_id был создан первичный ключ.

Каждая информационная система должна обладать целостностью данных, то есть должно быть соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам. Ограничением целостности является каждое правило, которое налагает некоторое ограничение на возможное состояние базы данных [1].

Для этого было принято решение создать триггер на операцию вставки в таблицу «Транзакции», который проверяет эти условия и в зависимости от их выполнения ставит соответствующий статус [3].

Рисунок 4. Отклонённая операция ввиду отрицательного баланса

В первую очередь триггер проверяет баланс карты, высчитывая предыдущие суммы операций по дебету и кредиту, и если баланс оказывается меньше 0, то транзакции ставится статус «REJECTED», а в комментарии указывается «Недостаточно средств» (рисунок 4).

Рисунок 5. Отклонённая операция ввиду недействительности карты

Затем триггер сверяет срок действия карты и дату транзакции, и если срок действия карты истёк, то также ставится статус транзакции «REJECTED», а в комментарии «Карта недействительна» (Рисунок 5).

Рисунок 6. Выполненная операция

Если же все условия для совершения транзакции выполняются, то выставляется статус «ACCEPTED», а в комментарии «Транзакция выполнена» (Рисунок 6).

Список литературы

  1. Habr [Электронный ресурс]. – Режим доступа: URL: https://www.habr.com/ (дата обращения: 19.06.2022).
  2. Документация Microsoft [Электронный ресурс]. – Режим доступа: URL: https://docs.microsoft.com/en-us/ (дата обращения: 19.06.2022).
  3. Форум Cyberforum [Электронный ресурс]. – Режим доступа: URL: https://www.cyberforum.ru/ (дата обращения: 19.06.2022).

Предоставляем бесплатную справку о публикации,  препринт статьи — сразу после оплаты.

Прием материалов
c по
Осталось 6 дней до окончания
Размещение электронной версии
Загрузка материалов в elibrary