Схема каталога
                                                                        

            Основной частью  DIB и Directory Services является схема ка-
       талога (Directory Schema). Схема каталога - это набор правил, оп-
       ределяющих характеристики информации по объектам, атрибуты и зна-
       чения,  которые можно добавить в дерево  каталогов.  Эти  правила
       можно  сохранить в специальной части DIB,  и копия их хранится на
       каждом сервере имен.  Все серверы имен в сети содержат одну и  ту
       же информацию схемы.

            Понимание принципов  организации  объектов должно помочь вам
       понять назначения и организацию схемы каталога.  Если мы  возьмем
       несколько  объектов  реального мира и начнем перечислять характе-
       ристики каждого, то обнаружим, что некоторые объекты имеют одни и
       те же характеристики.  Одни объекты имеют ручки,  другие красные,
       некоторые закрываются,  а некоторые находятся далеко. Если мы со-
       берем и объединим все характеристики в один список,  то можем ис-
       пользовать его как справочник по всем выбранным  для  определения
       характеристикам.  Таким  образом,  нам не нужно определять каждую
       карактеристику для каждого объекта отдельно.  Ручка  есть  ручка,
       независимо от того, какая это ручка - двери, ящика стола или дру-
       гого объекта.

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

            Пусть, например, мы классифицируем объекты как сферы. По оп-
       ределению мы можем потребовать,  чтобы сферы описывались характе-
       ристиками размера, и чтобы это размер (радиус) представлялся чис-
       лом.  Соотнесем  это со схемой каталога.  Тогда orb будет классом
       объекта,  размер size - атрибутом,  а число number -  синтаксисом
       атрибута.  (Иногда в документации Novell атрибуты объекта называ-
       ются характеристиками. Мы выбрали в этой главе термин "атрибуты",
       так  как в справочном руководстве программиста Directory Schema в
       качестве типов характеристик и синтаксиса характеристик определя-
       ет  типы  атрибута Attrubute Types и синтаксис атрибута Attrubute
       Sytaxes.)

            Чтобы легче было идентифицировать объекты orb, вы можете оп-
       ределить другие атрибуты. Для каждой сферы orb вы можете отслежи-
       вать характеристику конструкции construction.  Сфера  может  быть
       пустой, твердой или наполненной. Другим атрибутом может быть наз-
       начение purpose. Бейсбольный мяч - для игры, стальной шарик - для
       применения в механизмах (например, в шарикоподшипниках), а плане-
       та - для обитания.  Вы можете также захотеть знать,  кто является
       владельцем сферы - owner.  Мы можем также ввести атрибут, исполь-
       зуемый только для целей идентификации и назвать его именем -  na-
       me.  Если  требуется,  этот  список можно продолжить.  Пока же мы
       должны решить,  что хотим  отслеживать  следующие  характеристики
       каждого объекта-сферы:

            Radius: расстояние от точки на поверхности объекта до центра
       объекта.

            Construction: структурное качество объектов.

            Purpose: возможное использование объекта.

            Owner: тот, кто отвечает за этот объект.

            Name: то, что мы используем для идентификации объекта.

            Информацию, которую мы решили отслеживать,  можно рассматри-
       вать  в качестве правил построения информационной базы.  Когда мы
       начинаем идентифицировать объекты как сферы, мы делаем это, зада-
       вая для них специальную информацию.  Это дает вам представление о
       том,  что представляет собой схема каталога  (Directory  Schema).
       Она  охватывает правила для построения базы данных - дерева ката-
       логов (Directory Tree).

            Кроме определения объекта и правил атрибутов, схема включает
       в себя правила для построения значений заданных атрибутов. Напри-
       мер,  атрибут радиуса сферы можно  представить  строкой  символов
       ASCII с символами из подмножества "0,1,2,3,4,5,6,7,8,9". Его мож-
       но представить в виде двоичного значения или числа символов перед
       нулевым  символом.  Здесь  можно использовать множество форм.  Мы
       должны специфицировать ту форму,  которую будем  использовать.  В
       схеме это делается с помощью определений синтаксиса атрибутов.

            Схема каталога содержит спецификацию того, какая информация,
       требуется при идентификации объекта, что является необязательным,
       и какую форму должна принимать информация.

            Определение схемы для каждого объекта включает в себя прави-
       ла, которые управляют взаимосвязью объектов друг с другом в дере-
       ве  каталога.  Эти правила составляют определение включения.  При
       создании объекта в дереве каталога он может  быть  подчиненным  в
       дереве только тем объектам, которые находятся в определении вклю-
       чения его объектного класса. Если вернуться к примеру сфер, то мы
       можем  определить объект с именем basketball - баскетбольный мяч.
       Если объекты класса orb ограничены своим отношением  включения  и
       должны подчиняться другим объектам класса room (комната),  то мо-
       жем обнаружить, что объект basketball содержится в объекте с име-
       нем closet (стенной шкаф),  который представляет собой "маленькую
       комнату".  Либо он обнаруживается в объекте  с  именем  gymnasuim
       (спортзал),  который является большой комнатой.  Однако, согласно
       этому определению, мы не можем получить объект класса orb на фут-
       больном поле, так как поле - это не комната.

            Чтобы получить более полное представление об этом дереве, мы
       может рассмотреть его детальнее и обнаружить, что объект с именем
       gymnasium  имеет родительский объект с именем West_High (название
       района),  который,  в свою  очередь,  имеет  родительский  объект
       Smalltown (городок). Полное имя объекта в Directory Services тог-
       да будет иметь вид basketball.gymnasium.West_High.Smalltown. Каж-
       дое  определение  класса  объекта включает в себя класс объектов,
       которые могут быть родительскими для данного объекта.  Эта специ-
       фикация является определением включения.

            Схема каталога  задает также,  какие атрибуты необходимы при
       создании объекта данного класса и какие необязательны.  Это назы-
       вается обязательными атрибутами и необязательными атрибутами.

            В определении класса объектов вы должны задать,  какие атри-
       буты будут использоваться для наименования объекта.  В примере со
       сферами вы можете потребовать указания для наименования всех сфер
       владельца и имени.  Одну сферу тогда можно  идентифицировать  как
       John's  baseball  (бейсбольный мяч Джона),  а другую - как John's
       earth (Земля Джона).

            По различным причинам для заданного объекта вам может потре-
       боваться  назначить  другое  имя  (псевдоним).  Такие  псевдонимы
       представляют собой объекты,  которые могут добавляться  к  дереву
       каталога и ссылаться на исходный объект. Эти псевдонимы разымено-
       вываются в объект,  псевдонимом которого они являются.  Например,
       на  John'  earth  можно  ссылаться по псевдониму объекта с именем
       world (мир).  Взглянув на объект с именем world,  вы можете захо-
       теть разыменовать его обратно к исходному объекту с именем John's
       earth.

            Для каждого определенного в схеме атрибута задается  синтак-
       сис атрибута. Этот синтаксис может определять форму и тип. Объек-
       ты класса room может иметь атрибут с именем dimensions (размеры).
       Синтаксисом  атрибута  dimension будет три числа,  представляющих
       высоту,  ширину и длину. В данном случае синтаксисом значения яв-
       ляются три числа.  Помните, что определение синтаксиса специфици-
       рует тип значений, а не сами фактические значения.

            Как мы уже упоминали, возможные взаимосвязи объектов в дере-
       ве определяются в схеме определением включения. В схеме определя-
       ются также отношение объектных классов друг к другу. Объект может
       классифицироваться как цветок,  цветы классифицируются как расте-
       ния, которые классифицируются как живые организмы. Схема каталога
       в  этом  случае  потребовала бы отдельных определений классов для
       цветов, растений и живых организмов. В заданном определении схемы
       объекты,  созданные  как цветы,  могли бы наследовать определения
       растений и живых организмов.  Эта линия наследования задается че-
       рез  использование  определений  суперклассов  каждого объектного
       класса.

            Схема каталога должна проектироваться и создаваться до того,
       как  объекты  добавляются в дерево каталога.  Определенная Novell
       схема каталога называется базовой схемой.  Если базовая схема  не
       полностью отвечает вашим нуждам,  вы можете добавить к ней другие
       определения, используя подходящие функции API Directory Services,
       которые обсуждаются в данной главе ниже.