<<

Приложение А. Семантика языка спецификаций ПБД

Для описания конструкций синтаксиса ЯПБД будем использовать нотацию, аналогичную EBNF (Extended Backus-Naur Format - Расширенный формат Бэкуса- Наура). Символы этой нотации имеют следующий смысл:

: = - является по определению

| - или

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

"текст"- литерал

* - возможность повторения предшествующей синтаксической

конструкции нуль или более раз

+ - возможность повторения предшествующей синтаксической

конструкции один или более раз

{ } - заключенные в скобки синтаксические конструкции рассматриваются как единая конструкция

[ ] - заключенная в скобки синтаксическая конструкция является

необязательной.

Язык представления баз данных принадлежит к классу LL(1) [.] грамматик. Предложения, написанные на ЯПБД, имеют следующий вид:

^Предложение ЯПБД>:= [список необязательных выражений]

:= “ADO”| “BDE”| “CFG”| “PLUGINS”|

“TBL”| “DSPL”| “MENU”| “MAP”

и [список

необязательных выражений] зависят от стартового слова.

Описание подключения к базе данных.

В ЯПБД поддерживается описание соединения с БД в двух технологиях - BDE и ADO.

:= "BDE"

:= "ЛЬІЛ8""="

"иБЕВ""=" “PASSWORD"“="

:=*|*

:=*|*

:=*|*

:= A ∣B∣C∣...∣Z

:= 0|1| ... | 9

:= “ADO" []

:= “CONNECTIONSTRING"“="(вид строки соединения согласно MSDN[])

:= “LOGINPROMT"

“CONNECTIONTIMEOUT"“="* “COMMANDTIMEOUT"“="* “ServerCursors"

Присутствие параметра LOGINPROMT указывает на необходимость запроса имени пользователя и пароля при подключении к БД. CONNECTIONTIMEOUT и COMMANDTIMEOUT позволяют настроить время ожидания при подключении к БД и выполнении команд запросов. ServerCursors указывает на необходимость использования серверных курсоров.

Описание общих настроек системы.

:= “CFG"

:= “Qalways" “LUPKFMT"“=" “luNameFmt"“=" “QuoteFNFmt"“="“QuoteQFNFmt"“=" “QuoteTNFmt"“=" “UpdateMode"“="0|1|2 “SCHEMA"“=" “DATEFMT"“=" “LogSQL" “LogLU" “FIXED" “AUTOINCPK"

“APPNAME"“="

“ Apptitle"“=" “Guistyle""="

“TOPREFS" “AUTOINDEX" “ PreviewDefaults" ''DBCaseIns"

''SplitScreen"''="''V"| “Н"

:= * “%s"*

:= | “." | “[" | “]"

:=“."*

%s - маска строки форматирования передаваемая в функцию Format.

Назначение параметров:

Qalways - параметр означает, что при работе с БД необходимо всегда использовать запросы (TQuery);

LUPKFMT - строка форматирования для получения наименования поля первичного ключа справочника по имени таблицы справочника;

LuNameFmt - строка форматирования для получения наименования поля наименования справочника по имени таблицы справочника;

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

QuoteQFNFmt - строка форматирования, задающая кавычки для включения в запрос псевдонима для столбца результата;

QuoteTNFmt - строка форматирования, задающая кавычки для включения в запрос имени таблицы;

UpdateMode - параметр, позволяющий выбрать способ обновления записей (используется только при работе через BDE). Значения: 0-upWhereAll, 1- upWhereChanged, 2-upWhereKeyOnly (используется по умолчанию);

SCHEMA - наименование схемы, в которой находится таблица, например, “dbo” или “AnotherSQL.AnotherBase.dbo”. Используется для тех таблиц, у которых не задано при описании наименование таблицы в БД. Наименование таблицы в БД с использованием SCHEMA имеет вид:

SCHEMA “.";

DATEFMT - Формат даты для включения констант типа дата в запрос.

LogSQL - параметр, включающий режим записи в журнал текстов сгенерированных запросов (используется при отладке);

LogLU - параметр, включающий режим записи в журнал сообщений о создании справочников (используется при отладке);

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

При включении этого флага в приложении блокируются все функции администрирования;

AUTOINCPK - параметр означает, что все первичные ключи таблиц, состоящие из одного поля, являются автоинкрементными полями;

APPNAME - Наименование приложения (отображается в заголовке главного окна);

APPTITLE - Заголовок приложения (отображается на панели задач и при переключении по Alt+Tab). Если не указан, то принимает значения 'ГеоАРМ' или 'Редактор БД' (в зависимости от варианта приложения);

GUISTYLE - стиль пользовательского интерфейса. Может принимать значения: 0 - все формы открываются в отдельных окнах, дерево таблиц отсутствует, имеется только меню для выбора таблицы; 1 - все формы открываются в одном главном окне, в котором отображается дерево таблиц и текущая форма;

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

AUTOINDEX - данный параметр позволяет при работе через BDE с локальными таблицами (Paradox, DBF) автоматически создавать недостающие (для работы согласно имеющимся описаниям) индексы;

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

Включение режима PreviewDefaults позволяет заранее информировать пользователя о том, что поле получит значение, даже если он это поле не заполнит;

DBCaseIns - установка этого флага означает, что в базе данных не различаются строчные и прописные буквы, и поэтому, например, не требуется использовать функцию UPPER для сравнения строк без учёта регистра;

SplitScreen - параметр позволяет задать заранее взаимное расположение окна для работы с БД и Картой. Значение “H” соответствует команде «Разделить горизонтально», “V” - «Разделить вертикально».

Описание структур таблиц.

:= “TABLE"[“FOR"] [“AS"] []

“FIELDS"“(" “)" [“REFS"()]

:=* |* - задаётся для идентификации таблицы в системе. В большинстве случаев совпадает с именем реальной таблицы БД.

:= [] *| * - задаётся в случае, если отличается от имени реальной таблицы БД.

:=*|* - имя, которое

будет отображаться пользователю в заголовках форм при работе с этой таблицей.

:=“READONLY"“ORDER"“=" “NAMES"“=" “FILTER"“=" “MAPKIND"“="* “MAPFLD"“="

:= [“,"]*

:= {*|*}

:= “CHECK”“(”

“)”

:= “abort” | “warn”

Назначение свойств таблицы:

READONLY - параметр задающий режим работы с таблицей «только чтение»

FILTER - задаёт условие для отбора записей из таблицы. Условие должно соответствовать правилам формирования значения для свойства Filter у TDataSet, при этом все наименования полей необходимо заключить в квадратные скобки cτvτ,).

NAMES - задаёт набор полей, именующих запись. Например, для таблицы адресов домов именующими полями могут быть «Улица», «Тип улицы», «Номер дома». Именующие поля могут соответствовать естественному первичному ключу записи (в отличие от искусственного автоинкрементного первичного ключа). Значения этих полей отображаются для пользователя при поиске записей, таблица сортируется в лексикографическом порядке по значениям именующих полей (если другой порядок не задан при помощи ключа ORDER).

ORDER -Задаёт набор полей, по которому сортируется таблица.

MAPKIND - код таблицы в таблице связи с картой. Используется для привязки записей таблицы к объектам карты.

MAPFLD - поле таблицы, по которому осуществляется связь записей с объектами карты. Поле должно быть целочисленным. Если имеется ключ MAPKIND, но отсутствует ключ MAPFLD, то в качестве такого поля используется поле первичного ключа (если оно единственное и целочисленное).

:=“COORDS” “=” “:” - позволяет описывать способ автоматического создания объекта на цифровой топооснове по координатам.

:= “Point” | “Line” | “PolyLine” |

“Polygon” | “PolyPolygon”

:= “."

Описание полей таблиц.

:=(“="[“AS"] [] “,")*

:= “P"|“I"|“F"|“B"|“D"|“G"|“X"|“S"|“N"

“^"|

Значения видов полей:

“ P"- поле, входит в первичный ключ таблицы. Такие поля должны перечисляться первыми в данной секции. Если не указывается тип поля при помощи других ключей, то поле считается целочисленным;

“ I"- целочисленное поле;

“ F"- числовое поле;

“B"- логическое поле;

“D"- поле даты;

“G"- поле с графическим изображением;

“X"- BLOB-поле, содержащее произвольный файл;

“S"- строковое поле. При формировании условий запроса пользователь будет иметь возможность задать условия на значение строки или её подстрок;

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

“L"- списочное поле, т.е. строковое поле, которое может принимать ограниченное число значений (например, «да», «нет»). Необходимость

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

:= “л”[“(”“)”]

- позволяет описать простую ссылку на таблицу или представление. Если ссылка указывает на поля первичного ключа целевой таблицы , то можно не указывать [“(”“)”]. Если явно не указан иной тип поля, то ссылочное поле является целочисленным. Выражение данного вида кроме самого поля определяет связь с таблицей . При этом наименование создаваемой связи совпадает с наименованием поля.

:={*|*}

:= “READONLY”

:=“WIDTH”“=”+

Значение свойств полей:

READONLY - поле только для чтения.

WIDTH - задаёт видимую ширину поля в режиме табличного просмотра

Описание связей.

:= “=”{ {

".” } | {"А” [“(”“)”]“,” }*

:= {*|*}

Конструкция “=”“ .”позволяет описывать связи вида DR, т.е ссылку на таблицу «деталей» при наличии связи «Мастер-детали». При этом необходимо, чтобы в описании таблицы являющейся «деталями» была описана связь вида LR на таблицу «мастер».

Конструкция “=”“А”позволяет описывать дополнительные связи из поля в ключевые поля таблицы или в указанные поля. Указание таких связей бывает необходимо в случае нескольких связей из одного поля или связей по нескольким полям.

Описание представлений.

:= “VIEW"“FOR"

[“AS"]

[]

“FIELDS"“(“ “)". :={*|*}.

:={*|*} - базовая таблица должна быть описана в спецификации.

<< |
Источник: Фереферов Евгений Сергеевич. ТЕХНОЛОГИЯ АВТОМАТИЗАЦИИ СОЗДАНИЯ ПРИЛОЖЕНИЙ БАЗ ДАННЫХ С ГИС-ФУНКЦИОНАЛЬНОСТЬЮ НА ОСНОВЕ ИХ ДЕКЛАРАТИВНЫХ СПЕЦИФИКАЦИЙ. ДИССЕРТАЦИЯ на соискание ученой степени кандидата технических наук. Иркутск - 2014. 2014

Еще по теме Приложение А. Семантика языка спецификаций ПБД:

  1. ПРИЛОЖЕНИЕ 2. Систематизированный перечень лексем, фиксированных в «Словаре поэтического языка П.А. Вяземского» и наличествующих в авторитетных словарях церковнославянского языка (церковнославяно-русские полисеманты)
  2. Фереферов Евгений Сергеевич. ТЕХНОЛОГИЯ АВТОМАТИЗАЦИИ СОЗДАНИЯ ПРИЛОЖЕНИЙ БАЗ ДАННЫХ С ГИС-ФУНКЦИОНАЛЬНОСТЬЮ НА ОСНОВЕ ИХ ДЕКЛАРАТИВНЫХ СПЕЦИФИКАЦИЙ. ДИССЕРТАЦИЯ на соискание ученой степени кандидата технических наук. Иркутск - 2014, 2014
  3. ПРИЛОЖЕНИЕ 1. Систематизированный перечень лексем с пометой «арх.», фиксированных в «Словаре поэтического языка П.А. Вяземского»
  4. 1.5. Семантика славянизмов как основание интерпретации религиозных мотивов
  5. Понятие сакрально-религиозной (христианской) составляющей семантики славянизмов
  6. Фиксация в словарях церковнославянского языка как критерий выявления славянизмов
  7. О способах понятийно-терминологической фиксации места славянизмов с сакрально-религиозной семантикой в русской речевой практике
  8. Секулярные славянизмы, христианские религионимы, церковнославянизмы и церковнославяно-русские полисеманты: вопрос о семантико-дискурсивной специфике
  9. О методологических подходах к изучению языка поэзии П.А. Вяземского
  10. Церковнославяно-русская полисемия как отражение секулярной и сакрально-религиозной функций русского языка
  11. ТИУНОВА Ольга Вячеславовна. ВЕРБАЛЬНАЯ МАНИФЕСТАЦИЯ МЕНТАЛЬНОГО ОБРАЗОВАНИЯ ДОМ ПО ДАННЫМ СЛОВАРЕЙ И ОБРАЩЕНИЯ К НОСИТЕЛЯМ ЯЗЫКА. АВТОРЕФЕРАТ диссертации на соискание ученой степени кандидата филологических наук. Тверь 2019, 2019
  12. Приложения
  13. ПРИЛОЖЕНИЕ 4
  14. ПРИЛОЖЕНИЕ
  15. ПРИЛОЖЕНИЕ 1
  16. Приложение 1
  17. ПРИЛОЖЕНИЕ 3