MySQL отличатся хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы. Немаловажным фактором является ее условная бесплатность. MySQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License). Кроме того, MySQL имеет API для языков Delphi, C, C++, Java, Perl, PHP, Python, Ruby, библиотеки для языков платформы.net, а также обеспечивает поддержку для ODBC посредством ODBC-драйвера MyODBC.
Компьютер-сервер, установленный в организации - HP ProLiant ML110, полностью соответствует требованиям необходимым для установки и продуктивной работы сервера MySQL 5.6 в стабильном режиме.
3.3.2 Структура информационной базы системы
Структурная схема базы данных включает в себя описания содержания, структуры и ограничений целостности, отражает общий вид таблиц, их количество, и связи между ними. Структура базы данных "Информационной системы бонусных программ лояльности" приведена на рисунке 1.
Источниками поступления информации в ИС служат клиенты и сотрудники организации. Сотрудники вводят (или загружают) информацию о бонусных картах, клиентах, информацию об оплате товаров (услуг), рекламных предложениях, отправляют рекламные смс-сообщения или оповещения. Клиенты вводят (или редактируют) свои контактные данные.
Рисунок 1 - Структурная схема БД
Структура таблицы "clients" (Клиенты)
В данной таблице хранится информациях о клиентах бонусной системы: фамилия, имя, пол, дата рождения, телефон, email, пароль, номер карты клиента.
Таблица 1 - "clients"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерclient_idintegerNot NullПервичный1card_idintegerNot NullВнешнийcards. card_id124emailvarcharNullc86@mail.compasswdvarcharNullreqwery123first_namevarcharNullРусскихlast_namevarcharNullАлексейgendervarcharNullМужскойbirth_datedatetimeNull01.01.2001mobile_phonevarcharNull+79120000000
Структура таблицы "cards" (Карты)
В данной таблице хранится информациях о бонусных картах: номер карты, бонусный баланс, статус карты, тип карты, дата выпуска карты, срок годности и дополнительные комментарии.
Таблица 2 - "cards"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерcard_idintegerNot NullПервичный1balanceintegerNull345stat_idintegerNull1statvarcharNullАктивнаtype_idintegerNull1typevarcharNullПерсональнаяoutput_datedatetimeNull01.01.2001valid_thrudatetimeNull01.01.2016commentvarcharNullКарта самого крутого клиента организации
Структура таблицы "transactions" (Транзакции по карте)
В данной таблице хранится информациях о транзакциях по бонусной карте: номер карты, количество списанных или начисленных бонусов, описание транзакции, дата транзакции, срок действия транзакции, дополнительный комментарий.
Таблица 3 - "transactions"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерtrans_idintegerNot NullПервичный33card_idintegerNot NullВнешнийcards. card_id1pointsintegerNull-395descriptionvarcharNullОплата бонусамиtrans_datedatetimeNull12.03.2016valid_thrudatetimeNullNullcommentvarcharNullСкидка на оформление годовой подписки
Структура таблицы "offers" (Рекламные предложения)
В данной таблице хранится информациях о рекламных предложениях: полное название (заголовок) предложения, полное описание предложения, дата старта предложения, срок действия и адрес веб-страницы.
Таблица 4 - "offers"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерoffer_idintegerNot NullПервичный33titlevarcharNullСкидка 33%descriptionvarcharNullCкидка 33% при сделке на сумму более 5000 рублейdatedatetimeNull12.01.2016valid_thrudateNull12.03.2016html_pathvarcharNull#"justify">Структура таблицы "client_offers" (Персональные рекламные предложения)
В данной таблице хранится информациях о рекламных предложениях для конкретного клиента: ссылка на клиента, которому предназначается рекламное предложение, ссылка на предложение, статус предложения (новое или уже прочтено).
Таблица 5 - "client_offers"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерidintegerNot NullПервичный33client_idintegerNot NullВнешнийclients. client_id1offer_idintegerNot NullВнешнийoffers. offer_id4stat_idintegerNull0
Структура таблицы "sms" (SMS-сообщения)
В данной таблице хранится информациях об отправленных смс-сообщениях: ссылка на клиента, которому было отправлено сообщение, наименование отправителя, дата отправки и текст сообщения.
Таблица 6 - "sms"
Наименование полейТип данныхНулевой статусКлючОграниченияСсылкиПримерsms_idintegerNot NullПервичный3client_idintegerNot NullВнешнийclients. client_id45sendervarcharNull201C43.rubodyvarcharNullЗаканчива - ется лицензияdatedateNull12.08.2015
3.3.3 Поддержание ссылочной целостности данных
Обеспечение качества информации достигается за счет поддержания ссылочной целостности. Основой для обеспечения ссылочной целостности данных является создание первичных и внешних ключей. Кроме того, первичные и внешние ключи помогают обеспечить связь, которая основана на синтаксисе Transact-SQL запросов.
Для ссылочной целостности данных, обеспечении достоверности информации при добавлении или удалении данных также используются триггеры. Триггер - это особая разновидность хранимой процедуры, выполняемая автоматически при возникновении события на сервере базы данных. Триггеры языка обработки данных выполняются по событиям, вызванным попыткой пользователя изменить данные с помощью языка обработки данных.
Триггер для формирования первичного ключа при добавлении нового клиента:
DELIMITERTRIGGER `ins_new` BEFORE INSERT ON `clients`EACH ROW BEGINNEW. client_id = 1 + (SELECT MAX (client_id) FROM clients);NEW. group_id = NULL;
Триггер для удаления всех транзакций из таблицы "transactions" и отвязки удаляемой карты от профиля клиента при удалении бонусной карты из таблицы "cards":
DELIMITERTRIGGER `delete_trans` BEFORE DELETE ON `cards`EACH ROW BEGINFROM transactions WHERE card_id = OLD. card_id;clients SET card_id = 0 WHERE card_id = OLD. card_id;
Триггер для поддержания ссылочной целостности при удалении записи из таблицы "clients":
DELIMITERTRIGGER `delete_dependenses` BEFORE DELETE ON `clients`EACH ROW BEGINFROM sms WHERE client_id = OLD. client_id;FROM client_offers WHERE client_id = OLD. client_id;
4. Технология разработки программного обеспечения
4.1 Общие сведения
Программное обеспечение "Информационной системы бонусных программ лояльности" состоит и двух модулей независимых модулей.
"Приложение для управления бонусной программой" имеет один исполнительный файл с названием "Управление Бонусной Программой. exe" размером 16.8 Мб при объеме исходных текстов программ и ресурсов 9.1 Мб. Итоговый вес модуля может увеличиваться - создание временных ресурсных файлов и файлов для хранения настроек программы.
"Личный кабинет держателя бонусной карты" имеет один исполнительный файл с названием пакета "com. embarcadero. lk10. apk" и названием приложения "Личный Кабинет 1.0". Вес установленного приложения составляет 42.6 Мб при объеме исходных текстов программ и ресурсов 26.1 Мб.
Программное обеспечение обоих модулей "Информационной системы бонусных программ лояльности" написано на объектно-ориентированном языке С++. В качестве среды разработки используется RAD Studio 10 Seattle разработанная компанией Embarcadero. RAD Studio 10 Seattle - многоязычная интегрированная среда разработки, включающая все необходимые инструменты для моделирования и конструирования приложений на различных платформах, с поддержкой языков Delphi, C и C++. Она предоставляет мощные компоненты VCL для Windows 10 и обеспечивает разработку на FMX для Windows, Mac и мобильных устройств. RAD Studio обеспечивает 5-кратно увеличенную скорость разработки и развертывания на нескольких настольных, мобильных, облачных средах и платформах баз данных, включая 32-разрядные и 64-битные ОС Windows.
При разработке "Личного кабинета держателя бонусной карты" использован FireMonkey Фреймворк (FMX) - GUI-framework, использующий возможности графического процессора. FireMonkey входит в состав среды разработки RAD Studio 10 Seattle. Лежащий в его основе движок FMX представляет собой похожий на Flash или WPF, кроссплатформенный Фреймворк для построения пользовательских интерфейсов. Будучи встроенным в С++ Builder, FireMonkey позволяет компилировать один и тот же код приложения для работы в Windows, iOS и Android.
"Приложение для управления бонусной программой" разработано с использованием VCL. Visual Component Library (VCL) - объектно-ориентированная библиотека для разработки программного обеспечения для поддержки принципов визуального программирования. VCL входит в комплект поставки Embarcadero RAD Studio 10 и является, по сути, частью среды разработки, хотя разработка приложений в этих средах возможна и без использования VCL. VCL предоставляет огромное количество готовых к использованию компонентов для работы в самых разных областях программирования, таких, например, как интерфейс пользователя (экранные формы и элементы управления), работа с базами данных, взаимодействие с операционной системой, программирование сетевых приложений и прочее.
Для подключения обоих модулей к базе MySQL был использован компонент от сторонних разработчиков (не входящий в состав RAD Studio 10) - "MySQL Data Access Components (MyDAC)". MyDAC - многофункциональный инструмент для разработки клиент-сервер приложений на Delphi, C++Builder, Lazarus (и Free Pascal) под Windows, Mac OS X, iOS, Android, Linux и FreeBSD, как для 32-битных, так и для 64-битных платформ. MyDAC позволяет разрабатывать быстрые и нативные MySQL приложения и подключаться к MySQL напрямую через TCP/IP, не используя клиентскую библиотеку MySQL.
Для отправки СМС сообщений используется SMS-шлюз предоставляемый порталом "Смс-дисконт - iqsms.ru" SMS-шлюз - интерфейс, который позволяет отправлять и получать SMS-сообщения без использования мобильного телефона. При отправке SMS-сообщения преобразуются в JSON запросы к серверу iqsms.ru. После отправки всех сообщений, сервер посылает ответ о статусе сообщений, также в формате JSON.
4.2 Описание функциональной структуры
Для запуска "Приложения для управления бонусной программой" необходимо переместить файл "УправлениеБонуснойПрограммой. exe" в любой каталог на физическом накопителе доступный для чтения и записи. Запустить файл "УправлениеБонуснойПрограммой. exe" от имени Администратора.
"Приложение для управления бонусной программой" имеет одну входную точку в управляющую программу - файл "УправлениеБонуснойПрограммой. exe"
Для того, чтобы запустить модуль "Личного кабинета держателя бонусной карты", необходимо открыть Play Market. В строке поиска ввести "Личный кабинет 1.0", перейти на страницу приложения из результатов поиска и установить приложение. Запустить приложение "Личный кабинет 1.0" из главного меню. Второй способ - переместить "ru. embarcadero. lk10. apk" в память телефона. Разрешить установку из неизвестных источников, и запустить пакет на установку. Запустить приложение "Личный кабинет 1.0" из главного меню.
"Личный кабинет" имеет три точки входа в управляющую программу - иконка приложения в главном меню, кнопка "запуск" из информации о приложении в настройках, страница приложения в Play Market.
"Приложение для управления бонусной программой" для платформы Win32 отвечает за администрирование бонусной системы и взаимодействие с клиентами. Программа выполняет следующие функции:
Администрирование бонусной системы;
Управление настройками бонусной системы;
Импорт и экспорт данных;
Ведение статистики и формирование отчетных документов;
Взаимодействие с клиентами на базе смс-рассылок и функционала Личного кабинета держателя бонусной карты.
Просмотр и редактирование профиля клиента;
Просмотр бонусного баланса и списка транзакций по бонусной карте;
Регистрация новых клиентов в бонусной системе.
Входными данными в "Приложении для управления бонусной программой" являются:
Информация о бонусных картах: идентификатор, баланс, срок активности карты, дополнительная информация;
Данные клиентов: фамилия, имя, дата рождения, пол, номер телефона, email;
Персональные рекламные предложения: название предложения, полное описание, срок действия, путь с web-странице;
Смс-сообщения: номер телефона, текст сообщения.
Выходными данными в Приложении являются:
Итоговый баланс бонусной карты;
Журнал транзакций по бонусной карте;
Статистика активности пользователей бонусной программы;
Цепочки личных предложений и смс-сообщений;
Отчеты во внешних документах (word, excel, pdf, txt).
Входными данными в "Личном кабинете держателя бонусной карты" является информация о клиенте:
Фамилия, имя, дата рождения, пол, номер телефона клиента;
Информация для авторизации: адрес электронной почты, пароль.