1.2.2. Лингвистические средства

 

Многоуровневое представление БД предполагает соответст­вующие описания данных на каждом уровне и согласование одних и тех же данных на разных уровнях. С этой целью в со­став СУБД включаются специальные языки для описания представлений внутреннего и внешнего уровней. Кроме того, СУБД должна включать в себя язык манипулирования данными (ЯМД). Желательно, также наличие тех или иных дополнительных сервисных средств, например, средств генерации отчетов.

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

Для выражения обобщенного взгляда на данные применяют язык описания данных (ЯОД) внутрен­него уровня, включаемый в состав СУБД[1]. Описание пред­ставляет собой модель данных и их отношений, т. е. структур, из которых образуется БД.

ЯОД позволяет определять схемы базы данных, характеристики хранимых и виртуальных данных и параметры ор­ганизации их хранения в памяти, и может включать в себя сред­ства поддержки целостности базы данных, ограничения доступа, секретности.

ЯМД обычно включает в себя средства запросов к базе данных и поддержания базы данных (добавление, удаление, обнов­ление данных, создание и уничтожение БД, изменение опреде­лений БД, обеспечение запросов к справочнику БД).

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

В ряде предметных областей структура данных имеет бо­лее сложный вид, в котором поддерживаются связи типа «многие к одному», и которые могут быть представлены ориентиро­ванным графом. Такие структуры называют сетевыми. Для управления БД сетевой структуры международной ассоциа­цией Кодасил была предложена обобщенная архитектура си­стемы с ЯОД схемы (модели БД) и подсхемы (модели части БД для конкретного приложения), а также ЯМД для оперирования с данными БД в прикладных программах.

В настоящее время разработаны десятки языков, основанных на реляционном исчислении, различие которых обусловлено особенностями математических тео­рий, положенных в основу их построения. Среди этих языков, можно выделить языки, базирующиеся на С-исчислении, предложенном Коддом, и Р-исчислении, предложенном Пиротти.

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

Функциональные характеристики языков отражают возмож­ности описания данных, средств представления запроса, обновления, поддержки целостности и секретности, включения в языки программирова­ния, управления форматом ответов, средств запроса к словарю данных БД и т.д.

Качественные характеристики языков запросов могут определяться такими свойствами, как пол­нота, селективная мощность, простота изучения и использования, степень процедурности и модульности, унифицированность, производительность и эффективность. Рассмотрим некоторые из этих понятий.

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

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

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

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

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

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

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

 

 

К оглавлению

Назад к разделу "1.2.1. Информационная база"

Вперед к разделу "1.2.3. Программные средства"



[1] Отсюда следует, что одна и та же БД может описываться по-разному на ЯОД различных СУБД.