Базы данных. Лекции БД. Лекция 5 Основные понятия информационных систем 5 История развития компьютеризации информационных процессов и систем. 5
Скачать 1.07 Mb.
|
7.Языки управления данными.Внутренний язык СУБД для работы с данными состоит из двух частей: языка определения данных (Data Definition Language — DDL) и языка манипулирования данными (Data Manipulation Language — DML). Язык DDL используется для определена схемы базы данных, а язык DML — для чтения и обновления данных, хранимых в базе. Эти языки называются подъязыками данных, поскольку в них отсутствуют конструкции для выполнения всех вычислительных операций, обычно используемых в языках программирования высокого уровня, таких как условные операторы или операторы цикла. Во многих СУБД предусмотрена возможность внедрения операторов подъязыка данных в программы, написанные на таких языках программирования высокого уровня, как СОВОL, Fortran, Pascal, Ada, С, С++, Java или Visual Basic. В этом случае язык высокого уровня принято называть базовым языком (host language). Перед компиляцией файла программы на базовом языке, содержащей внедренные оператор подъязыка данных, такие операторы удаляются и заменяются вызовами функций. 3атем этот предварительно обработанный файл обычным образом компилируется с помещением результатов в объектный модуль, который компонуется с библиотекой, о держащей вызываемые в программе функции СУБД. После этого полученный программный текст готов к выполнению. Помимо механизма внедрения, для большинства подъязыков данных предоставляются также средства интерактивного выполнения операторов, вводимых пользователем непосредственно с терминала. 7.1.Язык определения данных — DDLЯзык DDL. Описательный язык, который позволяет администратору БД или пользователю описать и именовать сущности и атрибуты, необходимые для работы некоторого приложения, а также связи, имеющиеся между различными сущностями, кроме того, указать ограничения целостности и защиты. Схема базы данных состоит из набора определений, выраженных на спец альном языке определения данных — DDL. Язык DDL используется как для определения новой схемы, так и для модификации уже существующей. Этот язык нельзя использовать для управления данными. Результатом компиляции DDL-операторов является набор таблиц, хранимый в особых файлах, называемых системным каталогом. В системном каталоге интегрированы метаданные — т.е. данные, которые описывают объекты базы данных, а также позволяют упростить способ доступа к ним и управления ими. Метаданные включают определения записей, элементов данных, а также другие объекты, представляющие интерес для пользователей или необходимые для работы СУБД. Перед доступом к реальным данным СУБД обычно обращается к системному каталогу. Для обозначения системного каталога также используются термины словарь данных и каталог данных, хотя первый из них (словарь данных) обычно относится к программному обеспечению более общего типа, чем просто каталог СУБД. Теоретически для каждой схемы в трехуровневой архитектуре можно было бы выделить несколько различных языков DDL, а именно язык DDL внешних схем, язык DDL концептуальной схемы и язык DDL внутренней схемы. Однако на практике существует один общий язык DDL, который позволяет задавать спецификации, как минимум, для внешней и концептуальной схем. 7.2.Язык управления данными — DML.DML. Язык, содержащий набор операторов для поддержки основных операций манипулирования содержащимися в базе данными. К операциям управления данными относятся: • вставка в базу данных новых сведений; • модификация сведений, хранимых в базе данных; • извлечение сведений, содержащихся в базе данных; • удаление сведений из базы данных. Таким образом, одна из основных функций СУБД заключается в поддержке языка манипулирования данными, с помощью которого пользователь может создавать выражения для выполнения перечисленных выше операций с данными. Понятие манипулирования данными применимо как к внешнему и концептуальному уровням, так и к внутреннему уровню. Однако на внутреннем уровне для этого необходимо определить очень сложные процедуры низкого уровня, позволяющие выполнять доступ к данным весьма эффективно. На более высоких уровнях, наоборот, акцент переносится в сторону большей простоты использования, и основные усилия направляются на обеспечение эффективного взаимодействия пользователя с системой. Часть непроцедурного языка DML, которая отвечает за извлечение данных, называется языком запросов. Язык запросов можно определить как высокоуровневый узкоспециализированный язык, предназначенный для удовлетворения различных требований по выборке информации из базы данных. В этом смысле термин "запрос" зарезервирован для обозначения оператора извлечения данных, выраженного с помощью языка запросов. Термины "язык запросов" и "язык управления данными" часто используются как синонимы, хотя с технической точки зрения, это некорректно. Языки DML имеют разные базовые конструкции извлечения данных. Существуют два типа языков DML: процедурный и непроцедурный. Основное различие между ними заключается в том, что процедурные языки указывают то, как можно получить результат оператора языка DML, тогда как непроцедурные языки описывают то, какой результат будет получен. Как правило, в процедурных языках записи рассматриваются по отдельности, тогда как непроцедурные языки оперируют с целыми наборами записей. 7.2.1.Процедурный язык DML.Язык, который позволяет сообщить системе о том, какие данные необходимы, и точно указать, как их можно извлечь. С помощью процедурного языка DML пользователь, а точнее — программист, указывает на то, какие данные ему необходимы и как их можно получить. Это значит, что пользователь должен определить все операции доступа к данным (осуществляемые посредством вызова соответствующих процедур), которые должны быть выполнены для получения требуемой информации. Обычно такой процедурный язык DML позволяет извлечь запись, обработать ее и, в зависимости от полученных результатов, извлечь другую запись, которая должна быть подвергнута аналогичной обработке, и т.д. Подобный процесс извлечения данных продолжается до тех пор, пока не будут извлечены все запрашиваемые данные. Обычно операторы процедурного языка DML встраиваются в программу на языке программирования высокого уровня, которая содержит конструкции для обеспечения циклической обработки и перехода к другим участкам кода. Языки DML сетевых и иерархических СУБД обычно являются процедурными . 7.2.2.Непроцедурные языки DMLНепроцедурный язык DML. Язык, который позволяет указать лишь то, какие данные требуются, но не то, как их следует извлекать. Непроцедурные языки DML позволяют определить весь набор требуемых данных с помощью одного оператора выборки или обновления. С помощью непроцедурных языков DML пользователь указывает, какие данные ему нужны, без определения способа их получения. СУБД транслирует выражение на языке DML процедуру (или набор процедур), которая обеспечивает манипулирование затребованным набором записей. Такой подход освобождает пользователя от необходимости знать подробности внутренней реализации структур данных и особенности алгоритмов, используемых для извлечения и возможного преобразования данных. В результате работа пользователя становится в определенной степени независимой от данных. Непроцедурные языки часто также называют декларативными языками. Реляционные СУБД в той или иной форме обычно включают поддержку непроцедурных языков манипулирования данными, разрабатываемыми на основе реляционного исчисление. Его непроцедурная природа является весьма перспективной и стимулирует поиск других, более простых в употреблении непроцедурных методов. Подобные исследования вызвали появление двух категорий реляционных языков: трансформационных и графических. Трансформационные языки являются классом непроцедурных языков, которые используют отношения для преобразования исходных данных к требуемому виду. Эти языки предоставляют простые в работе структуры для формулирования требований к результатам имеющимися средствами. Примерами трансформационных языков являются SQUARE , SEQUEL и его версии, а также SQL. Графические языки предоставляют пользователю схему или другое графическое отображение структуры отношения. Пользователь создает некий образец ожидаемого результата, и система возвращает затребованные данные в указанном формате. Примером подобного языка является язык (QBE ( Непроцедурные языки обычно проще понять и использовать, чем процедурные языки DML, поскольку иользователем выполняется меньшая часть работы, а СУБД — большая. 7.3.Языки 4GLАббревиатура 4GL представляет собой сокращенный английский вариант на писания термина язык четвертого поколения (Fourth Generation Language). Четкого определения этого понятия не существует, хотя, по сути, речь идет некотором стенографическом варианте языка программирования. Если для организации некоторой операции с данными на языке третьего поколения (3GL), потребуется написать сотни строк кода, то для реализации этой же операции на языке четвертого поколения достаточно 10-20 строк, в то время как языки третьего поколения являются процедурными, языки 4GL выступают как непроцедурные, поскольку пользователь определяет, что должно быть сделано, но не сообщает, как именно должен быть достигнут желаемый результат. Пользователю не требуется определять все этапы выполнения программы, необходимые для решения поставленной задачи, а достаточно лишь задать нужные параметры, на основании которых упомянутые выше инструменты автоматически осуществят генерацию приложения. Языки четвертого поколения позволят повысить производительность работы на порядок, но за счет ограничения типов задач, которые можно будет решать с их помощью. Выделяют следующие типы языков четвертого поколения: языки представления информации, например языки запросов или генера-оры отчетов; специализированные языки, например языки электронных таблиц и баз данных; генераторы приложений, которые при создании приложений обеспечивают определение, вставку, обновление или извлечение сведений из базы данных; языки очень высокого уровня, предназначенные для генерации кода приложений. В качестве примеров языков четвертого поколения можно указать упоминавшиеся выше языки SQL и QBE. Рассмотрим вкратце некоторые другие типы в четвертого поколения. 7.3.1.Генераторы формГенератор форм представляет собой интерактивный инструмент, предназначенный для быстрого создания шаблонов ввода и отображения данных в экранных формах. Генератор форм позволяет пользователю определить внешний вид экранной формы, ее содержимое и место расположения на экране. С его помощью можно задавать цвета элементов экрана, а также другие характеристики. Более совершенные генераторы форм позволяют создавать вычисляемые атрибуты с использованием арифметических операторов или агрегирующих функций, а также задавать правила проверки вводимых данных. 7.3.2.Генераторы отчетовГенератор отчетов является инструментом создания отчетов на основе хранимой в базе данных информации. Он подобен языку запросов в том смысле, что пользователю предоставляются средства создания запросов к базе данных и извлечения ее информации, используемой для представления в отчете. Однако генераторы отчетов, как правило, предусматривают гораздо большие возможности управления внешним видом отчета. Генератор отчета позволяет либо автоматически определить вид получаемых результатов, либо с помощью специальных команд создавать собственный вариант внешнего вида печатаемого документа. Существуют два основных типа генераторов отчетов: языковой и визуальный. В первом случае для определения нужных для отчета данных и внешнего вида документа следует ввести соответствующую команду на некотором подъязыке, Во втором случае для этих целей используется визуальный инструмент, подобный генератору форм. 7.3.3.Генераторы графического представления данныхЭтот генератор представляет собой инструмент, предназначенный для извлечения информации из базы данных и отображения ее в виде диаграмм с графическим представлением существующих тенденций и связей. Обычно с помощью подобного генератора создаются гистограммы, круговые, столбчатые, точечные диаграммы и т.д. 7.3.4.Генераторы приложенийГенератор приложений представляет собой инструмент для создания программ, взаимодействующих с базой данных. Применяя генератор приложений, можно сократить время, необходимое для проектирования полного объема требуемого прикладного программного обеспечения. Генераторы приложений обычно состоят из предварительно созданных модулей, содержащих фундаментальные функции, которые требуются для работы большинства программ. Эти модули, обычно создаваемые на языках высокого уровня, образуют "библиотеку" доступных функций. Пользователь указывает, какие задачи программа должна выполнить, а генератор приложений определяет, как их следует выполнить. В некоторых системах используются даже определенные разновидности естественного языка, т.е. ограниченной версии обычного английского языка, которую иногда называют языком пятого поколения (5GL). Однако разработки проектов подобных языков по большей части все еще находятся на ранней стадии развития. Резюме Реляционная алгебра — это процедурный язык высокого уровня, который может применяться в СУБД для построения нового отношения из одного или нескольких отношений, хранящихся в базе данных. Реляционное исчисление — непроцедурный язык, с помощью которого может быть сформулировано определение отношения, создаваемого на основе одного или нескольких отношений в базе данных. Но с формальной точки зрения реляционная алгебра и реляционное исчисление эквивалентны, т.е. для каждого выражения алгебры имеется эквивалентное выражение исчисления (и наоборот). Реляционное исчисление применяется для оценки избирательной мощности реляционных языков. Язык, позволяющий создать любое отношение, которое может быть выведено формальным путем с помощью реляционного исчисления, называется реляционно полным. Реляционно полными являются большинство реляционных языков запросов, но они имеют большую выразительную мощность, чем реляционная алгебра и реляционное исчисление, поскольку в них предусмотрены дополнительные операции, выполняемые, в частности, с помощью агрегирующих и упорядочивающих функций. Для выполнения основной части операций выборки данных, необходимых в процессе эксплуатации базы данных, могут применяться пять фундаментальных операций реляционной алгебры: выборка, проекция, декартово произведение, объединение и вычитание множеств. Кроме этих операций, предусмотрены операции соединения, пересечения и деления, которые могут быть выражены с помощью пяти основных операций. Реляционное исчисление — это формальный непроцедурный язык, в котором используются предикаты. Существуют две основные формы реляционного исчисления: реляционное исчисление кортежей и реляционное исчисление доменов. В реляционном исчислении кортежей решается задача поиска кортежей, для которых предикат приобретает истинное значение. Переменной кортежа на-; зывается переменная, которая принадлежит к области определения указанного отношения, иными словами, переменная, допустимыми значениями которой являются только кортежи отношений. В реляционном исчислении доменов переменные домена принимают свои: значения в области определения атрибутов, а не кортежей отношений. Реляционная алгебра логически эквивалентна безопасному подмножеству реляционного исчисления (и наоборот). Языки манипулирования реляционными данными подразделяются на процедурные и непроцедурные, трансформационные, графические, четвертого или пятого поколения. |