4.1 - Schema
A Schema is a set of elements that are used by the LDAP Server to describe the data that are stored. The top two elements are ObjectClass and AttributeType. An ObjectClass is a container, describing what an LDAP entry can contain, while an AttributeType describe each singe element stored in this container.
The key here is that an LDAP entry uses ObjectClasses to list all the possible AttributeTypes that an entry can contain, some of them being mandatory, some other optional.
Now, there is more. We have many other Schema Objects that are colateral:
- LdapComparator (ApacheDS specific)
- DitContentRule
- DitStructureRule
- MatchingRule
- MatchingRuleUse
- NameForm
- Normalizer (ApacheDS specific)
- Syntax
- SyntaxChecker (ApacheDS specific)
Most of those elements are defined in RFC 4512, we have added three others (LDdapComparator, Normalizer and SyntaxChecker) in order to make the server easy to extend by adding some new ones.
Those SchemaObjects are used to refine the relation between elements, or define their syntax, or some other constraints. The most important ones are LdapComparator, MatchingRule, Normalizer, Syntax and SyntaxChecker. All of them have dependencies, exposed in this picture: