На текущий момент архитектура «клиент-сервер» наиболее распространена и востребована при создании программных приложений для работы с базами данных (БД), поскольку позволяет равномерно разделять вычислительную нагрузку между отдельными компонентами информационных систем. Основной сложностью проектирования таких систем является рациональное распределение функций между серверной и клиентской частями информационного приложения. В данной статье рассматриваются результаты разработки автоматизированной информационной системы (АИС) аптечной сети.
Согласно техническому заданию, АИС должна обеспечивать получение информации из БД по следующим запросам пользователя: 1) сортировка прайс-листа аптеки; 2) фильтрация: сведения о лекарствах поставщика X; медикаменты от поставщика Х, не превышающие закупочной цены Y; 3) вычисления: количество лекарств от поставщика X; 4) коррекция данных, доступная только в режиме «Фармацевт»: удаление информации о лекарствах, отсутствующих в продаже; изменение цен от поставщика X на N %.
Клиент-серверная модель АИС представлена на рис. 1.
Для физической реализации БД была выбрана реляционная система управления базами данных (СУБД) PostgreSQL, которая поддерживает все последние стандарты SQL и относится к категории ПО «open source». Полученная схема данных изображена на рис. 2
Рис. 1. Модель АИС «Аптека»
Рис. 2. Реляционная схема БД «Аптека»
Рис. 3. Стартовая страница online-системы в браузере
API интерфейс для AJAX
Интерфейс |
Параметры |
Назначение |
AddMed.py |
nameMed, wholePrice, retailPrice, date, stock |
Добавление нового лекарства в БД |
AllListMed.py |
--- |
Получение списка всех лекарств |
allListProvider.py |
--- |
Получение списка всех поставщиков |
allListStock.py |
--- |
Получение списка всех складов |
countMed.py |
nameProvider |
Получение количества всех лекарств от поставщика Х |
delMedicine.py |
id |
Удаление лекарства их БД |
filterList.py |
nameProvider, priceMedicine |
Получение списка лекарств от поставщика Х стоимостью ниже Y |
listPharmacy.py |
--- |
Получение списка всех аптек |
priceList.py |
id, sort |
Получение списка лекарств аптеки Х |
search.py |
nameProvider |
Поиск лекарств от поставщика Х |
serviceList.py |
idPharmacy |
Получение списка предоставляемых услуг аптекой Х |
updatePrice.py |
nameProvider, percent |
Изменение цены на лекарства поставщика Х на N % |
При разработке программного обеспечения данной АИС использовались также следующие инструментальные и языковые средства:
- для разработки серверного приложения: язык программирования Python3 и программная платформа Framework Tornado;
- для проектирования клиентского приложения: языки разработки графического интерфейса пользователя HTML5 + CSS3; технология обращения к серверу без перезагрузки страниц Ajax; технология обработки действий пользователя и динамического отображения данных jQuery [1,2].
Пример экранной формы клиентской части web-приложения представлен ниже на рис. 3.
Серверная часть online-системы реализована на языке программирования Python3 с использованием программной платформы Framework Tornado. Структура API (Application Programming Interface) приведена в таблице. Таким образом, в данной работе API-сервер является промежуточным звеном между СУБД и web-клиентом, который позволяет получать информацию из БД в стандартном для web-приложений формате. Бизнес-логика online-системы «Аптека» полностью перенесена на сервер приложений и свободно модифицируется. Также, при необходимости изменения целевой СУБД, все трансформации коснутся лишь серверной части информационной системы, что позволит сберечь временные и финансовые ресурсы коммерческого предприятия, которые потребовались бы для перекодирования SQL-клиентов.