ディレクトリのエントリに格納する必要がある情報の中に既存のオブジェクトクラスがサポートしていないものがある場合は、新しいオブジェクトクラスを追加します。
新しいオブジェクトクラスを作成するには、次の 2 つの方法があります。
属性を追加するオブジェクトクラス構造ごとに 1 つずつ、多数の新しいオブジェクトクラスを作成する。
ディレクトリ用に作成するすべての属性を含む 1 つのオブジェクトクラスを作成する。このオブジェクトクラスは AUXILIARY オブジェクトクラスとして定義して作成する。
サイトに ExampleDepartmentNumber と ExampleEmergencyPhoneNumber という属性を作成するとします。これらの属性にいくつかのサブセットを許可する複数のオブジェクトクラスを作成できます。ExamplePerson というオブジェクトクラスを作成し、そのオブジェクトクラスが ExampleDepartmentNumber と ExampleEmergencyPhoneNumber を許可するようにします。ExamplePerson の親は inetOrgPerson であるとします。ExampleOrganization というオブジェクトクラスを作成し、そのオブジェクトクラスが ExampleDepartmentNumber と ExampleEmergencyPhoneNumber 属性を許可するようにします。ExampleOrganization の親は organization オブジェクトクラスであるとします。
新しいオブジェクトクラスは、LDAP v3 スキーマ形式では次のようになります。
objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.3 NAME 'ExamplePerson' DESC 'Example Person Object Class' SUP inetorgPerson STRUCTURAL MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) ) objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.4 NAME 'ExampleOrganization' DESC 'Example Organization Object Class' SUP organization STRUCTURAL MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) )
または、これらのすべての属性を許可する 1 つのオブジェクトクラスを作成することができます。属性を使う必要があるエントリで、そのオブジェクトクラスを使用できます。 1 つのオブジェクトクラスは、次のようになります。
objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.5 NAME 'ExampleEntry' DESC 'Example Auxiliary Object Class' SUP top AUXILIARY MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) )
新しい ExampleEntry オブジェクトクラスには、構造上のオブジェクトクラスに関係なく任意のエントリで使用できることを示す AUXILIARY が付いています。
新しいオブジェクトクラスを実装する方法を決めるときは、次の点に留意します。
複数の STRUCTURAL オブジェクトクラスを作成すると、作成および管理するスキーマ要素の数も増える。
一般に、要素の数が少なければ、管理の手間も少なくて済みます。スキーマに複数のオブジェクトクラスを追加することを計画している場合は、1 つのオブジェクトクラスにまとめた方が簡単な場合があります。
複数の STRUCTURAL オブジェクトクラスを作成する場合は、より厳密かつ注意深いデータ設計が必要となる。
データを厳密に設計するには、個々のデータを配置するオブジェクトクラス構造を考慮する必要があります。この制限は役立つ場合とわずらわしい場合があります。
複数のタイプのオブジェクトクラス構造に入れたいデータがある場合は、1 つの AUXILIARY オブジェクトクラスを使用した方がデータ設計が簡単になる。
たとえば、preferredOS 属性を人のエントリとグループエントリの両方に設定するとします。このような場合は、1 つのオブジェクトクラスを作成して、そのクラスでこの属性が許可されるようにします。
目的に合ったグループを構成する実際のオブジェクトとグループ要素に関連するオブジェクトクラスを設計する。
新しいオブジェクトクラスに必須の属性を設定しない。
必須の属性を設定するとスキーマに柔軟性がなくなります。新しいオブジェクトクラスを作成する場合は、必須の属性より許可の属性にするようにします。
新しいオブジェクトクラスを定義したら、そのオブジェクトクラスの許可された属性と必須の属性、および継承するオブジェクトクラスを決める必要があります。