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




Пример системы, реализующей принцип "Сложность данных в именах". НадРеляционный манифест. - часть 2


Далее НРМ показывает, что система, выполняющая основное требование, позволяет представить

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

«Если в системе корректным является путевое выражение "C.*.*.s", где "С" – имя, определяющее существование множества объектов (это может быть имя класса, определенное в глобальном контексте, или имя групповой или одиночной ссылки, определенное в некотором локальном контексте), "s" – имя скалярного компонента, определенного в структуре, входящей в это путевое выражение, а "*.*" – остальные имена, образующие путевое выражение между "C" и "s", то система гарантирует, что существует отношение с именем "C.*", в котором существует скалярный атрибут с именем "*.s", содержащий значение компонента "s", и атрибут с именем "С", содержащий ссылку на объект, в который входит указанный компонент "s"».

Говоря проще, любое путевое выражение достаточно разделить на две части произвольным образом, соответствующим текущим требованиям пользователя. Система гарантирует, что запрос, в котором первая часть будет являться именем отношения, а вторая – именем его атрибута, будет выполнен. При этом, конечно, в этом отношении могут присутствовать другие атрибуты, соответствующие разным ветвям иерархии. Кроме того, в нем будет присутствовать ссылочный атрибут, позволяющий обратиться к объектам, данные о которых представлены в виде этого отношения.

Например, предположим, что в системе задана следующая спецификация

CREATE CLASS Y { a scalartype; // здесь scalartype – некий скалярный тип (домен) b SET OF // компонент b имеет тип отношение { // с атрибутами c scalartype; // с (определен на домене scalartype) d scalartype; // d (определен на домене scalartype) }.. }..




Содержание  Назад  Вперед