ОГЛАВЛЕНИЕ
Введение 3
1. Основные понятия и технологии распределенной обработки данных 5
1.1 Основные понятия и классификация баз данных и систем управления базами данных 5
1.2 Модели построения баз данных 8
1.3 Технологии распределенной обработки данных 14
2. Особенности языка структурированных запросов SQL 18
2.1 Общие понятия о языке SQL 18
2.2 Структура и назначение операторов SQL 20
2.3 Преимущества и недостатки языка SQL 22
3. Использование SQL в прикладном программировании 24
3.1 Обоснование выбора применяемых технологий для решения задачи 24
3.2 Реализация программной части веб — приложения 28
3.3 Описание общей схемы взаимодействия компонент веб -приложения основные сценарии работы 29
Заключение 31
Список использованной литературы 33
Приложение А. Характеристики объектно-ориентированной модели данных 36
Приложение Б. Описание таблиц базы данных 37
Приложение В. Запросы формирующие базу данных 39
Приложение Г. Взаимодействие с БД средствами PHP 41
Приложение Д. Основные элементы интерфейса пользователя сервиса подписки 47

_________________________________________________________________

Работа № 4284. Это ОЗНАКОМИТЕЛЬНАЯ ВЕРСИЯ работы.

Цена оригинала 1000 рублей. Оформлен в программе Microsoft Word.

Оплата. Контакты

_________________________________________________________________

ВВЕДЕНИЕ
Актуальность темы курсовой работы заключается в том что в современном компьютерном мире язык структурированных запросов SQL предоставляет пользователю большое количество возможностей по применению и объединению информации из различных источников. Кроме того в настоящее время SQL нашел широкое применение в прикладном программировании поскольку значительно сокращает объем работ который пришлось бы выполнять при использовании универсальных языков программирования.
Язык структурированных запросов SQL Structured Query Language предназначен для создания и работы с реляционными базами данных которые представляют собой наборы связанных данных хранящихся в таблицах. Для управления реляционными базами данных используются программы называемые системами управления базами данных СУБД.
В области баз данных наблюдается все большая интеграция которая повышает важность стандартного языка пригодного для использования на различных компьютерных платформах и с разными СУБД.
При наличии стандартного языка достаточно изучить один набор команд и применять его для ввода поиска изменения и передачи информации независимо от имеющейся платформы персональный компьютер рабочая станция или большая ЭВМ.
Приложения написанные на стандартном языке способны работать со многими базами данных как при использовании API ODBC.
Объектом исследования курсовой работы являются «Базы данных» а предметом исследования – «Использование SQL в прикладном программировании».
Целью курсовой работы является изучение возможностей использования SQL в прикладном программировании.
Для достижения поставленной цели в курсовой работе необходимо решить следующие задачи
1 раскрыть сущность понятий база данных система управления базами данных путем изучения классификации баз данных и СУБД по степени распределенности по технологии хранения данных по содержимому по моделям построения
2 изучить особенности реляционной модели данных
3 изучить технологии распределенной обработки данных путем определения из достоинств и недостатков проведения сравнительного анализа а также выделить технологию которая наиболее подходит для распределенной обработки данных с использованием SQL-запросов к серверам БД
4 рассмотреть структуру и назначение операторов SQL операторов определения данных DDL операторов манипулирования данных DML операторов управления данными DCL
5 изучить возможности использования SQL в прикладном программировании.
При написании курсовой работы использовались научные труды следующих авторов Астахова И.Ф.[1] Боуман Дж.С. [2] Гарсиа-Молина Г.[3] Дейт К.[4-6] Дунаев В.В.[7] Жилин Д.М.[9] и другие.

1. ОСНОВНЫЕ ПОНЯТИЯ И ТЕХНОЛОГИИ РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ ДАННЫХ

1.1. Основные понятия и классификация баз данных и систем управления базами данных

База данных БД – это совместно используемый набор логически связанных данных и их описание предназначенный для удовлетворения информационных потребностей пользователей.
Система управления базами данных СУБД – программное обеспечение ПО с помощью которого пользователи могут определять создавать и поддерживать базу данных а также получать к ней контролируемый доступ [5 с. 123].
По степени распределенности базы данных и СУБД разделяются локальные и распределенные групповые и корпоративные как показано на рисунке 1 [6 с. 102].
Рисунок 1 — Классификация баз данных и СУБД по степени распределенности
Локальные базы данных и системы управления базами данных как правило реализуются на одном автономном компьютере и рассчитаны на работу одного пользователя. Как правило приложения разрабатываются с помощью локальных баз данных например [7 с.88] Clarion Clipper FoxPro Paradox dBase Microsoft Access.
Групповые базы данных и системы управления базами данных реализуются в локальной сети и рассчитаны на работу группы пользователей подключенных к одному серверу баз данных которые называются SQL серверами.

Advertisement
Бесплатно

Узнайте стоимость учебной работы онлайн

Информация о работе

Ваши данные

Наиболее часто используемыми являются Oracle DB2 Microsoft SQL Server Inter Base Sybase Informix.
Корпоративные базы данных и системы управления базами данных реализуются на больших предприятиях и могут поддерживать территориально разнесенные узлы в сети. Как правило корпоративные БД и СУБД имеют иерархическую структуру состоящую из нескольких уровней. Наибольшее распространение получили серверы баз данных Oracle DB2 Microsoft SQL Server [8 с. 76].
По технологии хранения данных базы данных и СУБД классифицируются следующим образом рисунок 2 [9 с. 123]
Рисунок 2 — Классификация баз данных и СУБД по технологии хранения данных
Фактографические базы данных и СУБД являются аналогами бумажных карточек и предназначены для хранения данных представленных в строго фиксированных форматах и краткой форме.
Документальные базы данных и СУБД являются аналогами исторических документов или архивов документов обеспечены формализованным аппаратом поиска и предназначены для хранения графических объектов и неструктурированных текстовых документов [10 с. 156].
Централизованные базы данных и СУБД реализуются как правило либо на одном автономном компьютере либо в сети на основании архитектуры «клиент-сервер» хранение данных организовано только на одном компьютере.
Распределенные базы данных и СУБД отличаются от централизованных тем что данные могут быть разбиты на разные части и храниться на нескольких компьютерах в вычислительной сети.
По содержимому базы данных и СУБД разделяются на следующие группы [11 с. 336]
1 графические предназначенные для хранения данных графических форматов как правило это базы данных фотографий архивы изображений различного стилевого оформления
2 исторические предназначенные для хранения текстовых данных представляющих историческую ценность это как правило базы данных для ведения исторических архивов предприятий выдающихся деятелей искусства культуры и науки
3 научные предназначенные для хранения текстовых и графических данных проведения научных исследований и отражения последних достижений науки и техники
4 мультимедийные предназначенные для хранения данных представленных в видео формате базы данных видеофильмов музыки проектов анимационных разработок.
1.2. Модели построения баз данных
Модель данных — это абстрактное самодостаточное логическое определение объектов операторов и прочих элементов в совокупности составляющих абстрактную машину доступа к данным с которой взаимодействует пользователь. Эти объекты позволяют моделировать структуру данных а операторы — поведение данных.
В настоящее время существуют следующие основные модели построения баз данных иерархическая сетевая объектная объектно-ориентированная реляционная.
Рассмотрим особенности каждой из моделей построения баз данных.
Иерархическая структура представляет множество элементов имеющих между собой связи по определенным правилам. Объекты связанные иерархическими отношениями образуют ориентированный граф перевернутое дерево.
К основным понятиям иерархической структуры относятся уровень элемент узел связь.
Узел — это совокупность атрибутов данных которые описывают некоторый объект.
На схеме иерархического дерева узлы представляются вершинами графа. Каждый узел на низшем уровне связан только с одним узлом который находится на более высоком уровне.
Иерархическое дерево имеет единственную вершину корень дерева не подчиненную никакой другой вершине и находится на самом верхнем первому уровне. Зависимые подчиненные узлы находятся на втором третьем и так далее уровнях. Количество деревьев в базе данных соответствует числу корневых записей. К каждой записи базы данных существует только один иерархический путь от корневой записи.
Особенностью реализации операций поиска в иерархической модели является то что операция всегда начинает поиск с корневой вершины и специфицирует иерархический путь последовательность связанных вершин от корня до вершины экземпляры которой удовлетворяют условиям поиска.
Структура иерархической модели данных представлена на рисунке 3 [12 с. 206].
Рисунок 3 — Структура иерархической модели данных
Структура иерархической модели данных рисунок 3 состоит из структурной части и управляющий части. В структурной части иерархической модели данных выделяют поле представляющие собой наименьшую единицу данных доступную пользователю и сегмент для которого определяются тип и экземпляр. Причем экземпляр сегмента образуется из значений полей данных заданных определенным образом и поименованной совокупности входящих в него типов полей данных определяемых типом сегмента.
Основными достоинствами иерархической модели данных являются эффективное использование памяти ЭВМ высокая скорость выполнения операций над данными удобство работы с иерархически упорядоченной информацией.
Недостатком иерархической модели является ее громоздкость для обработки информации с достаточно сложными логическими связями.
На иерархической модели данных основано сравнительно ограниченное количество СУБД в числе которых можно назвать зарубежные системы IMS PC Focus Team — Up и Data Edge а также отечественные системы Ока ИНЭС и МИРИС.
Сетевая модель данных является расширением иерархического подхода описывается строгой математической теорией отражающей структурный целостный и аспект обработки данных и состоит из набора экземпляров определенного типа записи и набора экземпляров определенного типа связей между этими записями.
Основное отличие сетевой структуры от иерархической структуры данных заключается в том что каждый элемент в сетевой структуре может быть связан с любым другим элементом.
Достоинствами сетевой модели данных являются эффективность в использовании памяти компьютера высокая скорость выполнения основных операций над данными огромные возможности по сравнению с иерархической модели по образованию произвольных связей.
Недостатками сетевой модели данных являются высокая сложность и жесткость схемы базы данных которая построена на ее основе трудность для понимания и выполнения обработки информации в базе данных непрофессиональным пользователем.
Наиболее известными сетевыми СУБД являются IDMS db _ VistaIII СЕТЬ СЕТОР и КОМПАС.
Объектная модель базы данных используется в основном для создания высокого уровня абстракции и работы с объектными данными такими как изображение музыка видео и различного текста
Характеристика современных объектных моделей баз данных приведена в таблице 1 [13 с. 199].
Таблица 1 — Современные объектные модели баз данных
Название Назначение
Versant разработка Versant Technologies Используется для разработки телекоммуникаций
POET компания POET Software Поддержка интерфейсов C++ Java Visual Basic
Object Store PSE разработка компании Object Design Модули объектов Java
Объектно-ориентированная модель отличается от объектной модели тем что данные могут как моделироваться в виде объектов так и представляться атрибутами методами и классами [14 с. 22].
Объектно-ориентированные модели представления данных позволяют идентифицировать отдельные записи базы. Между записями базы данных и функциями их обработки формируются определенные взаимосвязи с помощью механизмов похожих на соответствующие средства в объектно-ориентированных языках программирования. Характеристики объектно-ориентированной модели данных приведены в Приложении А.
Достоинствами объектно-ориентированной модели данных являются возможность показа информации о сложных взаимосвязях объектов способность идентификации отдельной записи базы данных и определения функции ее обработки.
К недостаткам объектно-ориентированной модели данных относятся трудность в понимании ее деятельности непрофессиональным пользователем неудобство обработки данных небольшая скорость выполнения запросов.
Среди объектно-ориентированных СУБД можно выделить системы фирмы РОЕТ Software Versant фирмы Versant Technologies и др.
Реляционная база данных представляет собой хранилище данных организованных в виде двумерных таблиц. Таблицы отражают тип объекта сущности разделенные на строки представляющие собой экземпляры объекта и столбцы соответствующие атрибутам на пересечении которых содержатся значения данных составляющие основу организации реляционной модели данных.
Для упорядочивания строк в реляционной таблице модели данных используется первичный ключ который представляет собой атрибут или группу атрибутов а для упорядочивания столбцов одной таблицы значения в котором совпадают со значениями в другой таблице используется внешний ключ. Реляционная модель данных поддерживает операторы обработки отношений таких как реляционная алгебра и реляционное исчисление.
Основные правила реляционной модели данных отражены на рисунке 4 [15 с. 49].
Рисунок 4 — Основные правила реляционной модели данных
В реляционной модели данных различают связи по типу и мощности связи которая представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству дочерней сущности.
В таблице 2 приведены характеристики используемых в реляционной модели данных связей [16 с. 36].
Таблица 2 — Виды связей используемых в реляционной модели данных
Название Характеристика
По типу
Идентифицирующая Экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью
Не идентифицирующая Атрибуты которые составляют первичный ключ родительской сущности входят в состав не ключевых атрибутов дочерней сущности
По мощности связи
Один к одному Одной строке родительской таблицы может соответствовать не более одной сроки дочерней таблицы
Один ко многим Одной строке родительской таблицы может соответствовать множество строк дочерней таблицы но любой сроке дочерней таблицы может соответствовать только одна строка родительской таблицы
Особое значение в реляционной модели данных уделяется нормализации отношений которая представляет собой процесс функциональной зависимости между атрибутами одного и того же отношения когда каждому значения одного атрибута соответствует только одно значение второго атрибута.
Нормализация связана с разделением одной таблицы на две или более таблиц которые соответствуют требованиям нормальных форм характеристика которых приведена в таблице 3 [17 с. 103].
Таблица 3 — Характеристика нормальных форм
Название формы Характеристика
Первая нормальная форма 1НФ На любом пересечении строки и столбца находится единственное значение которое должно быть атомарным при этом не должно быть повторяющихся групп
Вторая нормальная форма 2НФ В основе находится понятие полной функциональной зависимости когда один атрибут полностью функционально зависит от другого атрибута и не зависит от какого-либо подмножества атрибута
Третья нормальная форма 3НФ В основе находится транзитивная зависимость то есть чтобы ни один не ключевой столбец не зависел бы от другого не ключевого столбца
Четвертая нормальная форма 4НФ В основе находится многозначная зависимость которая существует между атрибутами некоторого отношения однако входящие в эти наборы значения не зависят друг от друга
Пятая нормальная форма 5НФ Отношение которое не содержит зависимостей соединения то есть когда декомпозиция отношения может сопровождаться генерацией ложных строки при обратном соединении декомпозированных отношений с помощью операции естественного соединения
Достоинство реляционной модели данных заключается в простоте понятности и удобстве физической реализации на ЭВМ. Именно простота и понятность для пользователя явились основной причиной ее широкого использования.
К основным недостаткам реляционной модели относятся отсутствие стандартных средств идентификации отдельных записей и сложность описания иерархических и сетевых связей.
Примерами зарубежных реляционных СУБД для ПЭВМ являются DB 2 Paradox FoxPro Access Clarion Oracle. К отечественным СУБД реляционного типа относятся системы ПАЛЬМА и HyTech.
На основании проведенного анализа основных моделей построения баз данных для дальнейшего исследования выбираем реляционную модель как наиболее простую и удобную для физической реализации на ЭВМ.
1.3 Технологии распределенной обработки данных
Рассмотрим модели которые используются в технологии распределенной обработки данных.
Технология модели «клиент-сервер» основана на принципе взаимодействия двух программных процессов в котором клиентский процесс запрашивал некоторые услуги а серверный – обеспечивал их выполнение причем один серверный процесс может обслужить множество клиентских процессов.
В основу технологии «клиент-сервер» заложено разделение функций стандартного интерактивного приложения рисунок 5 [18 с.196].
Рис. 5. Функции технологии «клиент-сервер»
В основе структуры типового интерактивного приложения работающего с базой данных содержатся [19 с.179]
— претензионная логика которая определяется тем что пользователь видит на своем экране когда работает приложение
— бизнес — логика определяющая алгоритмы решения задач приложений и обычно создается с использованием различных языков программирования
— логика обработки данных которая отвечает за обработку данных внутри приложения для обеспечения доступа к которым используется язык запросов и средства манипулирования данными SQL
— процессор управления данными с помощью которого обеспечивается хранение и управление базами данных где функции СУБД должны быть скрыты от бизнес — логики приложений.
Также для распределения указанных функций используются двухуровневые модели модель удаленного управления данными и модель файлового сервера.
Распределение функций в модели файлового сервера данными показано на рисунке 6 [20 с.108].
Рисунок 6 — Структура распределения функций в модели файлового сервера
Достоинством модели файлового сервера является то что не требуется разделение монопольного приложения на два взаимодействующих процесса при этом сервер как и при технологии «клиент-сервер» может одновременно обслуживать несколько клиентов которые обращаются к нему с запросами.
Недостатки модели файлового сервера являются высокий сетевой трафик узкий спектр операций манипулирования с данными и отсутствие адекватных средств безопасности доступа к данным.
В отличие от модели файлового сервера в модели удаленного доступа к данным база данных храниться на сервере на котором также находится ядро системы управления базами данных а на клиенте располагается претензионная логика и бизнес логика приложения как показано на рисунке 7 [21 с. 223].
Рисунок 7 — Модель удаленного доступа к данным
Модель удаленного доступа к данным исключает главный недостаток модели файлового сервера поскольку от клиентов к серверу передаются не запросы на ввод-вывод а структурированные запросы объем которых значительно меньше и в ответ на запросы клиент получает только данные релевантные запросу а не блоки файлов.
Таким образом модель удаленного доступа к данным наиболее подходит для реализации распределенной СУБД с использованием SQL запросов.
2. ОСОБЕННОСТИ ЯЗЫКА СТРУКТУРИРОВАННЫХ ЗАПРОСОВ SQL
2.1. Общие понятия о языке SQL
Язык структурированных запросов SQL является информационно-логическим языком предназначенным для описания изменения и извлечения данных хранимых в реляционных базах данных [22 с. 102].
Язык SQL является основным способом работы пользователя с базой данных и позволяет выполнять следующий набор операций приведенных на рисунке 8 [23 с. 63].
Рисунок 8 — Возможности SQL
При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных.
В то же время современные СУБД а также информационные системы использующие СУБД предоставляют пользователю развитые средства визуального построения запросов.
Каждое предложение SQL – это запрос или обращение к базе данных которое приводит к изменению в базе данных.
В соответствии с тем какие изменения происходят в базе данных различают следующие типы запросов рисунок 9 [24 с. 122].
Рисунок 9 — Типы запросов для организации работы СУБД
Основным объектом хранения реляционной базы данных является таблица поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим запросы делятся на [25 с. 169]
— запросы оперирующие самими таблицами создание и изменение таблиц
— запросы оперирующие с отдельными записями или строками таблиц или наборами записей.
Каждая таблица описывается в виде перечисления своих полей столбцов таблицы с указанием
— типа хранимых в каждом поле значений
— связей между таблицами задание первичных и вторичных ключей
— информации необходимой для построения индексов.
Запросы первого типа в свою очередь делятся на запросы предназначенные для создания в базе данных новых таблиц и на запросы предназначенные для изменения уже существующих таблиц.
Запросы второго типа оперируют со строками и их можно разделить на запросы следующего вида [26 с. 108]
— вставка новой строки
— изменение значений полей строки или набора строк
— удаление строки или набора строк.
Самый главный вид запроса — это запрос возвращающий пользователю некоторый набор строк с которым можно осуществить одну из трёх операций [27 с. 223]
— просмотреть полученный набор
— изменить все записи набора
— удалить все записи набора.
Таким образом использование SQL сводится по сути к формированию всевозможных выборок строк и совершению операций над всеми записями входящими в набор [28 c.23].
2.2 Структура и назначение операторов SQL
Различают следующие основные операторы SQL
1 операторы определения данных DDL
2 операторы манипулирования данными DML
3 операторы управления транзакциями TCL.
Операторы определения объектов базы данных позволяют создавать удалять изменять базу данных таблицы в базе данных а также выполнять операции с доменами баз данных и представлениями.
Основные операторы определения объектов базы данных DDL и их назначение приведены в таблице 4 [28 с. 56].
Таблица 4 — Основные операторы определения объектов базы данных DDL
Название Значение
CREATE SCHEMA Создание схемы базы данных
DROP SHEMA Удалить схему базы данных
CREATE TABLE Создать таблицу
ALTER TABLE Изменить таблицу
DROP TABLE Удалить таблицу
CREATE DOMAIN Создать домен
ALTER DOMAIN Изменить домен
DROP DOMAIN Удалить домен
CREATE COLLATION Создать последовательность
DROP COLLATION Удалить последовательность
CREATE VIEW Создать представление
DROP VIEW Удалить представление
Операторы манипулирования данными DML позволяют отобрать добавить и изменить строки в таблице базы данных а также зафиксировать и откатить внесенные изменения как показано в таблице 5 [28 с. 52].
Таблица 5 – Основные операторы манипулирования данными DML
Название Значение
SELECT Отобрать строки из таблиц
INSERT Добавить строки в таблицу
UPDATE Изменить строки в таблице
DELETE Удалить строки в таблице
COMMIT Зафиксировать внесенные изменения
ROLLBACK Откатить внесенные изменения
Операторы управления транзакциями позволяют создавать и удалять ограничения предоставлять и отменять привилегии пользователю или приложению на манипулирование объектами и их назначение приведено в таблице 6 [28 с. 46].
Таблица 6 — Операторы управления транзакциями TCL
Название Значение
CREATE ASSERTION Создать ограничение
DROP ASSERTION Удалить ограничение
GRANT Предоставить привилегии пользователю или приложению на манипулирование объектами
REVOKE Отменить привилегии пользователя или приложения
2.3. Преимущества и недостатки языка SQL
Так как существует общепринятый стандарт языка SQL многие разработчики СУБД стараются придерживаться его. Использование базой данных языка SQL является одним из факторов определяющих ее успешность и распространенность.
Существуют различия в синтаксисе между конкретными СУБД но в большинстве случаев запросы из одной СУБД могут быть перенесены на другую с минимальными изменениями.
Наличие стандартов и набора тестов для определения совместимости конкретной реализации SQL к общепринятому стандарту заметно способствует унификации языка.
Правда стоит заметить что сам по себе стандарт несколько раздут в размерах Например размер части ядра стандарта SQL занимает 1300 страниц текста [20 с. 44].
Основные преимущества языка структурированных запросов SQL приведены на рисунке 10 [2 с. 90].
Для опытных программистов баз данных важно знать каким образом СУБД будет обрабатывать его запрос поэтому в большинстве СУБД предусмотрена возможность показать программисту последовательность действий которую будет выполнять СУБД при запросе.
При этом программист имеет возможность подсказывать СУБД при формировании запроса какие лучше использовать индексы и в каком порядке.
Рисунок 10 — Преимущества языка SQL
К основным недостаткам языка SQL относятся неопределенные значения возможность дублирования отсутствие поддержки свойства «=» и высокая избыточность. Современный язык структурированных запросов SQL считается сложным для освоения с ним работают в основном программисты хотя изначально он задумывался как язык с которым сможет работать конечный пользователь [21 с. 245].
Таким образом язык SQL является одним из языков появившихся в результате разработки реляционной модели данных который фактически превратился в стандартный язык реляционных баз данных поэтому представляет большой интерес рассмотреть в третьей главе применение языка SQL в прикладном программировании.
3. ИСПОЛЬЗОВАНИЕ SQL В ПРИКЛАДНОМ ПРОГРАММИРОВАНИИ
3.1 Обоснование выбора применяемых технологий для решения задачи
Сегодня существует много различных технологий позволяющих создавать веб-приложения разной степени сложности. К ним относятся ASP ASP.NET PHP JSP и многие другие. Наиболее популярной и распространённой технологией на сегодняшний день является PHP во многом благодаря своей бесплатности [20 с. 72].
ASP.NET – это новая технология разработанная компанией Microsoft и являющаяся частью среды .NET Framework. Она позволяет динамически создавать документы на веб-сервере когда они запрашиваются по протоколу HTTP.
PHP – это открытая и бесплатная технология. PHP – это скриптовый язык созданный для динамического вывода HTML.
JSP Java Server Pages — технология позволяющая веб-разработчикам легко создавать содержимое которое имеет как статические так и динамические компоненты. По сути страница JSP является текстовым документом который содержит текст 2-х типов
— статические исходные данные которые могут быть оформлены в одном из текстовых форматов HTML SVG WML
— XML и JSP элементы которые конструируют динамическое содержимое.
Кроме этого могут использоваться библиотеки JSP тегов а также EL Expression Language для внедрения Java-кода в статичное содержимое JSP-страниц.
Одним из важнейших факторов влияющим на выбор той или иной технологии является быстродействие особенно при одновременной работе с множеством пользователей. Утверждать что какая — то из технологий всегда выигрывает в быстродействии нельзя необходимо рассматривать каждый конкретный случай отдельно.
Скорость работы обеспечивается тем что все РНР-приложения работают в едином адресном пространстве тогда как ASP.NET за счет сложной модели классов многократно проверяет и перепроверяет данные удерживая каждое приложение в отдельном адресном пространстве.
Первый подход более быстр но менее надежен второй — более надежен но за это приходится платить.
Отдельно стоит упомянуть об обеспечении быстродействия при взаимодействии с СУБД. Технология PHP ориентирована на работу с MySQL а ASP.NET – с MS SQL Server. Это значит что наилучшее быстродействие будет достигаться при использовании соответствующей СУБД.
JSP — одна из высокопроизводительных технологий так как весь код страницы транслируется в Java-код сервлета с помощью компилятора JSP страниц Jasper и затем компилируется в байт-код виртуальной машины Java JVM. Контейнеры сервлетов способные исполнять JSP страницы написаны на языке Java который может работать на различных платформах. JSP страницы загружаются на сервере и управляются из структуры специального Java Server Packet который называется Java EE WEB Application в большинстве своём упакованные в файловые архивы .war и .ear.
Выгода которую дает технология JSP в сравнении с другими веб-технологиями заключается в том что JSP является платформонезависимой переносимой и легко расширяемой технологией для разработки веб-приложений.
Любая из представленных технологий сможет реализовать требования предъявляемые к нашему приложению. Одним из ключевых фактов однако является хостинг созданной системы и тут у РНР весомое преимущество в интернете существует огромное число хостингов поддерживающих РНР в связке с MySQL это и повлияло на выбор используемого языка программирования для серверной части системы [19 с. 170].
Для разработки клиентской части системы используется язык программирования JavaScript.
Язык JavaScript — это прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript.
Язык JavaScript обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.
Основные архитектурные черты динамическая типизация слабая типизация автоматическое управление памятью прототипное программирование функции как объекты первого класса.
На JavaScript оказали влияние многие языки при разработке была цель сделать язык похожим на Java но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация что отличает его от ряда языков программирования используемых в веб-разработке.
Язык JavaScript практически не имеет конкурентов единственным языком программирования – конкурентом JavaScript является язык Dart разработанный в google но он так и не приобрел популярность.
А вот фреймворков облегчающих разработку на JavaScript создано десятки например Backbone.js Ember.js CanJS AngularJS Dojo YUI jQuery KnockoutJS ExtJS.
Для создания системы выбран фреймворк jQuery как один из наиболее популярных а также рекомендуемых для простых веб-приложений и сайтов. Обеспечивающих кроссбраузерность легкую обработку событий взаимодействие с удаленными сервисами расширяемость и огромный набор плагинов. В работе был использован свободный набор инструментов для создания сайтов и веб-приложений Twitter Bootstrap основанный на фреймворке jQuery.
Разрабатываемая система будет хранить значительные объёмы структурированной информации к которой необходимо обеспечить эффективный множественный доступ. Исходя из этого в качестве информационной системы была выбрана реляционная база данных.
Для управления базой данных необходимо выбрать СУБД которая будет максимально отвечать требованиям предъявляемым к разрабатываемому веб-приложению.
Довольно часто для малых и средних проектов используется СУБД MySQL она первоначально была разработана как простая бесплатная база данных. Однако при правильной архитектуре ее можно использовать и для высоконагруженных отказоустойчивых систем. Связка РНР +MySQL является наиболее популярной у веб разработчиков а также стала необходимым условием предоставления услуг для веб хостинга.
Для написания и локального тестирования системы выбрался Open Server . Это портативная программная платформа созданная специально для веб-разработчиков с учётом их рекомендаций и пожеланий.
Программный комплекс имеет богатый набор серверного программного обеспечения удобный многофункциональный продуманный интерфейс обладает мощными возможностями по администрированию и настройке компонентов. Платформа широко используется с целью разработки отладки и тестирования веб-проектов а так же для предоставления веб-сервисов в локальных сетях.
Open Server включает в себя Apache nginx PHP MySQL phpMyAdminFTP-серверFileZilla.
Open Server— это пожалуй наилучший комплект на сегодняшний день для создания и тестирования локальных сайтов под Windows. Удобное меню система запуска простое создание виртуальных хостов внимание к мелочам позволяют легко работать начинающим веб-разработчикам а входящие в комплект компоненты устроят и профессиональных программистов.
Для хостинга сайта был выбран сервис Hostinger.ru. Компания Hostinger – лидер услуг бесплатного веб-хостинга. Пользователи могут создавать собственные сайты без лишних расходов без рекламы и под любые потребности. На этом сервисе поддерживается PHP MySQL и FTP-сервер. Это необходимый минимум для работоспособности разрабатываемой системы. Также сервис предоставляет собственные домены 3 уровня.
3.2. Реализация программной части веб — приложения
Реляционная структура базы данных приведена на рисунке 11.
Рисунок 11 — Реляционная структура базы данных
Таблица users содержит информацию о пользователях. Поле nickname является логином пользователя на сайт. Поля password_hash и salt отвечают за хранение пароля пользователя в БД.
Таблица categories содержит список категорий тем рассылки и определить какой пользователь подписан на какие категории рассылки помогает таблица subscriptions если она содержит ключ ID пользователя — ID категории то пользователь подписан на эту категорию.
Таблица mails хранит в себе все отправленные сообщения. Понять какие сообщения были отправлены для каких категорий помогает таблица mailing_map. Если она содержит ключ ID категории — ID сообщения то данное сообщение передавалось для всех пользователей данной категории.
Таблица hashes требуется для автоматической авторизации пользователя со всех устройств с которых он уже входил в систему. при загрузке сайта с устройства если пользователь не залогинен то в cookies проверяется хэш сайта и если совпадают пары хэш и ID пользователя происходит автоматическая авторизация пользователя.
Описание таблиц базы данных приведено в Приложении Б.
Запросы формирующие базу данных приведены в Приложении В.
Для работы с базой данных и формирования контента сайта используется язык php.
Описание взаимодействия с базой данных средствами PHP приведено в Приложении Г.
3.3. Описание общей схемы взаимодействия компонент веб-приложения основные сценарии работы
Попав на сайт пользователь может зарегистрироваться или авторизоваться. Если пользователь попытается подписаться на рассылку без авторизации то всплывет модальное окно с приглашением войти на сайт. Пользователи могут изменять настройки своих подписок.
Администратор имеет расширенный интерфейс он может изменять настройки пользователь а также изменять настройки категорий рассылок в специальных меню доступных только людям с правами администратора. Также он может создать дополнительные категории посмотреть архив рассылок и создать свою собственную рассылку.
Все события обрабатываются скриптом index.php или скриптами доступными в папке scripts. Все скрипты из этой папке не опасны т.к. не содержат информации для подключения к базе данных.
Схема переходов пользователя приведена на рисунке 12.
Рисунок 12 — Схема переходов пользователя
Как видно из рисунка 12 схема переходов пользователя включает регистрацию авторизацию восстановление пароля подписаться и отписаться от категории.
Основные страницы веб — приложения приведены в Приложении Д.
В третьей главе курсовой работы рассмотрен практический пример использования SQL в прикладном программировании на основании разработки веб — приложения для которого была разработана и описана реляционная база данных созданы SQL запросы по работе с базой данных и описан интерфейс пользователя.
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
25. Информатика и информационно-коммуникационные технологии. Базовый курс И.Г. Семакин С.В. Русаков Л.В. Шестакова. — М БИНОМ Лаборатория знаний 2010. – С. 169
26. Компьютерные технологии обработки информации Под ред. С.В. Назарова. — М. Финансы и статистика 2005. – С.108
27. Соболь Б.В. Галин А.Б. Панов Ю.В. и др. Информатика учебник. – М. Феникс 2007. – С.223
28. Шкарина Л. Язык SQL учебный курс. – СПб. Питер 2001 – С.23-96
Приложение А
Характеристики объектно-ориентированной модели данных
Название Значение
Поддержка сложных объектов Предусмотрена возможность создания составных объектов за счет применения конструкторов составных объектов. Необходимо чтобы конструкторы объектов были ортогональны то есть любой конструктор можно было применять к любому объекту
Поддержка индивидуальности объектов Основным требованием является что все объекты должны иметь уникальный идентификатор который не зависит от значений их атрибутов
Поддержка инкапсуляции Корректная инкапсуляция достигается за счет того что программисты обладают правом доступа только к спецификации интерфейса методов а данные и реализация методов скрыты внутри объектов
Поддержка типов и классов Необходима концепция между типами и классами компилятор может использовать информацию для проверки выполняемых с переменной операций на совместимость с ее типом
Поддержка наследования типов и классов от их предков Подкласс должен наследовать атрибуты и методы его супертипа и для обеспечения этой функциональности связывание имен методов в системе не должно выполняться до времени выполнения программы
Вычислительная полнота Язык программирования должен быть общего назначения для манипулирования данными
Расширенность набора типа данных Наличие средств для создания новых типов данных на основе набора предопределенных системных типов. Особое требование – это то что между способами использования системных и пользовательских типов данных не должно быть никаких различий
Приложение Б
Описание таблиц базы данных
Таблица users
`u_id` Первичный ключ пользователя
`nickname` Логин пользователя
`email` Адрес электронной почты пользователя
`password_hash` Хэш пароля пользователя
`salt` Соль используемая для получения пароля пользователя
`reg_date` Дата регистрации
`last_update` Дата последних изменений профиля пользователя
`role` Права пользователя
Таблица categories
`id` Первичный ключ категории
`name` Название категории
`description` Описание категории
`promo_content` Контент демонстрирующийся на сайте для рекламы категории
`date_create` Дата создания категории
Таблица subscriptions
`fk_user` Внешний ключ к таблице пользователей
`fk_category Внешний ключ к таблице категорий
Таблица mails
`id` Первичный ключ сообщения
`content` Содержание сообщения
`date_create` Дата создания сообщения
Таблица mailing_map
`fk_mail` Внешний ключ к таблице сообщений
`fk_category` Внешний ключ к таблице категорий
Таблица hashes
`h_id` Первичный ключ хэша
`u_fk` Внешний ключ к таблице пользователей
`s_hash` Значение хэша
`date_create` Дата создания записи
`last_update` Дата последнего обновления хэша
Приложение В
Запросы формирующие базу данных
CREATE DATABASE IF NOT EXISTS `emailbd` 40100 DEFAULT CHARACTER SET utf8
USE `emailBD`
CREATE TABLE IF NOT EXISTS `users`
`u_id` int11 NOT NULL AUTO_INCREMENT
`nickname` varchar50 NOT NULL
`email` varchar50 NOT NULL
`password_hash` varchar64 NOT NULL
`salt` varchar64 DEFAULT NULL
`reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
`last_update` datetime DEFAULT NULL
`role` varchar30 DEFAULT NULL
PRIMARY KEY `u_id`
UNIQUE KEY `nickname` `nickname`
UNIQUE KEY `email` `email`
KEY `password_hash` `password_hash`
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `categories`
`id` int11 NOT NULL AUTO_INCREMENT
`name` varchar100 NOT NULL
`description` text
`promo_content` text
`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
PRIMARY KEY `id`
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `subscriptions`
`fk_user` int11 NOT NULL
`fk_category` int11 NOT NULL
PRIMARY KEY `fk_user«fk_category`
KEY `fk_category` `fk_category`
CONSTRAINT `subscriptions_ibfk_1` FOREIGN KEY `fk_user` REFERENCES `users` `u_id` ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `subscriptions_ibfk_2` FOREIGN KEY `fk_category` REFERENCES `categories` `id` ON DELETE CASCADE ON UPDATE CASCADE
ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `mails`
`id` int11 NOT NULL AUTO_INCREMENT
`content` text
`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
PRIMARY KEY `id`
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `mailing_map`
`fk_mail` int11 NOT NULL
`fk_category` int11 NOT NULL
PRIMARY KEY `fk_mail«fk_category`
KEY `fk_category` `fk_category`
CONSTRAINT `mailing_map_ibfk_1` FOREIGN KEY `fk_mail` REFERENCES `mails` `id` ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `mailing_map_ibfk_2` FOREIGN KEY `fk_category` REFERENCES `categories` `id` ON DELETE CASCADE ON UPDATE CASCADE
ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `hashes`
`h_id` int11 NOT NULL AUTO_INCREMENT
`u_fk` int11 NOT NULL
`s_hash` varchar64 DEFAULT NULL
`date_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
`last_update` datetime DEFAULT NULL
PRIMARY KEY `h_id`
KEY `hashes_ibfk_1` `u_fk`
CONSTRAINT `hashes_ibfk_1` FOREIGN KEY `u_fk` REFERENCES `users` `u_id` ON DELETE CASCADE ON UPDATE CASCADE
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
Приложение Г
Взаимодействие с БД средствами PHP
Mail – Класс письмо
Private
$id id письма в таблице
$content Содержимое письма
$date_create Дата добавления в таблицу письма
Public
__construct $data Вызывает контсруктор объекта устанавливает значения полей
__get_id Получить значение переменной $id
__get_content Получить значение переменной $content
__get_date_create Получить значение переменной $ date_create
__set_id $val Установить значение переменной $id
__set_content $val Установить значение переменной $content
__set_date_create $val Установить значение переменной $ date_create
MailManager – Отвечает за создание письма и рассылку пользователям
public static
CreateMail $content Сохраняет письмо в БД
SendMailText $mailAdres$content Отправляет письмо по указанному адресу
CreateMailing $listCategories$content Выполняет рассылку всем пользователям подписанным на категории содержащимся в списке $ listCategories
GetListMails $start$skip Возвращает массив писем размером $skip начиная с элемента $start из БД
Category – Класс категория тема подписки
Private
$id id категории в таблице
$name Название категории
$description Описание категории
$promo_content Контент который будет представлять на сайте категорию.
$date_create Дата добавления в таблицу письма
Public
__construct $data Вызывает контсруктор объекта устанавливает значения полей
__get_id Получить значение переменной $id
__get_name Получить значение переменной $name
__get_description Получить значение переменной $ description
__get_promo_content Получить значение переменной $promo_content
__get_date_create Получить значение переменной
$date_create
__set_id $val Установить значение переменной $id
__set_name $val Установить значение переменной $name
__set_description $val Установить значение переменной $description
__set_promo_content $val Установить значение переменной $ promo_content
__set_date_create $val Установить значение переменной $ date_create
MailManager – Управляет множеством товаров как одной сущностью
public static
CreateMail $content Сохраняет письмо в БД
SendMailText $mailAdres$content Отправляет письмо по указанному адресу
CreateMailing $listCategories$content Выполняет рассылку всем пользователям подписанным на категории содержащимся в списке $ listCategories
GetListMails $start$skip Возвращает массив писем размером $skip начиная с элемента $start из БД
User – Класс пользователь
Private
$id id пользователя в таблице
$email Адрес электронной почты пользователя
$nickname Имя пользователя на сайте
$password_hash Хэш пароля пользователя
$salt Соль пользователя при получении хэша пароля
$reg_date Дата регистрации пользователя
$last_update Последнее обновление настроек пользователя
$role Права пользователя useradmin
Public
__construct $data Вызывает контсруктор объекта устанавливает значения полей
__get_u_id Получить значение переменной $u_id
__get_role Получить значение переменной $role
__get_email Получить значение переменной $email
__get_nickname Получить значение переменной $nickname
__get_reg_date Получить значение переменной
$reg_date
__get_last_update Получить значение переменной $last_update
__get_salt Получить значение переменной $salt
__get_password_hash Получить значение переменной $ password_hash
__set_u_id $val Установить значение переменной $u_id
__set_role $val Установить значение переменной $role
__set_email $val Установить значение переменной $email
__set_nickname $val Установить значение переменной $nickname
__set_reg_date $val Установить значение переменной
$reg_date
__set_last_update $val Установить значение переменной $last_update
__set_salt $val Установить значение переменной $salt
__set_password_hash $val Установить значение переменной $ password_hash
UserManager – Класс отвечает за регистрацию аутентификациюудаление пользователей
Public
__construct Вызывает контсруктор объекта устанавливает значения полей
Public static
generateSalt Возвращает случайную последовательность для соли к паролю пользователя
myCrypt $pass$salt Возвращает хэш пароля пользователя и соли
updateHashe_Cookie $q_id$q_hahs Устанавливает в cookie новое значение параметра SH используется для автоматического логина пользователя
checkUserByNickname_Pass $login$pass Сравнивает введенный пароль пользователя с хранящимся в базе их хэши и возвращает ID пользователя в случае совпадения
setCookie $id=null Устанавливает cookie в браузер пользователя параметры userid SH
delCookie $id=null Удаляет cookie с браузера пользователя
refreshUser $q_id$q_hahs Обновляет параметр SH в cookie пользователя
registrationUser $login$pass$mail Регистрирует пользователя – сохраняет в БД его логин пароль и адрес электронной почты
recoveryUserByNickname $login Отсылает на почту пользователя по его запросу новый пароль сгенерированный автоматически
recoveryUserByID $userid Отсылает на почту пользователя по запросу администратора новый пароль сгенерированный автоматически
sendUserNewPassByMail $usr0$new_pass Функция отвечает непостредственно за отсылку пользователю пароля
checkUserByNickname $login Проверяет наличие в БД пользователя с переданным логином
deleteUser $id Удаляет пользователя из БД
SettingController – Класс отвечает за действия над пользователями из административной части сайта
Public static
getListUsers Возвращает список пользователей
getListCategories Возвращает списко категорий
getUserByID $u_id Возвращает данные пользователя по его ID
getCategoryByID $cat_id Возвращает данные каотегории по ее ID
getCategoriesMapByUser $u_id Возвращает все категории и выделяет категории на которые подписан пользователь
getNumberSubscriberByCategoryId $cat_id Вовзращает число подписанных пользователей на категорию
updateSubscription $userid$cat_id$statuse Изменяет состояние подписки пользователя на категорию
updateRole $userid$role Изменяет права пользователя на сайте
newCategory $name$description$content Создает новую категорию
updateCategory $cat_id$name$description$content Изменяет категорию
deleteCategory $cat_id Удаляет категорию
DBConnect– Класс для работы с БД
private static
$DB_HOST Адрес БД
$DB_NAME Имя БД
$DB_USER Имя пользователя в БД
$DB_PASS Пароль пользователя в БД
protected $DBH Объект — соединение с БД
public function
getUserByID $id=null Возвращает пользователя
deleteUserByID $u_id Удаляет пользователя из БД
getUserByNickname $nickname=null Возвращает пользователя по его логину
getUserByNicknameForRecovery $login Возвращает пользователя его ID если он есть в БД логин
getUserByMail $mail=null Возвращет пользователя по его адресу электронной почты
addSubscription $fk_user$fk_category Добавляет подписку пользователю на категорию
DBConnect– Класс для работы с БД
delSubscription $fk_user$fk_category Удаляет подписку пользователю на категорию
addMailingMap $fk_mail$fk_category Добавляет в БД информацию о том какое сообщение было отправлено по каким категориям
delMailingMap $fk_mail$fk_category Удаляет из БД информацию о том какое сообщение было отправлено по каким категориям
addUser $nickname$pass_hash$salt$mail=null$role=’user’ Добавляет в БД нового пользователя
addCoupleUserID_Hash $u_id$hash Добавляет в таблицу хэшей пару – ID пользователя и его хэщ
delCoupleUserID_Hash $u_id$hash Удаляет запись из таблицы хэшей
updCoupleUserID_Hash $u_id$hash$new_hash Обновляет запись в таблице хэшей
getCountCoupleUserID_Hash$u_id$hash Возвращает из БД число устройств с которых залогинен пользователь
getCountUsersByMail $mail Возвращает число пользователей в БД с указанным адресом электронной почты
updPassword_SoltByUserID $u_id$new_pass_hash$new_solt Обновляет хэш и соль пароля пользователя
getListUsers $skip=0$max=1000 Возвращает список пользователей
getListCategories $skip=0$max=100 Возвращает список категорий
getMapCategoriesByUser $userid Возвращает список всех категорий и отмечает на какие подписан пользователь
getCountSubscriberByCategoryID $cat_id Возвращает число пользователей подписанных на категорию
getCategoryByID $id=null Возвращает данные о категории
updUserRoleByID $id$role Обновляет права пользователя на сайте
addCategory $name$description$content Добавляет новую категорию
updateCategory $id $name $description $content Обновляет параметры категории
deleteCategory $id Удаляет категорию
addMail $content Записывает в БД текст письма
getListEmailsByCategoriesID$listCategoryID Возвращает массив адресов электронных почт пользователей подписанных на категории указанные в параметр
getListMailsForArhive $start=0$skip=20 Возвращает массив писем которые были посланы по категориям указанным в параметре
Приложение Д