A method and apparatus for implementing directory services, such as X.500
and LDAP in a SQL environment, and for providing a desired level of
indexing, extensibility and scalability. In the directory service system,
a plurality of objects are defined to be hierarchical, and the
relationships among objects follow a tree structure where each object has
a parent object and except for a root, each parent can have zero or more
children. The database comprises at least one table having a plurality of
rows and columns and stores a plurality of data items, each having a
value, each being related to one of a plurality of data types and each
having attributes defined by the directory. The attributes of the
directory are arranged in a row-per-data type and value format, resulting
in a representation identified as meta-data, wherein values are
represented per row by data type: identifying one of said plurality of
data types, syntax: identifying the nature of the data type, and value:
identifying the data value. In the application of metadata to directory
services, such as X.500 or LDAP, a `PROPERTY table` is provided in which
object name and parent name is added to the `principal design`. Other
arrangements of tables and attributes provide for the achievement of the
system goals.