スキーマとは?
データの格納形態を定義するためのファイルで、データベースによく使われます。/etc/openldap/schema/*に格納されています。
スキーマファイルの構文は、RFC2552で、種別は、RFC2256で公開されています。
LDAPの主なスキーマ
LDAPのスキーマは、objectClassと、属性を定義しています。
  • core.schema
  openldapのコアスキーマ 必ず使用します。
  基本的な属性とオブジェクトクラスを定義しています。
  • cosine.schema
  X.500で定義されているCosineスキーマ
  • inetOrgperson.schema
  人の情報を保存するために使われる。
  • nis.schema
  NISとLDAPを併用するために必要な属性を定義するスキーマ



スキーマの中身
◆属性の定義
例としてcore.schemaのtelephoneNumber属性の構文を見てみます。

attributetype(2.5.4.20 NAME `telephoneNumber`
    DESC `RFC2256: Telephone Number`
    EQUALITY telephoneNumberMatch
    SUBSTR telephoneNumberSubstringsMatch
    SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )

  • 1行目 
属性を定義するスキーマの構文は、attributetypeから始まります。
2.5.4.20は、telephoneNumberをあらわすOID(オブジェクト識別子)です。 NAMEは、属性の名前を表します。
  • 2行目
DESCは、この属性の説明です。
 RFC2256の中のTelephone Numberの項にこのスキーマのフォーマットが 書かれているという意味です。
  • 3行目
EQALITYは、照合規則をあらわします。
telephoneNumberMatchは、以下の規則を定義しています。
空白を無視する。大文字、小文字を区別しない等です。
  • 4行目
SUBSTRは、部分比較に使われます。
検索条件にワイルドカードを使えるようにします。
  • 5行目
SYNTAXは、データ型を定義するOIDです。
{}内の数字は、属性値の推奨される最小値です。

◆objectClassの定義
例として、core.schemaのpersonオブジェクトクラスの構文を見てみます。

objectClass (2.5.6.6 NAME `person`
    DESC `RFC2256: a person
    SUP top STRUCTURAL
    MUST ( sn $ cn )
    MAY ( userPassword $ telephoneNumber $ seeAlso $ description ))
  • 1行目
このobjectClassのOIDと名前を表しています。
  • 2行目
このobjectClassの説明です。RFC2256の a personの項に書かれています。
  • 3行目
SUPは、このobjectClassが、top objectClassから派生したことを表しています。STRUCTURALは、構造型オブジェクトクラスであることを表しています。構造型とは、人や組織など実世界に存在するものという意味です。
  • 4行目
MUSTは、必須属性を表しています。personオブジェクトクラスは、
データを保存する際、snとcn属性値を使わなければなりません。
  • 5行目
MAYは、使用可能な属性を表しています。personオブジェクトクラスは、
データを保存する際、これら4つの属性を使用できます。
最終更新:2007年08月18日 18:39