Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основы проектирования программ. Этапы создания программного обеспечения (СРЕДСТВА АДМИНИСТРИРОВАНИЯ ДАННЫХ И ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ SQL)

Содержание:

ВВЕДЕНИЕ

На сегодняшний день реляционные модели данных доказали свою жизнеспособность даже наряду с относительно новыми моделями такими, как объектно-ориентированные. Реализация реляционных моделей данных немыслима без языка структурированных запросов (SQL). В последнее время язык структурированных запросов превратился из единичного коммерческого программного продукта в целый динамично развивающийся сегмент программного рынка стоимостью в сотни миллиардов долларов в год, а язык структурированных запросов рассматривается сегодня как стандартный язык баз данных компьютера. Тысячи современных программных продуктов, функционирующих с базами данными теперь поддерживают сервера баз данных основанные на языке структурированных запросов. Эти сервера функционируют в компьютерных системах основанных на различных моделях реализации данных. Реляционные базы данных, могут встраиваться в планшеты или другие персональные вычислительные устройства, включая телефоны и компьютеры, мультимедийные системы.

На сегодняшний день известны различные международные стандарты языка структурированных запросов, которые пересматривались несколько раз. Однако, несмотря на различные стандарты, язык структурированных запросов используется в большинстве сложных программных систем предприятий.

Язык структурированных запросов занимает важное место в динамично развивающихся программных продуктах с открытым исходным кодом базы данных, таких как MySQL [7] и Postgres [8], которые помогают питать популярность Linux [5, c.5]. Из малозаметного исследовательского проекта фирмы IBM, SQL превратился в важную составляющую современных информационных технологий.

Актуальность данной работы продиктована тем, что несмотря на свою длительную историю развития, на сегодняшний момент отсутствует точное определение языка структурированных запросов (SQL), а его структура и состав основных операторов динамически изменяется. В связи с тем, что язык структурированных запросов динамически развивается важно определить современные функциональные возможности языка, существующие стандарты, составные элементы, и существующие программные средства, которые позволяют его эффективно использовать на основе текущего понимания терминов, определений и методов проектирования баз данных.

В связи с этим объектом исследования в данной работе является база данных.

Предмет исследования являются базы данных, а также средство для работы с ними – язык структурированных запросов, его структура и основные операторы.

Проблемами анализа структуры языка SQL, его элементов и синтаксических конструкций занимался ряд исследователей среди которых можно выделить таких авторов Ф.Андон, Л.Аткинсон, А.Д.Хомоненко, М.Грабер, К.Дейт, А.Нанди [26].

Целью курсового проекта является анализ структуры языка SQL, историческое развитие и его основных стандартов и составляющих элементов, а так же оценка перспектив его дальнейшего использования совместно с понятийным и методологическим аппаратом баз данных.

Для достижения целей курсового проекта необходимо решение следующих частных задач:

  1. Провести исследование основных теоретических понятий в области баз данных.
  2. Анализ структуры языка SQL и его составных элементов, а так же особенностей их практического использования.
  3. Синтаксический анализ основных конструкций языка структурированных запросов.
  4. Формирование выводов на основе анализа структуры языка SQL и его основных конструкций.
  5. Формирование перспектив дальнейшего развития и использования языка структурированных запросов.

Поставленные задачи структурно сформировали пояснительную записку к курсовому проекту, которая так же состоит из 3-х разделов.

ГЛАВА 1. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ПРОЕКТИРОВАНИЯ ПРОГРАММ

1.1. Основные проектирования программ

Язык структурированных запросов SQL невозможно рассматривать изолировано от таких понятий, как база данных (БД), система управления БД (СУБД), распределенная модель обработки данных, в которой в качестве базового узла вычислительной сети выступает сервер БД.

На сегодняшний день известно большое количество определений понятию «база данных», все эти определения не являются противоречивыми или взаимоисключающими. Скорее, они представляют разные точки зрения авторов на одно и то же понятие. Сложность определения заключается в том, что компьютерные базы данных за свою не очень длинную историю прошли несколько этапов развития, от файловых систем, хранящих в себе «сырые» (неупорядоченные) данные, до постреляционных СУБД, содержимым которых являются данные, обладающие поведением (объекты). Остановимся на определении, которое примем для определения понятия базы данных. База данных — это информационная модель предметной области в виде совокупности данных, хранимых в памяти компьютера и связанных между собой по правилам, которые определяют их общие принципы описания, хранения и манипулирования.

Под информационной моделью понимают информацию об объекте, отобранную и структурированную в соответствии с заданной целью [18; c.5].

Модель данных — это описание методов представления и обработки данных в СУБД, в том числе методов определения типов и логических структур в базе данных, методов манипулирования данными и методов определения и поддержки целостности базы данных [19; с.45].

Исторически первые базы данных создавались на основе файловых систем, и вся ответственность за работу с ними возлагалась на прикладное программное обеспечение, использовавшее эти базы. Файловые базы данных сегодня практически не применяются. В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляются централизованно с помощью специального программного инструментария — системы управления базами данных.

Система управления базами данных (СУБД) — это комплекс языковых и программных средств, предназначенный для создания, ведения и применения базы данных пользователями [28].

Кроме базы данных и программного обеспечения, обеспечивающего основную функциональность СУБД, в состав современных серверов баз данных входят всевозможные средства разработки и механизмы взаимодействия с пользователем на высоком уровне (генераторы отчетов, конструкторы таблиц, построители запросов и форм). Эти средства разработки, сами являясь приложениями пользователя, позволяют создавать приложения, функционирующие как часть СУБД (например, формы и отчеты MS Access или веб-публикации в Oracle и MS SQL Server).

На рис. 1 представлена схема, в которой определены основные термины, используемые при обсуждении СУБД.

1.2. Классификация баз данных

Рассмотрим классификацию баз данных по типу принятой модели данных [9].

Классификацию баз данных по модели данных иллюстрирует рис. 2.

Иерархические базы данных основаны на иерархической модели данных, в которой связь между объектами базы данных образует перевернутое дерево. При такой модели каждый нижележащий элемент иерархии соединен только с одним расположенным выше элементом [10].

Рис.1 – Основные термины базы данных

Рис. 2. – Классификация баз данных по модели данных

Сетевые базы данных основаны на сетевой модели данных, в которой связи между объектами данных могут быть установлены в произвольном порядке.

Реляционные базы данных основаны на реляционной модели данных, в которой каждая единица данных в базе данных однозначно определяется именем таблицы (называемой отношением), идентификатором записи (кортежа) и именем поля.

Объектно-реляционные базы данных содержат объектно-ориентированные механизмы построения структур данных (как минимум, механизмы наследования и поддержки методов) в виде расширений языка и программных надстроек над ядром СУБД.

Объектно-ориентированные базы данных определяют как новое поколение баз данных, основанное на сочетании трех принципов: реляционной модели, стандартов на описание объектов и принципов объектно-ориентированного программирования [12].

Классификацию баз данных по архитектуре иллюстрирует рис. 3

Рис.3 – Классификацию баз данных по архитектуре

В локальных базах данных все данные и объекты СУБД находятся на одном компьютере.

В распределенных базах данных различные части данных (группы таблиц, таблицы и даже фрагменты таблиц) и объекты СУБД могут находится на разных компьютерах.

В качестве примера можно привести сложное производство (или сеть супермаркетов), разные части которого находятся в разных городах. Каждое предприятие накапливает «свои» данные. Необходимо, чтобы каждое из предприятий имело доступ к одним и тем же данным, как своим, так и данным других предприятий. Решением данной проблемы может быть создание одной локальной базы данных на одном компьютере с механизмом удаленного доступа. Однако это решение нерационально, поскольку быстрый доступ к данным будут получать клиентские компьютеры только того предприятия, на котором находится СУБД.

Другим решением данной проблемы может быть создание на каждом предприятии своей копии СУБД. В этом случае возникает затруднение с синхронизацией данных между . Распределенная СУБД в этом случае обеспечивает механизм хранения данных в разных базах данных таким образом, что при обращении совокупность разных баз данных выглядит как одна база. Тогда часто используемые данные («свои» данные) находятся в той части базы данных, которая расположена на предприятии. А при необходимости обратиться к «чужим» данным, СУБД делает запрос к удаленной СУБД и получает данные оттуда. Совокупность разных баз данных на разных компьютерах с точки зрения клиента выглядит как одна база данных.

Классификацию баз данных по способу доступа иллюстрирует рис. 4.

Рис.4 – Классификацию баз данных по способу доступа

В мэйнфреймовых базах данных пользовательское рабочее место представляет собой текстовый или графический терминал, а вся информация обрабатывается на том же компьютере, где находится СУБД.

В файл-серверных СУБД файлы данных располагаются централизованно на файл-сервере, а ядро СУБД находится на каждом клиентском компьютере. Доступ к данным осуществляется через локальную сеть. Синхронизация чтений и обновлений осуществляется посредством файловых блокировок. Преимуществом этой архитектуры является низкая нагрузка на ЦП сервера, а недостатком — высокая загрузка локальной сети.

СУБД состоят из клиентской части (которая входит в состав прикладной программы) и сервера. Клиент-серверные СУБД, в отличие от файл-серверных, обеспечивают разграничение доступа между пользователями и мало загружают сеть и клиентские машины. Сервер является внешней по отношению к клиенту программой, и при необходимости его можно заменить другим. Недостаток клиент-серверных СУБД состоит в самом факте существования сервера (что плохо для локальных программ — в них удобнее встраиваемые СУБД) и больших вычислительных ресурсах, потребляемых сервером.

Встраиваемая СУБД представляет собой программную библиотеку, которая позволяет унифицированным образом хранить большие объемы данных на локальной машине. Доступ к данным может происходить посредством запросов на языке SQL либо путем вызова функций библиотеки из приложения пользователя.

ГЛАВА 2. ОСНОВНЫЕ СТРУКТУРНЫЕ ЭЛЕМЕНТЫ И КОНСТРУКЦИИ ЯЗЫКА СТРУКТУРИРОВАННЫХ ЗАПРОСОВ

2.1. Роль языка структурированных запросов на современном этапе

Сегодня язык структурированных запросов является инструментом для организации, управления и получения данных, хранящихся на компьютере данных. Можно рассматривать язык структурированных запросов в качестве языка программирования, который используется для взаимодействия с базой данных. На самом деле SQL работает с одним определенным типом базы данных, который называется реляционной базой данных, которая стала основной способ организации данных по очень широкому спектру компьютерных приложений.

Любая компьютерная система использующая язык структурированных запросов, управляет базой данных, называется системой управления базами данных (СУБД). Если вам нужно получить данные из базы данных, можно использовать SQL для выполнения запроса. СУБД обрабатывает SQL запрос, получает запрошенные данные и возвращает его к вам. Этот процесс запроса данных из базы данных и получения результатов называется запрос к базе данных, отсюда и название языка структурированных запросов, которое по сути . "Structured Query Language" является неправильным.

В первую очередь, SQL гораздо больше, чем инструмент запроса, хотя это была его первоначальная цель, и получения данных до сих пор одним из самых важных функций. SQL используется для управления всеми функциями, которые СУБД предоставляет для своих пользователей, в том числе [29]:

    • Определения данных SQL. Позволяет пользователю определять структуру и организацию хранимых данных и отношений между единиц хранения данных.
    • Получение данных SQL. Позволяет пользователю или прикладной программе для получения сохраненных данных из базы данных и использовать его.
    • Обработки данных SQL. Позволяет пользователю или прикладной программе для обновления базы данных путем добавления новых данных, удаляя старые данные, и изменение ранее сохраненных данных.
    • Контроль доступа SQL может быть использован для ограничения возможностей пользователей для извлечения, добавления и изменения данных, защиты хранимых данных от несанкционированного доступа.
    • Обмен данными SQL используется для координации обмена данными на параллельных пользователей, гарантируя, что изменения, сделанные одним пользователем, не случайно уничтожили изменений почти в то же время другой пользователь.
    • Целостность данных SQL определяет ограничения целостности в базе данных, защищая ее от коррупции, из-за несовместимости обновления и сбоев системы.

SQL таким образом, всеобъемлющий язык для управления и взаимодействия с системой управления базами данных.

Во-вторых, SQL это не совсем полный язык программирования, как COBOL, C, C + + или Java [27]. Вместо этого SQL представляет собой базу данных подъязыка, состоящая из около 40 запросов для специализированных задач управления базами данных [13]. Эти заявления SQL может быть встроен в другой язык, например COBOL или C, чтобы продлить этот язык для использования в доступ к базе данных. Кроме того, запросы могут быть явно направлены к системе управления базами данных для обработки, через интерфейс уровня вызовов от таких языков, как C, C + +, или Java, или с помощью сообщений, отправленных через компьютерную сеть.

SQL является декларативным или описательным языком, а не процедурным. SQL не содержит IF для проверки условий, и не GOTO, DO, или предложений для программного управления потоком. SQL позволяет описать запросы, как сбор данных, описав какие данные должны быть получены или добавлены в базу данных. SQL не особенно структурированный язык, особенно в сравнении с хорошо структурированный таких языках, как C, Pascal, Java [14,15,21]. Рассмотрим основные элементы языка, а так же особенности их практического применения.

2.2 Запросы, как основной элемент SQL

В основе функционирования языка структурированных запросов лежит реляционная модель данных. Отношение, или таблица в терминах баз данных имеет имя и состоит из одного или нескольких столбцов, каждый из которых имеет имя и тип данных. Таблица состоит из нуля или более строк, каждая из которых имеет значение для каждого из столбцов. Значение, связанное с данной строкой и столбцом может быть экземпляром типа данных этого столбца, а может иметь специальное нулевое значение, указывающее, что значение отсутствует (отсутствует или не применяется).

Предложения языка структурированных запросов, могут быть вид запросов или обновления данных, а так же работают над данными, которые хранятся в виде таблицы или табличных просмотров, созданных на базе этих таблиц. В результате обновления данных происходят изменения в сохраненных данных, которые видно, в процессе выполнения последующих запросов. Как правило, обновления могут быть применены к тем данным, при отображении которых каждая строка данных отображается однозначно из необходимой таблицы. Это правило позволяет отображать обновления в целях обновления базовой таблицы [1, c.23; 22, c.77].

Запрос, реализованный при помощи языка структурированных запросов состоит из одного или нескольких запросных блоков . Блок запроса состоит из нескольких пунктов, каждый из которых начинается с ключевого слова. Некоторые из этих ключевых слов являются обязательными (ключевые слова SELECT, и FROM), а некоторые не требуются (ключевые слова WHERE, GROUP BY, и HAVING) т.е. не являются обязательными [16,с.188; 19, c.454].

Рассмотрим запрос, который иллюстрирует блок соединения двух таблиц. Концептуально, строки из частей таблицы в паре со строками из связанной таблицы, в соответствии с критерием, указанным в WHERE [18;c.67]. Из сохранившихся строк, SELECT определяет столбцы, которые появляются в результате запроса (в данном случае, номер и название поставщика). Различные стратегии возможны для выполнения этого запроса, так как SQL не является процедурным языком, выбор стратегии выполнения остается за оптимизирующим компилятором [6].

SELECT p.partno, s.name

FROM parts p, suppliers s

WHERE p.suppno = s.suppno

AND s.location = ‘Denver’

Много запросов, в том числе приведенный пример, состоит из одного блока запроса. Блоки запросов могут также быть объединены в большие запросы. В следующем примере, запрос-блок служит подзапросом, который вычисляет значение, которое в свою очередь, используется в другом блоке запросов. Подзапрос находит максимальную стоимость в части таблицы, а внешний блок запроса возвращает часть номера деталей, которые должны иметь эту максимальную стоимость. Блоки запросов связаны между собой при помощи ключевого слова WHERE, это означает, что значение в WHERE- условие которое проверяется на включение в список значений, возвращаемых подзапросом, который может в общем возвращать несколько значений [23, c.24].

SELECT partno

FROM parts

WHERE cost IN

(SELECT max(cost)

FROM parts)

Рассмотрим еще один способ реализации этих действий, в котором блоки запросов могут быть объединены в большой запрос с помощью UNION или набора операторов INTERSECT и EXCEPT, которые вычисляют объединение, пересечение и разность множеств строк, возвращенных на два запроса. Типы данных строк, возвращенных соответствующим блоком запроса должны быть совместимы [24, c.44]. Следующий пример вычисляет разность двух блоков запросов, чтобы найти поставщиков. Запрос включает в себя ключевое слово ORDER BY, которое определяет порядок для строк в результате запроса. ORDER BY предложение распространяется не на весь запрос, а на отдельные блоки запроса.

SELECT suppno

FROM suppliers

EXCEPT

SELECT suppno

FROM parts

ORDER BY suppno

В первом примере показано, как условие объединения двух таблиц могут быть указаны в WHERE-предложение. Этот метод возвращает только те данные, для которых соответствующая строка существует в обеих таблицах. Другой метод соединения – метод внешнего соединения в нем могут быть использованы для включения строки из одного из соединяемых таблиц, у которых нет соответствующих строк в другой таблице. В следующем примере возвращается поставщику количество поставщиков, удовлетворяющих условию:

SELECT s.suppno, p.partno

FROM suppliers s LEFT OUTER JOIN parts p

ON s.partno = p.partno

AND s.location = ‘Denver’

Таким образом, средства предоставляемые запросами в языке SQL универсальны и крайне разнообразны, и полностью удовлетворяют требованиям пользователя для использования, как в прикладных программах так и при использовании программных интерфейсов.

2.3 Средства манипулирования данными, предоставляемые языком структурированных запросов

Средства манипулирования данными языка структурированных запросов состоят из запросов INSERT, DELETE и UPDATE, которые используются для вставки строк в таблицу, удаление строк из таблицы, а также обновление значений строк в таблице. Значения, которые будут использоваться в запросах обработки данных могут быть определены, как константы или вычисляется в качестве подзапросов, о чем свидетельствуют следующие примеры. Этот пример обновляет таблицу запасных частей, что увеличивает стоимость всех деталей, поставляемых определенным поставщиком на 10%:

UPDATE parts

SET cost = cost * 1.1

WHERE suppno = ‘105’

В следующем примере удаляется из таблицы поставщиков всех поставщиков, которые не удовлетворяют условию. Этот пример иллюстрирует подзапрос, который связан с внешней инструкции DELETE с помощью ключевых слов, NOT EXISTS. В этом примере подзапрос зависит от значения в строке поставляется внешней инструкции UPDATE, поэтому подзапрос должен быть выполнен несколько раз для каждой строки в таблице обновляется. Такой подзапрос называется коррелированным подзапросом.

DELETE FROM suppliers s

WHERE NOT EXISTS

(SELECT partno

FROM parts

WHERE suppno = s.suppno)

2.4. Выводы по анализу структуры языка SQL

Анализ структуры языка SQL позволяет сделать следующие выводы.

В самых ранних версиях SQL не хватает поддержки для некоторых важных аспектов реляционной модели данных Кодда, таких как первичные ключи и ссылочной целостности. Эти концепции были добавлены в язык SQL-89, наряду с другими целостности связанных функций, таких как уникальные ограничения и проверки ограничений.

В ранних версиях SQL были некоторые специальные правила о том, как различные особенности языка могут быть объединены, и не хватало средств обеспечения безопасности данных, потому что столбцы результатов запроса не всегда имеют имена. Эти проблемы были исправлены значительной степени в SQL-92.

Одним из спорных и сложных моментов использования таблиц реляционной базы данных, это использование так называемого Null значения. Этот вопрос изучался Коддом, он указывал в своих работах, что СУБД должна поддерживать нулевое значение, которая является систематической и отличается от всех регулярных значений [11]. Некоторые авторы считают, что сложность введены нулевых значения перевешивает их пользу. SQL поддерживает нулевое значение и позволяет проектировщикам базы данных, указать те столбцы, где нули не допускаются. Одним из преимуществ такого подхода является то, что нулевые значения оказались полезными при разработке различных возможностей языка, таких как внешние соединения, CUBE и ROLLUP, которые были добавлены в ходе эволюции SQL.

В отличие от определения Кодда реляционной модели данных, в SQL разрешено дублировать строки, либо в таблице базы данных или в результате запроса. SQL также позволяет пользователям выборочно запретить повторяющиеся строки в таблице или в результате запроса. Цель такого подхода состоит в том, чтобы дать пользователям контроль над потенциально дорогостоящим процессом устранения дублирования. В некоторых случаях, повторяющиеся строки могут иметь смысл (например, в точках продаж системы, клиент может купить несколько одинаковых предметов в одну транзакцию). Как и в случае с нулями, подход SQL в том, чтобы предоставить пользователям инструменты, чтобы разрешить или запретить повторяющиеся строки в соответствии с потребностями конкретного приложения.

На сегодняшний день SQL предназначен для использования в различных прикладных средах. Большинство реализаций поддерживают SQL интерактивный интерфейс, позволяющий пользователям создавать и выполнять специальные SQL запросы. Во многих случаях графический интерфейс пользователя позволяет отображать меню доступных таблиц и столбцов и помочь пользователю построить отчеты. Такие системы обычно поддерживают меню-интерфейсов для выполнения функций, таких как создание и удаление таблиц и представлений.

Более сложные приложения обычно включают использование как SQL, так и универсального языка программирования. Это требует соответствия между типом SQL и универсальным языком программирования, а также определенный интерфейс для обмена данными между двумя средами. Интерфейсы были определены между SQL и C, Java и многими другими языками. Эти интерфейсы можно разделить на две основные категории:

Embedded SQL: При таком подходе, SQL запросы встроены синтаксически в основной программе, и обрабатываются препроцессор, который извлекает SQL заявления и преобразует их в оптимизированный план выполнения, который вызывается, когда выполняется родительская программа.

Вызова интерфейса: При таком подходе, главная программа использует вызовы функций, чтобы установить соединение с базой данных и передать SQL запрос в базу данных системы. Преобразование SQL запроса в оптимизированный план выполнения происходит во время выполнения. Наиболее широко используемый интерфейс этого типа ODBC (Open Database Connectivity) [12] и JDBC (Java Database Connectivity) [13]. С ODBC и JDBC драйверы существуют для многих популярных реляционных систем баз данных, эти интерфейсы широко используются в приложениях, которые должны получать доступ к удаленным базам данных и должны быть совместимы с системами баз данных от различных производителей.

Современные веб-приложений баз данных часто используют трехуровневую архитектуру. Клиентский уровень обрабатывает взаимодействия с пользователем и связывается с удаленным сервером через протоколы, такие как HTTP. Логика приложения, которое находится на сервере, называется логикой среднего уровня. Прикладная программа, в свою очередь, обращается к SQL базе данных с помощью ODBC или JDBC. База данных может быть реализована на среднем уровне или на отдельной машине.

ГЛАВА 3. СРЕДСТВА АДМИНИСТРИРОВАНИЯ ДАННЫХ И ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ SQL

3.1. Администрирование данных при помощи средств языка структурированных запросов

Кроме средств формирования запросов и обработки данных, SQL предоставляет средства для выполнения задач администрирования баз данных. Эти задачи можно разделить на три основные категории: определение данных, контроль доступа, и активные особенности данных.

Определения данных объектов в SQL включает запрос для создания или удаления таблиц и представлений, а также для добавления или удаления столбцов существующей таблицы. Определение осуществляется в форме запросов SQL о том, каким образом представление может быть получено из хранящихся таблиц и / или других просмотров.

SQL средства управления доступом на основе концепций пользователей, привилегии и роли. Привилегией является возможность действие (например, выбирать, вставлять, удалять, или обновлять) на объект (например, атрибут или, в некоторых случаях, столбец таблицы).

Роль представляет собой набор привилегий, которые могут быть предоставлены множествам пользователей [7, c.27]. В общем случае, пользователь, который создает объект, может предоставить привилегии на этот объекте для отдельных пользователей и ролей, а также может отменить эти привилегии [4, c.280].

SQL активных объектов данных включают в себя ограничения и триггеры. Ограничения служат для обеспечения целостности данных. Для здания ограничений необходимо ограничить вид обновлений, которые могут быть применены к таблице. Важные виды ограничений включают в себя следующее:

- NOT NULL ограничения, которые запрещают нулевых значений в определенном столбце.

- Проверочные ограничения, которые определяют предикат, который не должен быть ложным для любой строки таблицы.

- Первичный ключ ограничений, которые требует, чтобы значения в определенном наборе столбцов называемый первичный ключ, могло однозначно идентифицировать строку таблицы.

- Ограничения внешнего ключа, которые требуют, чтобы для каждой строки таблицы ограничений, определенного набора столбцов, которая называется внешний ключ, содержит только комбинации значений, которые также входят в первичный ключ связанной таблицы, называемой родительской таблицы. При определении внешнего ключа можно указать, что необходимо делать, когда заявление манипулирования данными пытается нарушить ограничения (например, нарушение запросом может не иметь никакого эффекта, или удаление строки из родительской таблицы может вызвать автоматическое удаление связанных строк). Исполнение ограничения внешнего ключа, позволяет защитить целостность хранимых данных.

Действие Триггера, которое автоматически вызывается всякий раз, когда происходит определенное событие, называемое инициирующим событием [22, c.54]. Определитель триггера определяет следующие свойства:

- Свойства инициирующего события, которые могут вставлять, удалять или обновлять строки (или, в некоторых случаях, столбцы) конкретной таблицы.

- Определяется вызывается ли триггер до или после инициирующего события.

- Если инициирующее событие влияет на несколько строк, то ли триггер вызывается один раз для каждой строки или пострадавших только один раз за весь инициирующего события.

- Необязательное условие запуска: предикат, который должен быть истинным во время инициирующего события для того, чтобы триггер активируется.

- Тело триггера: один или несколько SQL запросов, которые будут автоматически выполняться, когда имеет место срабатывание события и триггер условие истинно. Состояние триггера и тело триггера имеют доступ к специальным переменным, которые содержат значения данных до и после запуска события.

Ограничения и триггеры полезны для определения и применения семантик хранимых данных.

3.2. Дополнительные возможности языка SQL

На протяжении многих лет в язык SQL добавлялась все большая и большая функциональность. Полный набор функций SQL является слишком большим и сложным, чтобы быть описанным в рамках курсовой работы. Рассмотрим основные области SQL, в которую была добавлена расширенная функциональность:

Рекурсия. Рекурсивный запрос который состоит из начального подзапроса и вычисляет некоторые предварительные результаты и рекурсивного подзапроса, который вычисляет дополнительные результаты, основанные на данных, которые ранее были вычислены. Рекурсивный подзапрос выполняется несколько раз, пока не будут вычислены все необходимые результаты.

Рекурсия полезна в запросах, когда необходимо найти оптимизационное решение, например, « Найдите самые дешевые сочетание полетных сегментов поездки из Шанхая в Копенгагене'' Рекурсивные запросы были впервые определены в SQL 1999 года.

OLAP: ONLine аналитическая обработка (OLAP) используется предприятиями для анализа больших объемов данных для выявления фактов и тенденций, которые могут повлиять на бизнес-решения. Использование предложения содержащего GROUP BY или вычисление агрегированных функций (сумма, среднее и т.д.) при условии ранних стандартов SQL, является примитивной формой функции OLAP, которая была значительно расширена в более поздних версиях языка.

Например, ROLLUP объекта позволяет применять запрос объединения функций на различных уровнях (например, города, округа, и государства). CUBE установка позволяет разбивать данные по нескольким характеристикам (таким как дата, место и категории) в рамках одного запроса.

Эти средства и другие, были введены в SQL 1999 и улучшены в последующих версиях стандарта.

Функции и процедуры. Первоначально SQL поддерживал фиксированный набор функций, количество которых медленно увеличивалось в течение многих лет. В SQL 1999 введена возможность для пользователей, для определения дополнительных функций и процедур, которые могут быть вызваны из SQL запроса. (В связи с этим, процедура это просто функция, которая вызывается при вызове запроса, который не должен возвращать значение.). Объекты, определяемые пользователем функций и процедур, могут быть записаны либо в SQL, либо при помощи универсального языка программирования, такого как C или Java.

Объектно-реляционные возможности. Ранние версии SQL могли обрабатывать данные, соответствующие фиксированным наборам простых типов данных, таких как целые числа и строки.

За годы развития SQL, были введены несколько дополнительных типов данных, например, даты и др. В конце 1990-х годов, возникли требования использования расширяемой системы типов. В SQL1999 появились средства для пользовательских структурированных типов и методов.

Эти средства поддерживают ограниченные формы объектно-ориентированных функций, включая наследование и полиморфизм.

Multi-media. В 2000 году SQL стандарт был дополнен отдельным, но тесно связанных стандартом, который получил название ''SQL Мультимедиа и пакет прикладных программ'' (ISO / IEC 13249:2000), который часто упоминается как SQL / MM. В этом новом стандарте используется объектно-реляционная возможностей, представляемая стандартом SQL 1999, чтобы определить специализированные типы данных и методы для текста, изображений и пространственных данных.

XML-функции. Функции XML становятся все более популярным форматом для обмена данными, потому что она смешивает метаданные (тэги) с данными. Популярность XML привела к требованиям для обеспечения хранения XML-данных в реляционных базах данных и преобразования данных между реляционными и XML-форматами. Эти требования были рассмотрены на объекте под названием SQL / XML, который был представлен как часть 14 SQL: 2003 и был обновлен в 2006 году. SQL / XML, включает в себя новый тип данных XML, набор функций для преобразования результатов запроса в XML-формате, и функции, которую может вызвать SQL XQuery как подъязык для обработки XML-данных.

3.3 Дальнейшие направления развития языка SQL

На сегодняшний день важность использования языка структурированных запросов обуславливается следующим:

- Вторая по величине в мире софтверная компания, Oracle, была построена на успехе SQL на основе управления реляционными данными, с помощью своих флагманских серверов баз данных и инструментов, и его SQL-приложений предприятия.

- IBM, крупнейшая компьютерная компания в мире, предлагает свой SQL на основе программного обеспечения DB2 для всех своих продуктовых линеек и приобрел другие SQL-базы данных и приложения.

- Microsoft, крупнейшая софтверная компания в мире, сделал ставку на базы данных SQL Server в качестве ключевого инструмента, а также в качестве основы для управления данными для всех своих сервисов и приложений [6, c.7; 3, с.5].

- Sun Microsystems, Fortune 500 компания технологии, увидев огромное значение SQL приобрело компанию MySQL AG, таким образом, приобретение MySQL [1, c.45], которое является крупнейшим открытым исходным кодом в мире на основе SQL СУБД [4].

- XML, которое являлось потенциальным претендентом на занятие места SQL и реляционной модели, вместо этого были поглощены в структурах SQL-управления, основанного на данных.

Все основные корпоративные компактные приложения, от финансов до цепочки поставок для автоматизации продаж и управления взаимоотношениями с клиентами, построенных на основе SQL-баз данных.

SQL является стандартом для специализированных баз данных на мобильных устройствах и ноутбуках, так и для встроенных приложений в сетях телекоммуникации и производство систем [3, c.821; 2, с.44].

SQL-доступ к базам данных является обязательной частью Интернет-серверов приложений и баз данных SQL, которые лежат в основе всех крупных сайтов электронной коммерции.

Проанализируем некоторые из наиболее важных текущих тенденций и изменений на рынке баз данных и управления базами данных в течение ближайших нескольких лет.

  1. Тенденция к корпоративным стандартам баз данных позволит укрепить и усилить рыночные позиции занятые основными поставщиками СУБД. При этом рынок динамично развивается основные игроки имеют тенденцию концентрироваться на развитии своего бизнеса в рамках своей существующей установленной базы, вместо того чтобы попытаться взять клиентов от конкурентов.
  2. Поскольку все больше и больше приложений, использует на общекорпоративной основе или за его пределами, свойства единой централизованной базы данных для поддержки десятков основных приложений и тысячи одновременно работающих пользователей будет продолжать уменьшаться. Вместо этого, крупных корпоративные баз данных станет больше и больше распространяется, со специальной базы данных для поддержки основных приложений и функциональных областей корпорации. Для достижения высшего уровня обслуживания требуются общекорпоративные или интернет-приложения, данные должны быть распределены, но для обеспечения целостности бизнес-решений и операций, работа этих распределенных баз данных должна быть тесно скоординирована.
  3. Другой нагрузкой на централизованные архитектуры базы данных будет продолжающийся рост мобильных персональных компьютеров и других мобильных устройств прибора информации. Эти устройства которые по своей природе, могут быть более полезными, если они могут стать неотъемлемой частью распределенной сети. Базы данных в центре мобильных приложений должны иметь возможность работать в этой иногда связано окружающей среды.
  4. Следующей тенденцией можно назвать увеличение объемов баз данных и появление специализированных инструментов для работы с хранилищами данных.
  5. И еще одной тенденцией вызывающей дальнейшее развитие SQL является дальнейшая интеграция с интернет системами и интернет данными, что вызовет дальнейшую корректировку форматов, в частности работы c xml.
  6. Обеспечение масштабируемости базы данных для облачных вычислений

ЗАКЛЮЧЕНИЕ

SQL продолжает играть важную роль в компьютерной индустрии, и, продолжит свое эволюционное развитие в качестве важной базовой технологии:

- SQL на основе базы данных главного программного продукта для трех крупнейших поставщиков программного обеспечения в мире Microsoft, Oracle и IBM.

- на основе SQL-базы данных действуют на все классы компьютерных систем, от мейнфреймов и серверов баз данных для настольных компьютеров клиентов, ноутбуков и портативных карманных компьютеров.

Все основные корпоративные приложения, используемые в крупных организациях используют корпоративные базы данных на основе SQL для хранения и структурирования данных.

SQL-базы данных на основе успешно и адекватно ответили на вызовы объектной модели SQL с расширениями объект / реляционная база данных.

SQL-базы данных адекватно реагируют на потребности интернет-архитектуры, включив XML и интеграции тесно с серверами приложений.

Сегодня язык структурированных запросов является инструментом для организации, управления и получения данных, хранящихся на компьютере данных. Можно рассматривать язык структурированных запросов в качестве языка программирования, который используется для взаимодействия с базой данных. На самом деле SQL работает с одним определенным типом базы данных, который называется реляционной базой данных, которая стала основной способ организации данных по очень широкому спектру компьютерных приложений.

Любая компьютерная система использующая язык структурированных запросов, управляет базой данных, называется системой управления базами данных (СУБД). Если вам нужно получить данные из базы данных, можно использовать SQL для выполнения запроса. СУБД обрабатывает SQL запрос, получает запрошенные данные и возвращает его к вам. Этот процесс запроса данных из базы данных и получения результатов называется запрос к базе данных, отсюда и название языка структурированных запросов, которое по сути . "Structured Query Language" является неправильным.

В первую очередь, SQL гораздо больше, чем инструмент запроса, хотя это была его первоначальная цель, и получения данных до сих пор одним из самых важных функций. SQL используется для управления всеми функциями, которые СУБД предоставляет для своих пользователей, в том числе

    • определения данных SQL.
    • получение данных SQL.
    • обработки данных SQL.
    • контроль доступа SQL
    • обмен данными SQL
    • целостность данных SQL

SQL таким образом, всеобъемлющий язык для управления и взаимодействия с системой управления базами данных.

Обеспечение масштабируемости базы данных для облачных вычислений является одной из основных задач, стоящих перед баз данных рынке.

На протяжении многих лет, SQL стандарт расширялся и это при условии контролируемой границы, в которых язык может развиваться, чтобы исправить свои первоначальные ограничения и в соответствии с изменяющимися требованиями пользователей.

Все стандарты также служили для привлечения внимания в отрасли, а так же определяли ресурсы, необходимые для обеспечения границ функционирования, в которых отдельные лица и компании могут разрабатывать инструменты, писать книги, преподавать курсы, а также оказывать консультационные услуги. Применение стандартов было лишь частично успешным в создании портативных приложений SQL, эта цель была затруднена тем, что разные производители используют разные подмножества этого стандарта, и отсутствие (с 1996) тестового набора для проверки соответствия реализации. Последние версии различных частей стандарта могут быть получены из ISO или от национальных организаций по стандартизации, таких как ANSI.

Анализ структуры языка SQL позволяет сделать следующие выводы.

В самых ранних версиях SQL не хватает поддержки для некоторых важных аспектов реляционной модели данных Кодда, таких как первичные ключи и ссылочной целостности. В ранних версиях SQL были некоторые специальные правила о том, как различные особенности языка могут быть объединены, и не хватало средств обеспечения безопасности данных, потому что столбцы результатов запроса не всегда имеют имена. Эти проблемы были исправлены значительной степени в SQL-92.

На сегодняшний день SQL предназначен для использования в различных прикладных средах. Большинство реализаций поддерживают SQL интерактивный интерфейс, позволяющий пользователям создавать и выполнять специальные SQL запросы. Во многих случаях графический интерфейс пользователя позволяет отображать меню доступных таблиц и столбцов и помочь пользователю построить отчеты. Такие системы обычно поддерживают меню-интерфейсов для выполнения функций, таких как создание и удаление таблиц и представлений.

Более сложные приложения обычно включают использование как SQL, так и универсального языка программирования. Это требует соответствия между типом SQL и универсальным языком программирования, а также определенный интерфейс для обмена данными между двумя средами. Интерфейсы были определены между SQL и C, Java и многими другими языками.

СПИСОК ЛИТЕРАТУРЫ

  1. MySQL Библиотека профессионала / Л. Аткинсон. – М. : Вильямс, 2012. – 624 с.
  2. MySQL руководство администратора; М.: Вильямс, 2015. - 621 c.
  3. SQL Server 2015 шаг за шагом. Практическое руководство; М.: ЭКОМ, 2017. - 463 c.
  4. Weinberg P. Groff J. SQL The Complete Reference, The McGraw-Hill Companies 2015.- 911c.
  5. Абрамсон, И.. Oracle 10g: Первое знакомство/ И. Абрамсон, М. Кори, М. Эбби. - М.: Лори, 2017. - 348 с.
  6. Андон Ф. Язык запросов SQL / Ф. Андон, В. Резниченко. – СПб.: BHV, 2016. – 416 с.
  7. Аткинсон Л. MySQL Библиотека профессионала / Л. Аткинсон. – М. : Вильямс, 2013. – 624 с.
  8. Базы данных для небольших предприятий и Интернета; СПб: Символ-Плюс, 2015. - 560 c.
  9. Базы данных: Учебник для ВУЗов / Под ред.— СПб: Корона принт, 2014. - 416 с.
  10. Базы данных: Учебник для ВУЗов / Под ред.А.Д.Хомоненко — СПб: Корона принт, 2014. - 416 с.
  11. Виейра, Р. Программирование баз данных Microsoft SQL Server 2005 для профессионалов; Диалектика, 2016. - 301 c.
  12. Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие. — М.: Гелиос АРВ, 2012. — 368 с.
  13. Герасевич, Виталий Блоги и RSS: интернет-технологии нового поколения; СПб: BHV, 2016. - 256 c.
  14. Грабер, Мартин SQL. Справочное руководство; М.: Лори; Издание 2-е, 2015. - 354 c.
  15. Грибер, М. Введение в SQL / М.Грибер, М., Лори,2016. - 379 с.
  16. Дейт, К. Введение в системы баз данных: пер. с англ. /К.Дж. Дейт. 8-е издание. - М.: Вильяме , 2016. - 1326 с.
  17. Дунаев В. В. Базы данных. Язык SQL / В. В. Дунаев. – СПб. : BHV, 2016. – 288 с.
  18. Дэвидсон, Луис Проектирование баз данных на SQL Server 2000; Бином, 2003. - 660 c.
  19. Зрюмов Е. А. Базы данных для инженеров : учебное пособие / Е. А. Зрюмов, А. Г. Зрюмова; Алт. гос. техн. ун-т им. И. И. Ползунова. – Барнаул : Изд-во АлтГТУ, 2015. – 131 с.
  20. Кевин, Кл. SQL: справочник: пер. с англ. / Кл. Кевин. 2-е издание. -М: Кудиц-Образ, 2016. - 832 с.
  21. Колби, Дж. SQL для начинающих: пер. с англ. / Джон Колби, Пол Уилтон.. - М: Вильяме, 2016. - 496 с.
  22. Ларсон, Б. Microsoft SQL Server 2015 Reporting Services. Профессиональная работа с отчетами; НТ Пресс, 2016. - 608 c.
  23. Макдоналд, Коннор; Кац, Хаим; Кальман, Джоел и др. Oracle PL/SQL практические решения; СПб: ДиаСофт, 2015. - 560 c.
  24. Мартин Г. SQL. Бестселлер#1. Описание SQL92, SQL99 и SQLJ/ Г. Мартин. – М. : Лори, 2014. – 644 с.
  25. Моисеенко С. И. SQL. Задачи и решения / С. И. Моисеенко. – СПб.: Питер, 2016. – 256 с.
  26. Нанда, А. и др. Oracle PL/SQL для администраторов баз данных; Символ, 2016. - 496 c.
  27. Полякова Л. Основы SQL. Курс лекций: учебное пособие / Л.Н. Полякова - М.: ИНТУИТ.РУ, 2014. - 368 с.
  28. Ржеуцкая С.Ю. Базы данных. Язык SQL: учеб. пособие / СЮ. Ржеуцкая. - Вологда: ВоГТУ, 2015. - 159 с.
  29. Фиайли К. SQL: Пер. с англ. – М.: ДМК Пресс, 2013. – 456 с.