是否有一个数据库可以为您提供参照完整性的好处并能够使用 SQL 类型语言进行查询,但也可以让实体根据其数据属性以及它们之间的关系进行松散定义?
例如,采用具有权限、用户、用户组和角色的 RBAC 类型模型。复杂/灵活的模型可能具有以下规则:
- 角色可以拥有一个或多个权限,并且一个权限可以属于一个或多个角色
- 用户可以拥有一个或多个权限,一个权限可以属于一个或多个用户
- 用户组可以有一个或多个权限,一个权限可以属于一个或多个用户组
- 用户可以拥有一个或多个角色,一个角色可以属于一个或多个用户
- 用户组可以有一个或多个角色,一个角色可以属于一个或多个用户组
- 角色可以有一个或多个角色,一个角色可以属于一个或多个角色
在 RDBMS 中对上述内容进行建模将涉及创建许多交集表。理想情况下,我想在数据库中定义的只是实体本身(用户、角色等)以及一些强制性属性。其他一切都将是动态的(即不需要 DDL),例如,我可以创建一个具有未预定义的新属性的用户。我还可以在尚未预定义的实体之间创建关系,尽管数据库会像普通 RDBMS 一样处理参照完整性。
通过创建一个表来存储实体和另一个表来存储关系等,可以在 RDBMS 中在某种程度上实现上述目的,但这会使执行简单查询所需的 SQL 过于复杂,并且还可能对性能产生影响。