Краснов В.Н. () - | |
Ключевое слово: |
|
Ключевое слово: |
|
|
В статье приводится описание свойств оригинального механизма выполнения запросов к базе данных (БД) и получения отчетных форм [1-3], реализованного в инструментальном средстве автоматизации программирования (ИСАП) интерфейса БД и названного реляционная электронная таблица (РЕЭЛТ). Средство определения РЕЭЛТ является высокоуровневым языком запросов. Данный язык разрабатывался как альтернативный языкам SQL и QBE для использования на этапе обслуживания БД. В прикладных пакетах РЕЭЛТ используется как основной язык запросов при работе конечного пользователя со сложной реляционной БД. Все файлы БД составляют некоторое множество файлов. Один файл БД может быть представлен в виде нескольких таблиц, отличающихся условием группировки записей. При использовании термина файл будет подразумеваться одна из таблиц, полученных из этого файла посредством выполнения сортировки записей определенным образом. Каждая таблица БД именуется. Подчинением одной таблицы другой является установление связи 1:М от подчиняющей таблицы к подчиняемой по ключу. Каждая таблица может в разных случаях являться подчиняемой (подчиненной) разным таблицам БД. При вложенном подчинении таблиц мы получаем многоуровневую схему подчиненности таблиц. Рассмотрим пример. Интересующий нас файл БД имеет сле- дующие связи с подчиненными ему таблицами (рис. 1).
Нумерация уровней: 0, 1, ... ,U-1. U – количество уровней в схеме. Узел дерева может состоять из нескольких таблиц: главной и связанных с нею отношениями 1:1 или М:1. Верхний узел связан с нижним отношением 1:М. РЕЭЛТ определяется на этой схеме представлением файлов БД. В реализации описываемого механизма запросов пользователю предоставляется удобный диалоговый интерфейс, включающий средства описания выражений для вычисления функций РЕЭЛТ и необходимые средства для получения всех представлений РЕЭЛТ. РЕЭЛТ не требует места на жестком диске для сохранения результата выборки. В математической модели заложено выполнение соединений на этапе проектирования БД и предварительное создание множества деревьев связей таблиц. На этапе выполнения запросов к отношениям применяются только операции проекции и выборки. Это позволяет избежать формирования копий отобранных записей для отчета или копий записей выборки на диске. Для формирования выборки достаточно создать массив ссылок на отобранные записи. Отчет (проекция) формируется по кортежам узла дерева (вершины) или кортежам, попавшим в выборку. На носителе информации требуется незначительное пространство для сохранения массива ссылок. Выполнение выборки формированием массива ссылок дает следующие преимущества: - редактирование БД, путем изменения ячеек отчета по выборке; - незамедлительное отображение изменений ячеек отчета, изменяемых другим пользователем; - повышение скорости формирования выборки за счет отсутствия операций записи на диск отобранных кортежей; - значительная экономия дискового пространства (смотри выше). Работа с каталогами РЕЭЛТ (каталоги запросов, выборок и отчетов) является процедурой пошагового прохождения диалога описания конечного отчета. Первым шагом является расширение таблиц БД новыми (расчетными) колонками (включая колонки, рассчитываемые по подчиненным файлам) – определение запросов. Вторым шагом является описание и получение выборки из множества экземпляров объекта предметной области. В выборку попадают все свойства отобранных экземпляров объекта. Для просмотра выборки на экране не нужно описывать отчет (выполнять проекцию). Отобранные кортежи предоставляются пользователю в интерфейсе просмотра всех кортежей. Третьим шагом является описание отчета по выборке – выполнение проекции. Алгоритм определения РЕЭЛТ является формализацией методологии получения сложного отчета по дереву связей таблиц. При настройке РЕЭЛТ выполняется каталогизация запросов и подзапросов. РЕЭЛТ является следующее отношение [3]: . Значения вычислимых атрибутов определяются вложенными запросами и подзапросами к подчиненным файлам. Все запросы, необходимые для определения РЕЭЛТ, реализуются вычислением следующей функции: , пусто, если fL – ложь; fS, если fL – истина. { Для каталогизации запросов всех типов достаточно каталогизировать в каждом узле дерева связей таблиц описание выражений функций f S/L i, j (f s и f l) с указанием типа функции Ф (агрегация (сумма, max, min...) или поиск (значение)). При сохранении описаний выражений в одном каталоге есть возможность использовать определения вычислимого поля для создания запроса суммы простой заменой типа запроса в копии со “значения” на “сумму”. Описания вычислимых полей (значение) и вложенных запросов (сумма) могут использоваться для построения отчета без явного указания типа запроса “вычислимое поле”. Это позволит избежать создания копий одних и тех же выражений в каталоге запросов. Одновременно с этим вычислимое поле (запрос типа “значение”) является и вложенным запросом, который (если вызывается как запрос к таблице) возвращает значение функции f s от первого кортежа, для которого функция f l (предикат) вернула значение “истина”. В каталоге запросов все запросы именуются. Каталог запросов является списком значимых сущностей предметной области, не присутствующих в явном виде в БД. От конечного пользователя скрывается тип запроса (значение, сумма, максимум, минимум...), выражение запроса (оно может включать другие запросы как вычислимые поля, вложенные запросы и подзапросы к подчиненным файлам). Важным является возможность использования одного запроса разными способами. Например, запрос типа “сумма” может использоваться без изменения типа как: - диалоговый вызов в узле дерева связей таблиц для получения на экране одной суммы; - вызываемый с верхнего уровня подзапрос; - вложенный запрос; - вычислимое поле в другом запросе; - колонка отчета (для вычисления значения в каждой записи вычисляется функция f s/l из описания запроса). Сохранение выражений этих функций выполняется в каталоге выборок каждого узла дерева связей таблиц. Как видно из определения этих функций, из этого каталога используются ссылки на каталог запросов. Отчет (вывод РЕЭЛТ на экран или на устройство вывода (диск, принтер)) реализуется применением операции проекции к отношению (или выборке из этого отношения). Картотека отчетов должна содержать именованные описания отчетов с параметрами определения представления РЕЭЛТ (с группировкой, с итогами, полное, сокращенное...). Эта картотека также имеет ссылки на картотеку запросов. Добавление нового отчета доступно конечному пользователю и не должно вызывать затруднений. Включая вычислимые (с подзапросами) колонки в отчет, пользователь может и не знать, что реальная таблица не содержит такой колонки. Это реализуется предоставлением пользователю объединенного списка атрибутов отношения и вычислимых полей без указания поле это или вычислимая колонка. Так, пользователь составляет отчет из значимых сущностей предметной области без указания имен отношений и запросов. Таким образом, для каталогизации описаний РЕЭЛТ (запросов и подзапросов) достаточно организовать три картотеки: 1) запросы (вычислимые поля, вложенные запросы (включая поиск значения) и запросы с подзапросами); 2) выборки (условие отбора записей и выражение сортировки); 3) отчеты. Такая каталогизация обеспечивает: - сохранение описаний на жестком диске; - использование сохраненных описаний для их вложенного использования в новых описаниях; - распространение описаний (передача другим пользователям для использования и модификации). РЕЭЛТ позволяет организовать работу пользователя на логически независимом уровне. При использовании двухзвенного (управляющий/пользователь) стиля администрирования запросов конечный пользователь, не имеющий специальных знаний в области БД, естественным путем может обращаться к информации. Сначала администратор, пользуясь всеми возможностями механизма настройки РЕЭЛТ, должен создать описания запросов на верхних уровнях деревьев, затем предоставить пользователям доступ к подмножествам запросов, названия которых не вызывают у них сомнений в природе данных, получаемых этими запросами (запросы разделяются на подмножества механизмом разделения записей каталогов описаний на темы). Конечный пользователь (бухгалтер, управляющий, эксперт рынка ценных бумаг и др.) работает с множеством таблиц (работы главного меню системы) и множествами значимых сущностей предметной области (запросы), способен самостоятельно собирать требуемые отчеты и делать выборки. Такой (двухзвенный) стиль работы позволяет конечному пользователю получить любые отчеты, не владея всем механизмом настройки РЕЭЛТ (расчет средних, подзапросы к подчиненным файлам, использование вложенных запросов). РЕЭЛТ упрощает описание запросов к подчиненным файлам (отношение 1:М). Результатом работы РЕЭЛТ является новое отношение [3] . Значения вычислимых атрибутов определяются вложенными запросами и подзапросами к подчиненным файлам. Запрос (вычисление по одной записи (вычислимое поле), вложенный запрос, подзапрос) всегда возвращает только единственное значение (значение выражения, сумму, среднее, максимум, минимум...) и, следовательно, может быть включен в выражение любого другого запроса (в том числе и в выражение запроса высшего уровня). Каталогизация подзапросов в каждом узле схемы дает возможность отдельно описать и отладить каждый подзапрос. Значение вычислимого поля определяется значением выражения запроса, которое может содержать операции, атрибуты отношений (связанных 1:1 и М:1), вложенные запросы, подзапросы и другие вычислимые поля. РЕЭЛТ позволяет редактировать БД посредством изменения ячеек конечного отчета на экране. РЕЭЛТ с запросами типа “значение”, извлекающими данные без преобразования, позволяет непосредственно редактировать ячейки таблиц конечных отчетов. Будем называть такие запросы редактирующими. Исправленные данные сохраняются в БД. При этом в журнале изменений БД сохраняется информация об изменениях. Выполняется проверка контрольной суммы изменяемой записи, и после изменения записи сумма пересчитывается. В запросе, извлекающем редактируемые данные, может указываться условие в формате генератора выражений РЕЭЛТ, разрешающее изменение. Работа с РЕЭЛТ позволяет использовать определенное множество возможных связей таблиц. Связи таблиц описываются на этапе проектирования системы. Все представления именуются. Существует ограниченный набор вариантов связей таблиц, используемых на практике. Наиболее важными являются отношения, соответствующие реальным объектам предметной области. Работа конечного пользователя с такими отношениями является интуитивно понятной. Их количество ограничено. Это может быть пять‑десять объектов. Манипулирование с таким ограниченным набором объектов не является обременительным. Структуру базы данных целесообразно проектировать с учетом такого подхода. Справочные таблицы соединяются отношениями М:1 с основными объектами на этапе проектирования системы и предоставляются конечному пользователю в виде единой таблицы (соответствующей одному объекту предметной области). Подчиненные (связанные отношением 1:М) таблицы должны преподноситься конечному пользователю как неотделимая принадлежность экземпляра объекта предметной области.
Конечному пользователю достаточно предоставить ограниченный и интуитивно понятный набор фиксированных деревьев связей таблиц. Наименование дерева в наборе должно совпадать с наименованием главной таблицы вершины дерева. Главная таблица вершины дерева, в свою очередь, получила название от объекта предметной области. Таким образом, набор деревьев отражает набор реальных объектов предметной области со всеми их свойствами (единичными и множественными). Выбор объекта для получения отчета из этого набора должен выполняться пользователем самостоятельно без затруднений. Большое число вариантов связей одних и тех же таблиц затруднит выбор. Одно дерево связей может содержать несколько вариантов соединений с одним и тем же подчиненным файлом. Это позволяет описать принадлежность к экземпляру объекта предметной области разных представлений одного файла – таблиц, сформированных из этого файла. Так, количество деревьев в наборе связей таблиц будет равно количеству объектов предметной области. В вершине каждого дерева будет находиться один объект, имеющий все варианты связей 1:М с подчиненными ему таблицами. Наличие различных вариантов связей таблиц второго уровня с подчиненными таблицами третьего уровня позволит управляющему запросами предоставить конечному пользователю необходимые метаданные (готовые описания подзапросов).
Последняя реализация РЕЭЛТ в качестве диалогового языка запросов выполнена на Visual FoxPro 5.0 в среде Windows-95 OSR2. При проверке команд Visual FoxPro были получены следующие результаты, по которым можно судить и о средствах навигации инструментария РЕЭЛТ по дереву таблиц (рис. 2). Тестирование выполнялось на жестком диске компьютера Pentium 100 с 8 Мб оперативной памяти. Скоростные характеристики реализации сравнивались с реализацией команды SELECT в FoxPro 2.6 для ДОС. Из файла объемом 22 Мб отбирались записи со всеми атрибутами. Тест проводился откомпилированными исполняемыми модулями на жестком диске локального компьютера. Для определения зависимости времени выполнения выборки от объема выбираемой информации было проведено несколько тестов с разным объемом выборки (от 0 до 100 %) (рис. 3). Результат теста показал, что скорость выполнения выборки в РЕЭЛТ выше, чем в SQL. С увеличением объема выбираемой информации эффективность выборки в РЕЭЛТ относительно выборки в SQL повышается. На объеме выборки 20 Мб скорость РЕЭЛТ выше SQL на 35 % . Одновременно с замером скорости измерялся объем создаваемого на жестком диске файла с результатом выборки (рис. 4). Зависимость размера файла выборки от объема выбираемой информации линейная. Для SQL размер файла выборки определяется, как 1* размер файла БД. Для РЕЭЛТ это 0.0033 * размер файла БД (коэффициент 0.0033 рассчитан для конкретного файла). В отличие от SQL, в РЕЭЛТ создается файл ссылок на записи файла БД, поэтому объем файла выборки определяется количеством записей в выборке, а не объемом файла БД.
Разработчик приложений может выбрать средства определения деревьев связей таблиц и средства навигации по этим деревьям инструментария РЕЭЛТ вместо самостоятельного кодирования программ открытия БД и навигации по таблицам. Прикладные программы разработчика встраиваются в меню инструментального средства РЕЭЛТ. При этом конечный пользователь, запуская прикладные программы в интерфейсе определения РЕЭЛТ, привыкает к представлению БД в виде дерева связанных таблиц. Альтернативным вариантом использования средств определения РЕЭЛТ в прикладной программе является их вызов в отдельном пункте меню (например в пункте «Аналитика»). В заключение следует отметить, что описанные важнейшие характеристики языка (выборка выполняется созданием массива ссылок, формализация методологии получения сложного отчета по дереву связей таблиц, фиксация деревьев связей таблиц, каталогизация запросов в каждом узле дерева, логическая независимость, редактирование БД) позволяют говорить о РЕЭЛТ, как о сверхвысокоуровневом языке запросов. РЕЭЛТ может использоваться в диалоговом режиме конечным пользователем и вызываться в прикладных программах разработчика приложений для манипулирования данными. Список литературы 1. Краснов В.Н. Реляционные электронные таблицы (РЕЭЛТ) как аналитический инструмент. // Cб. тез. докл. Международ. конф.: Информационные средства и технологии (Международ. форум информатизации: МФИ-95). - М.: МЭИ, 1995. 2. Краснов В.Н. Диалоговый генератор выражений как средство определения функций реляционной электронной таблицы. // Там же. 3. Краснов В.Н. Реляционные электронные таблицы. // Там же. |
http://swsys.ru/index.php?id=979&lang=.&page=article |
|