Рисунок 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].
В основе структуры типового интерактивного приложения, работающего с базой данных, содержатся [19, с.179]:
Рис. 5. Функции технологии «клиент-сервер»
претензионная логика, которая определяется тем, что пользователь видит на своем экране, когда работает приложение;
бизнес - логика, определяющая алгоритмы решения задач приложений и обычно создается с использованием различных языков программирования;
логика обработки данных, которая отвечает за обработку данных внутри приложения для обеспечения доступа, к которым используется язык запросов и средства манипулирования данными SQL;
процессор управления данными, с помощью которого обеспечивается хранение и управление базами данных, где функции СУБД должны быть скрыты от бизнес - логики приложений.
Также для распределения указанных функций используются двухуровневые модели: модель удаленного управления данными и модель файлового сервера.
Распределение функций в модели файлового сервера данными показано на рисунке 6 [20, с.108].
Рисунок 6 - Структура распределения функций в модели файлового сервера
Достоинством модели файлового сервера является то, что не требуется разделение монопольного приложения на два взаимодействующих процесса, при этом сервер, как и при технологии «клиент-сервер» может одновременно обслуживать несколько клиентов, которые обращаются к нему с запросами.
Недостатки модели файлового сервера являются: высокий сетевой трафик, узкий спектр операций манипулирования с данными и отсутствие адекватных средств безопасности доступа к данным.
В отличие от модели файлового сервера, в модели удаленного доступа к данным, база данных храниться на сервере, на котором также находится ядро системы управления базами данных, а на клиенте располагается претензионная логика и бизнес логика приложения, как показано на рисунке 7 [21, с. 223].
Модель удаленного доступа к данным исключает главный недостаток модели файлового сервера, поскольку от клиентов к серверу передаются не запросы на ввод-вывод, а структурированные запросы, объем которых значительно меньше и в ответ на запросы клиент получает только данные, релевантные запросу, а не блоки файлов.
Рисунок 7 - Модель удаленного доступа к данным
Таким образом, модель удаленного доступа к данным, наиболее подходит для реализации распределенной СУБД с использованием SQL запросов.
сервер запрос реляционный
2. Особенности языка структурированных запросов SQL
.1 Общие понятия о языке SQL
Язык структурированных запросов SQL является информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных [22, с. 102].
Язык SQL является основным способом работы пользователя с базой данных и позволяет выполнять следующий набор операций, приведенных на рисунке 8 [23, с. 63].
При всех своих изменениях, SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных.
В то же время, современные СУБД, а, также, информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.
Каждое предложение SQL - это запрос или обращение к базе данных, которое приводит к изменению в базе данных.
В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов (рисунок 9) [24, с. 122].
Рисунок 9 - Типы запросов для организации работы СУБД
Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы - это операции над таблицами. В соответствии с этим, запросы делятся на [25, с. 169]:
запросы, оперирующие самими таблицами (создание и изменение таблиц);
запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием:
типа хранимых в каждом поле значений;
связей между таблицами (задание первичных и вторичных ключей);
информации, необходимой для построения индексов.
Запросы первого типа, в свою очередь, делятся на запросы, предназначенные для создания в базе данных новых таблиц, и на запросы, предназначенные для изменения уже существующих таблиц.
Запросы второго типа оперируют со строками, и их можно разделить на запросы следующего вида [26, с. 108]:
вставка новой строки;
изменение значений полей строки или набора строк;
удаление строки или набора строк.
Самый главный вид запроса - это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций [27, с. 223]:
просмотреть полученный набор;
изменить все записи набора;
удалить все записи набора.
Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор [28, c.23].
2.2 Структура и назначение операторов SQL
Различают следующие основные операторы SQL:
) операторы определения данных DDL;
) операторы манипулирования данными DML;
) операторы управления транзакциями 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]..NET - это новая технология, разработанная компанией Microsoft и являющаяся частью среды .NET Framework. Она позволяет динамически создавать документы на веб-сервере, когда они запрашиваются по протоколу HTTP. - это открытая и бесплатная технология. PHP - это скриптовый язык, созданный для динамического вывода HTML.(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. Это значит, что наилучшее быстродействие будет достигаться при использовании соответствующей СУБД.- одна из высокопроизводительных технологий, так как весь код страницы транслируется в Java-код сервлета с помощью компилятора JSP страниц Jasper, и затем компилируется в байт-код виртуальной машины Java (JVM). Контейнеры сервлетов, способные исполнять JSP страницы, написаны на языке Java, который может работать на различных платформах. JSP страницы загружаются на сервере и управляются из структуры специального Java Server Packet, который называется Java EE WEB Application, в большинстве своём упакованные в файловые архивы .war и .ear.