Классика баз данных - статьи

       

Язык модели данных (ЯМД)


В сообществе разработчиков баз данных проблема создания формального языка, который позволял бы формировать данные и запросы с использованием естественного языка, рассматривается уже давно [2,3]. Предлагаемый язык модели данных (ЯМД) для БД с УМД решает эту проблему.

ЯМД – это внутренний непроцедурный язык описания и манипулирования данными, хранящимися в БД с УМД. Он состоит из двух частей: языка описания (определения) данных и языка управления (манипулирования) данными, хранящимися в БД с УМД.

ЯМД, как любой другой формализованный язык, имеет свой синтаксис и семантику (см. таблица 1).

Основным элементом языка является строка метаописания.

Структура строки метаописания:

{…} {…} … {…},

где информация, заключенная в фигурные скобки {…}

называется элементом строки метаописания.

Строка метаописания включает произвольное число элементов, которые определяют конкретные значения понятий УМД.

Набор понятий, относящихся к разделу, объекту, событию формируется между разделителями косая черта (/).

Последовательность разделителей косая черта (/) между операторами языка <Раздел>,

<КлассО>, <КлассПО>, <ЭкзО> определяет иерархию разделов, классов объектов, классов параметров объектов, экземпляров объектов соответственно.

Элемент предметной области описывается внутри зоны, ограниченной парой косых черт (/…/). Чередование синтаксических выражений языка внутри этой зоны – произвольное.



Знак равно (=) является оператором присвоения, который для указанного понятия определяет его значение, в конце которого ставится обязательный символ точка с запятой (;).

Фактически строки метаописания ЯМД это формализованные предложения естественного языка, которые описывают деятельность предприятия, его основные классификаторы и справочники, а также другие структурированные и неструктурированные документы и прочее.

ЯМД позволяет формализовать описание ПрО и сформировать модель предприятия (его метаданные и данные).

Примеры строки метаописания:

{<Раздел> = Конференция;/


<КлассО> = Компания;<ТипО> = ООО;<ТипО> = ЗАО;<ТипО> = ОАО; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес; <ТипХО>[](строковая,любая,фактическая) = Телефон;/

<КлассО> = Специалист;<ТипО> = -; <ТипХО>[](строковая,любая,фактическая) = Гражданство; <ТипХО>[](строковая,любая,фактическая) = Телефон; <ТипХО>[](строковая,любая,фактическая) = Эл.адрес;/

<КлассО> = Материалы;<ТипО> = -;},

где <ТипХО> [ ] ( , , ) - тип характеристики экземпляра объекта ( <ТипХО> [единица измерения - только для объекта с численной характеристикой] (тип данных: логическая; строковая; численная; дата, признак нахождения данных в справочнике: справочная; любая, тип характеристики: паспортная; фактическая) ).

Данная строка метаописания определяет раздел «Конференция», классы объектов «Компания», «Специалист», «Материалы», их типы «ООО», «ЗАО», «ОАО», «-», иерархии подчиненности классов объектов (класс объектов «Материалы» подчинен классу объектов «Специалист», который в свою очередь подчинен классу объектов самого высшего уровня (без владельцев) - «Компания»), а также типы характеристик объектов «Юридический адрес», «Телефон», «Гражданство», «Эл.адрес» с соответствующими им атрибутами («строковая», «любая», «фактическая»). Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти метаданные в базу.

{<Раздел> = Конференция; /

<КлассО> = Компания; <ТипО> = ООО ; <ЭкзО> = Dbcreator; <ТипХО>[](строковая,любая,фактическая) = Юридический адрес; <ЗначХО> = г.Харьков,пр.Правды,д.3к.7; <ТипХО>[](строковая,любая,фактическая) = Телефон;<ЗначХО> = (057)3331234;}

Данная строка метаописания определяет экземпляр объекта «Dbcreator» типа «ООО» и класса объектов «Компания», который (экземпляр) входит в состав раздела «Конференция». А также значения типов характеристик объекта «Юридический адрес» и «Телефон».


Исполнение данной строки с помощью приложения, имеющего доступ к БД с УМД, позволит записать все эти данные в базу.

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

Для получения списков классов объектов, событий, их экземпляров, типов, характеристик, значений и т.д. в синтаксисе языка предусмотрены некоторые специальные выражения, так называемые маски: «*.*»,«*.**», «*.*?», в операторе присваивания.

Операторы ЯМД используются также:

при реализации механизма распределения прав доступа к данным (вплоть до любого конкретного элемента данных);

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

Документальная и программная поддержка ЯМД включает:

  • описание синтаксиса языка;


  • интерпретатор языка для СУБД Oracle (реализован на языке PL/SQL);


  • описание интерфейса доступа к стандартным процедурам интерпретатора языка;


  • средства формирования строк метаописания элементов данных;


  • методику составления строк метаописания для записи новых данных или проведения конвертации данных из БД других информационных систем, построенных на различных платформах (таких как Oracle, PostgreSQL, Access, Lotus Notes), в БД с УМД;


  • программу конвертации данных.



  • Содержание раздела