参照整合性の利点を提供し、クエリに SQL 型言語を使用できるだけでなく、データ属性とエンティティ間の関係に関してエンティティを大まかに定義できるデータベースはありますか?
たとえば、アクセス許可、ユーザー、ユーザー グループ、およびロールを持つ RBAC タイプのモデルを考えてみましょう。複雑で柔軟なモデルには、次のルールを含めることができます。
- ロールは 1 つ以上の権限を持つことができ、権限は 1 つ以上のロールに属することができます
- ユーザーは 1 つ以上の権限を持つことができ、権限は 1 つ以上のユーザーに属することができます
- ユーザー グループは 1 つ以上の権限を持つことができ、権限は 1 つ以上のユーザー グループに属することができます
- ユーザーは 1 つ以上のロールを持つことができ、ロールは 1 つ以上のユーザーに属することができます
- ユーザー グループは 1 つ以上の役割を持つことができ、役割は 1 つ以上のユーザー グループに属することができます
- 役割は 1 つ以上の役割を持つことができ、役割は 1 つ以上の役割に属することができます
上記を RDBMS でモデル化するには、多数の交差テーブルを作成する必要があります。理想的には、データベースで定義したいのは、エンティティ自体 (ユーザー、ロールなど) といくつかの必須属性だけです。他のすべては動的になります (つまり、DDL は必要ありません)。たとえば、事前定義されていない新しい属性を持つユーザーを作成できます。データベースは通常の RDBMS のように参照整合性を処理しますが、事前定義されていないエンティティ間の関係を作成することもできます。
上記は、エンティティを格納するテーブルと関係を格納する別のテーブルを作成することにより、RDBMS である程度達成できますが、単純なクエリを実行するために必要な SQL が過度に複雑になり、パフォーマンスに影響を与える可能性もあります。