Модели данных приложения, Классы приложения для работы с СУБД - Многопользовательский проектно-ориентированный планировщик задач
Без установленных модулей приложение предоставляет следующие модели для работы с данными из базы данных:
WorkspacesModel. Предоставляет данные о рабочих пространствах системы, доступных пользователю.
ProjectsModel. Предоставляет данные о проектах в определенном рабочем пространстве.
TasksModel. Предоставляет данные о задачах в определенном проекте.
TagsModel. Предоставляет данные о метках.
StatusesModel. Предоставляет данные о статусах задач.
CommentsModel. Предоставляет данные о комментариях к определенной задаче.
FilesModel. Предоставляет данные о прикрепленных к определенной задаче файлах.
UsersModel. Предоставляет данные об аккаунтах пользователей в рамках заданного рабочего пространства.
Классы приложения для работы с СУБД
Для работы с СУБД в дипломном проекте был предусмотрен специальный набор классов, реализующий логику, связанную с отправкой запросов и получением результатов из базы данных. Это было необходимо для того, чтобы предоставить механизм автоматического обнаружения и устранения ошибок ввода, защиты от взлома, а так же чтобы предоставить удобный интерфейс для работы с СУБД. В классах реализован так называемый принцип "цепочки вызовов" (chaining), то есть при каждом вызове методов объекта возвращается сам объект (если не нужно вернуть какой-то результат работы метода), что позволяет создавать цепочку вызовов, как в приведенном примере. Ниже приведена таблица сравнения кода с использованием прямого обращения к базе и использованием специального класса.
Прямой запрос к базе данных |
Интерфейс взаимодействия с базой данных |
Mysql_connect('local', 'user', 'pswd'); Mysql_select_db('task_manager'); $res = mysql_query(' SELECT user. name, comment. body, task. name FROM comment INNER JOIN user ON user. uid = comment. uid INNER JOIN task ON task. tid = comment. tid WHERE task. name = Новая задача '); $comments = array(); While ($row = mysql_fetch_assoc($res)) { $comments[] = $row; } |
$s = new Selector(); $comments = $s -> addEntity('comment')
|
Как можно заметить, в первом случае все действия производятся в процедурном стиле, запрос к базе данных производится прямой передачей строки с запросом специальной функции. Так же необходим отдельный код для построчного извлечения полученных данных. Во втором случае для выборки используется объект класса Selector, конструирование запроса происходит путем последовательного использования функций этого объекта с последующим его выполнением. Связывание таблиц между собой и открытие соединения с СУБД происходят автоматически.
Всего а приложении предусмотрено 6 классов для работы с СУБД: Selector, Inserter, Updater, Deleter, Filter, Relation используемые для выборки, вставки, изменения и удаления строк в таблицах, для фильтрации, установки отношений между таблицами, соответственно. Ниже приведена UML диаграмма этих классов.
Как видно из диаграммы, объект класса Relation может быть частью объекта класса Selector, объект класса Filter может быть частью объекта любого из классов Selector, Updater, Deleter. Далее приведено более подробное описание каждого класса.
Selector
Класс Selector содержит логику, необходимую для выборки данных.
Поля класса Selector:
- - tables : string[] - закрытое поле, массив имен таблиц, из которых необходимо произвести выборку (FROM); - relations : Relation[] - закрытое поле, массив объектов отношений, задающих правила для соединения таблиц (JOIN); - filters : Filter[] - закрытое поле, массив объектов условий выборки, задающих ограничения выборки (WHERE); - fields : string[] - закрытое поле, массив имен полей, которые необходимо вывести (SELECT); - limit : int[2] - закрытое поле, массив параметров ограничения количества выбираемых элементов (LIMIT); - order : string[] - закрытое поле, массив параметров сортировки выборке (ORDER BY).
Методы класса Selector:
+ Selector() - открытый конструктор, инициализирует объект класса;
+ addEntity(e : string) : this - открытый метод, добавляет имя таблицы в массив таблиц, из которых будет производиться выборка;
+ addFields(f : string[]) : this - открытый метод, задает набор атрибутов, которые необходимо вывести;
+ addRelation(r : Relation) : this - открытый метод, добавляет объект отношения к выборке;
+ addFilter(f : Filter) : this - открытый метод, добавляет объект условия выборки;
+ setLimit(from : int, length: int) : this - открытый метод, задает ограничения количества выбираемых строк;
+ addOrderBy(field : string, asc : bool) : this - открытый метод, добавляет критерий сортировки выборки;
+ __toString() : string - метод преобразования объекта в строку, возвращает строку SQL-запроса, выполняемую в СУБД;
+ execute() - открытый метод, выполняет запрос и возвращает результат.
Inserter
Класс Inserter отвечает за создания новых строк в таблицах базы данных.
Поля класса Inserter:
- - values : string[] - закрытое поле, словарь вставляемых значений, где ключом является название поля, значением - задаваемое этому полю значение; - table : string - закрытое поле, имя таблицы, в которую осуществляется добавление.
Методы класса Inserter:
+ Inserter(table : string) - открытый конструктор, инициализирует объект класса;
+ addValue(field : string, value : string) - открытый метод, добавляет новое значение поля
+ __toString() : string - метод преобразования объекта в строку, возвращает строку SQL-запроса, выполняемую в СУБД;
+ execute() - открытый метод, выполняет запрос и возвращает результат.
Updater
Класс Updater отвечает за выполнение запросов, изменяющих значения полей в строках таблиц базы данных.
Поля класса Updater:
- - values : string[] - закрытое поле, словарь задаваемых значений, где ключом является название поля, значением - задаваемое этому полю значение; - table : string - закрытое поле, имя таблицы, в которой изменяются данные. - filters : Filter[] - закрытое поле, массив объектов условий выборки, задающих ограничения для изменяемых строк таблицы;
Методы класса Updater:
+ Updater(table : string, values : string[], filter : Filter) - открытый конструктор, создает новый объект с заданными таблицей, словарем изменяемых значений и одним объектом условий выборки;
+ addValue(field : string, value : string) - открытый метод, добавляет новое значение поля;
+ addFilter(filter : Filter) - открытый метод, добавляет объект условия выборки;
+ __toString() : string - метод преобразования объекта в строку, возвращает строку SQL-запроса, выполняемую в СУБД;
+ execute() - открытый метод, выполняет запрос и возвращает результат.
Deleter
Класс Deleter выполняет удаление строк из таблиц базы данных.
Поля класса Deleter:
- - table : string - filters : Filter[]
Методы класса Deleter:
+ Deleter(table : string, filter : Filter)
+ addFilter(filter : Filter)
+ __toString() : string
+ execute()
Relation
Класс Relation содержит логику, связанную с соединением таблиц между собой.
Поля класса Relation:
- - source : string - закрытое поле, содержит имя таблицы, к которой происходит соединение; - entity : string - закрытое поле, содержит имя присоединяемой таблицы; - type : string - закрытое поле, содержит тип соединения таблиц (внешнее, внутреннее, левое, правое); - scheme : array - закрытое поле, содержит схему таблиц для автоматического определения полей, по которым будет происходить соединение; - reverse : bool - закрытое поле, указывает, соединять ли таблицы по идентификатору исходной или присоединяемой таблицы (в зависимости от направления связи один-ко-многим), направление соединения.
Методы класса Relation:
+ Relation(s : string, e : string, reverse : bool, t : int) - открытый конструктор, задает исходную таблицу, присоединяемую таблицу, направление соединения и тип соединения;
+ source() : string - открытый метод, возвращает имя исходной таблицы;
+ entity() : string - открытый метод, возвращает имя присоединяемой таблицы
+ applyScheme(scheme : array) - открытый метод, задает схему таблиц базы данных;
+ __toString() : string - метод преобразования объекта в строку, возвращает строку с частью запроса, отвечающую за соединение таблиц.
Filter
Класс Filter отвечает за задание условий выборки в запросах.
Поля класса Filter:
- fields : string[] - закрытое поле, словарь, ключом которого является имя поля, значением - массив, содержащий тип сравнения (точное совпадение, подстрока, вхождение в множество, строгие/нестрогие неравенства).
Методы класса Filter:
+ Filter(field : string, value : string, method : int) - открытый конструктор, задает один элемент в словаре значений - имя поля, значение, тип сравнения;
+ addField(params : array) - добавляет новое значение в словарь значений;
+ __toString() : string - метод преобразования объекта в строку, возвращает строку с частью запроса, отвечающую за задание условий выборки.
Каждая модель, создаваемая системой, должна использовать только эти классы для взаимодействия с базой данных, так как в них при выпуске новых версий приложения может концентрироваться логика защиты от взлома и хакерских атак, а так же добавляться новые возможности. Если возникает необходимость добавления недокументированных функций, то есть возможность унаследовать эти классы с целью расширения их функционала.
Похожие статьи
-
Основные классы приложения - Многопользовательский проектно-ориентированный планировщик задач
Ниже приведена UML диаграмма классов, показывающая отношения классов приложения, а так же раскрывающая его архитектуру. На диаграмме видно 3 класса: App,...
-
В данной главе будут рассмотрены особенности работы приложения, описание классов и базы данных, а так же описаны возможности расширения приложения с...
-
Архитектура приложения - Многопользовательский проектно-ориентированный планировщик задач
В основе архитектуры дипломного проекта лежит подход, называемый MVC. Аббревиатура MVC раскрывается как Model-View-Controller и показывает 3 основных...
-
База данных приложения - Многопользовательский проектно-ориентированный планировщик задач
В приложении для постоянного хранилища данных используется SQL база данных, управляемая СУБД MySQL. В базе хранятся данные о рабочих пространствах,...
-
В данной главе будут описаны подходы и технологии, использованные в проекте, а так же технические детали его реализации. Используемые решения и...
-
Для чего нужны Базы Данных - База данных склада обоев
В настоящее время в современном мире электронных технологий практически невозможно представить компанию, в которой не требуется обработка некоторого...
-
Разработка приложения для базы данных - Разработка Windows-приложений в среде Borland Delphi
Цель Работы: Получить навыки создания приложения для базы данных. Пояснения к работе Для работы с базами в Delphi есть несколько наборов компонент,...
-
В данном курсовом проекте в качестве исследуемой организации рассматривается институт, который предоставляет выбор факультативов студентами. Институт...
-
Классы StatMetric содержат всю логику библиотеки и предоставляют интерфейс для обновления и получения значений агрегатов. Рисунок 4. Диаграмма классов...
-
Сетевая модель данных, Реляционная модель данных - Система управления базами данных
Отличие сетевой структуры от иерархической заключается в том, что каждый элемент в сетевой структуре может быть связан с любым другим элементом (рис. 8)....
-
"Обзор наиболее популярных СУБД", Microsoft Access - Базы данных и СУБД
Microsoft Access Microsoft Access - это интерактивная реляционная СУБД (relational database management system - RDBMS) для WINDOWS. Это программа,...
-
В качестве доступного инструментария были рассмотрены две открытые кроссплатформенные библиотеки для разработки C++ приложений WxWidgets и Boost ,...
-
SimpleXML. В PHP версии 5.0 и выше появилось расширение для работы с xml структурой. Библитека SimpleXML содержит большое количество методов для работы с...
-
Для написания АИС использовались следующие языки программирования, программные средства и библиотеки: - Язык программирования PHP 5.4; -...
-
Программный интерфейс для базы данных я разрабатывал в объектно-ориентрованной среде Delphi, с помощью Embarcadero RAD Studio. Конструктор форм Delphi в...
-
В этом разделе описаны запросы, выполняемых всеми компонентами, а также типы данных, используемые при описании запросов. Стандарт типов данных При...
-
Каждая СУБД имеет особенности в представлении структуры таблиц, связей, определении типов данных и т. д. которую необходимо учитывать при проектировании....
-
Описание исходных данных На текущий момент (в силу большой загрузки IT-отдела) не реализован доступ к серверу с ХД, маркетинговые данные выгружаются в...
-
Вариант №1 1. Выбрать и обосновать наиболее эффективный метод решения задачи. 2. Разработать алгоритм и программу для решения задачи в общем виде. 3....
-
Объектно-ориентированное программирование (ООП) является парадигмой программирования, которая представляет понятия, как "объекты", которые имеют поля...
-
Поскольку клиентская часть представляет собой приложение на базе операционной системы Android, то для ее разработки был выбран рекомендуемый...
-
Producteev Первым из рассмотренных продуктов является Producteev. Это приложение обладает богатым набором функций. Каждый проект является единым рабочим...
-
Запросы на выборку - Банки и базы данных. Системы управления базами данных
Запросы используются для получения пользователем информации, содержащейся в БД, в удобном для него виде. Результат запроса отображается для пользователя...
-
В ходе разработки программы было использовано программное обеспечение Microsoft® Windows® "Подключение к удаленному рабочему столу" для извлечения...
-
Обзор протокола Multi-Touch технологий передачи данных TUIO [7] - основной кроссплатформенный протокол с открытым исходным кодом Multi-Touch передачи...
-
Как мы уже говорили в лекциях, хранилище Windows Azure, помимо прочего, подходит для хранения реляционных данных, для этого используются возможности...
-
Для разработки БД автоматизированной системы "Эффективного использования рабочего времени", я выбрала СУБД Microsoft Access 2003. Основное назначение БД...
-
Свойства в Delphi - Приложение для тестирования студентов
Каждый компонент, который помещается на форму, имеет свое отражение в окне Инспектора Объектов (ObjectInspector). ObjectInspector имеет две "странички" -...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Понятие Data Mining Средства Data Mining включают в себя очень широкий класс различных технологий и инструментов. Средства Data Mining на рынке...
-
СУБД MS Access - База данных, хранящая в себе информацию о командах NBA
Системы управления базами данных (СУБД) - это программные средства, с помощью которых можно создавать базы данных, наполнять их и работать с ними. В мире...
-
ВВЕДЕНИЕ, БАЗА ДАННЫХ И СУБД, База данных - База данных, хранящая в себе информацию о командах NBA
На сегодняшний день в мире работают сотни миллионов персональных Компьютеров. Ученые, экономисты, политики считают, что к началу третьго тысячелетия:...
-
Требования к аппаратному обеспечению: - Процессор Intel, AMD; - Оперативная память (ОЗУ) 128 Mб; - Свободное место на HDD 20Мб; - Манипуляторы "мышь",...
-
Классификация баз данных - Виды и возможности СУБД
Многообразие характеристик и видов баз данных порождает многообразие классификации. Рассмотрим основные виды классификации. По технологии обработки...
-
Физическая Модель Данных Физическое проектирование -- создание схемы базы данных для конкретной СУБД. Специфика конкретной СУБД может включать в себя...
-
Построение аналитической модели АОУ затруднено из-за отсутствия или недостатка априорной информации об объекте управления, а также из-за ограниченности и...
-
Теоретические аспекты СУБД, Основные понятия баз данных - Виды и возможности СУБД
Основные понятия баз данных В настоящее время жизнь человека настолько насыщена различного рода информацией, что для ее обработки требуется создание...
-
Обоснование выбора СУБД База данных - это совокупность сведений о реальных объектах, процессах, событиях или явлениях, относящихся к определенной теме...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Объектно-ориентированные СУБД Несмотря на большую популярность реляционных СУБД, развитие технологии появления данными на них не остановилось. Развитие...
Модели данных приложения, Классы приложения для работы с СУБД - Многопользовательский проектно-ориентированный планировщик задач