Некоторые лингвистические аспекты
На основе описанной выше реляционной модели данных возможна разработка универсального подъязыка данных, основанного на прикладном исчислении предикатов. Если набор отношений находится в нормальной форме, достаточно исчисления предикатов первого порядка. Такой язык предоставлял бы собой критерий лингвистической мощности для всех остальных предлагаемых языков данных, и сам являлся бы кандидатом для встраивания (с соответствующими изменениями синтаксиса) в многочисленные включающие языки (программирования, командно- или проблемно-ориентированные). Хотя описание подробностей такого языка не является целью данной статьи, укажем его наиболее ярко выраженные черты.
Пусть R – подъязык данных, а H – включающий язык. R допускает объявление отношений и их доменов. В каждом объявлении отношения указывается первичный ключ этого отношения. Объявленные отношения добавляются в системный каталог для использования каждым участником сообщества пользователей, обладающим соответствующими правами. В языке H возможны объявления, отражающие представление этих отношений в памяти (такие объявления могут быть более изменчивыми). R допускает спецификации выборки любого подмножества данных из банка данных. Действия по запросу такой выборки – регулируются ограничениями безопасности.
Универсальность подъязыка данных основана на его декларативности (а не на возможностях вычислений). В больших банках данных каждое подмножество данных имеет очень большое количество возможных (и осмысленных) описаний, даже если мы предполагаем (как мы это и делаем), что существует только конечное множество функций, к которым система получает доступ для ограничения выбираемых данных. Следовательно, класс выражений ограничения, которые могут быть использованы для спецификации множества, должен иметь выразительную мощность класса правильно построенных формул прикладного исчисления предикатов. Хорошо известно, что для сохранения этой выразительной мощности не является обязательной возможность выражения (в соответствующем синтаксисе) каждой формулы выбранного исчисления предикатов.
Например, достаточно ограничиться формулами, находящимися в предваренной нормальной форме [9].
В выражениях ограничения или других частях оператора выборки могут потребоваться арифметические функции. Они могут быть определены в H и использованы в R.
Определенное таким образом множество может быть получено только для целей выполнения запроса или сохранено для возможных изменений. Вставки принимают форму добавления новых элементов в объявленные отношения без обращения внимания на какой-либо порядок, который может существовать во внутреннем представлении. Удаления, значимые для всех пользователей (а не для одного пользователя или некоторой группы), имеют форму удаления элементов из объявленных отношений. Некоторые удаления и обновления могут порождаться другими, если в R объявлены зависимости удаления и обновления между указанными отношениями.
Одним существенным следствием принятого представления данных в языке, используемом для выборки данных, являются принципы именования элементов данных и множеств. Некоторые аспекты этого были обсуждены в предыдущем разделе. В обычном сетевом представлении пользователь часто обременен созданием и использованием большего числа имен отношений, чем это необходимо, т.к. имена ассоциированы скорее с путями (или типами путей), чем с отношениями.
Если пользователь знает, что хранится некоторое отношение, он будет ожидать возможности работы с ним, пользуясь комбинацией известных ему аргументов и получая информацию об остальных "неизвестных" аргументах, поскольку именно они содержат интересующую его информацию. Эту возможность системы (отсутствующую во многих современных информационных системах) мы будем называть симметричным использованием
отношения. Естественно, симметричность в производительности не ожидается.
Для поддержки симметричного использования одного бинарного отношения необходимы два направленных пути. Для отношения степени n количество путей, которые нужно именовать и контролировать, составляет n факториал (n!).
Опять-таки, если принять реляционное представление, в котором каждое n-арное отношение (n>2) должно быть описано пользователем как вложенное выражение, включающее только бинарные отношения (см., например, LEAP System Фельдмана (Feldman) [10]), то вместо всего лишь n+1 имен при использовании прямой n-арной нотации, описанной в разделе 1.2, потребуется образовать 2n-1 имен. Например, 4-арное отношение поставка, приведенное на рис.1 и содержащее 5 имен в n-арной нотации, во вложенной двоичной нотации было бы представлено в виде
P ( поставщик, Q ( деталь, R( проект, количество)))
и, таким образом, в нем использовались бы 7 имен.
Другим недостатком такого представления является его асимметрия. Несмотря на то, что эта асимметрия не препятствует симметричному использованию, она, определенно, составляет некую основу для запросов, которые трудно формулировать пользователям (попробуйте, например, выразить с использованием Q и R запрос о том, какие детали и в каком количестве используются в данном проекте).