Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Умк_Базы.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

5.1. Язык манипулирования данными для реляционной модели

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

По данной теме выполняется лабораторная работа № 2,3 а также раздел “Разработка схемы модели” курсового проекта. Рекомендации по выполнению этих заданий приведены в методических указаниях [7] и 3.3.

Для проверки изучения материала темы Вам предстоит также ответить на вопросы для самопроверки.

Если Вы испытываете затруднения в ответе на какой-либо вопрос, обратитесь к главе 4 учебника [1] или к материалам учебного пособия [7].

5.1.1. Назначение и история языка sql

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

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

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

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

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

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

Его появление и развитие как средства описания доступа к базе данных связано с созданием теории реляционных баз данных. Прообраз языка возник в 1970 году в лаборатории Санта-Тереза фирмы IBM в рамках научно-исследовательского проекта System/R. Первоначально он назывался SEQUEL(Structured English Query Language), потом SEQUEL/2, а затем просто – SQL. Сегодня - это фактический стандарт интерфейса с современными СУБД. Популярность его настолько велика, что разработчики нереляционных СУБД (например, ADABAS), снабжают свои системы SQL-интерфейсом.

Язык SQL имеет официальный стандарт - ANSI/ISO. Большинство разработчиков придерживаются этого стандарта, однако часто расширяют его для реализации новых возможностей обработки данных.

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

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

Неполнота стандарта SQL-89 привела к появлению в 1992 г. следующей версии языка SQL. SQL-92 охватывает практически все необходимые проблемы: манипулирование схемой базы данных, управление транзакциями и сессиями, динамический SQL. Появление новых требований пользователей к СУБД и обрабатываемым данным привели к тому, что в настоящее время используется SQL3. Эта версия языка имеет в своем составе механизм хранимых процедур и триггеров, определение произвольного типа данных, некоторые объектные расширения.

Повторяем, что SQL- это язык запросов, поэтому на нем невозможно написать достаточно сложные прикладные программы, которые работают с базой данных. Для этой цели в современных СУБД используют язык четвертого поколения (4FGL - Forth Generation Language), обладающий как основными возможностями процедурных языков третьего поколения (Си, Паскаль), так и возможностью встроить в текст программы операторы SQL, так и средствами управления интерфейсом пользователя (создание форм и отчетов, меню, вводом пользователя и т.д.).