¿Existe una base de datos que le brinde el beneficio de la integridad referencial y pueda utilizar un lenguaje de tipo SQL para consultas, pero también permite que las entidades se definan libremente con respecto a sus atributos de datos y también las relaciones entre ellos?NoSQL/RDBMS híbrido con integridad referencial (eliminar cascada)?
E.g. tome un modelo de tipo RBAC donde tenga permisos, usuarios, grupos de usuarios & Roles. Un modelo complejo/flexible podría tener las siguientes reglas:
- roles pueden tener uno o más permisos y autorización pueden pertenecer a una o varias funciones
- Los usuarios pueden tener uno o más permisos y autorización pueden pertenecer a uno o más usuarios
- Usuarios Los grupos pueden tener uno o más permisos y autorización puede pertenecer a uno o más grupos de usuarios de
- Los usuarios pueden tener una o más funciones y una función puede pertenecer a uno o más usuarios
- usuario Los grupos pueden tener uno o más roles y un rol puede pertenecer a correos o más Grupos de Usuarios
- roles pueden tener uno o más papeles y un papel pueden pertenecer a una o varias funciones
Para modelar lo anterior en un RDBMS implicaría la creación de un montón de mesas de intersección. Idealmente, todo lo que me gustaría definir en la base de datos son las propias entidades (Usuario, Rol, etc.) más algunos atributos obligatorios. Todo lo demás sería dinámico (es decir, no se requiere DDL), p. Podría crear un usuario con un nuevo atributo que no estaba predefinido. También podría crear una relación entre entidades que no se haya predefinido, aunque la base de datos manejará la integridad referencial como un RDBMS normal.
Lo anterior se puede lograr hasta cierto punto en un RDBMS creando una tabla para almacenar entidades y otra para almacenar relaciones, etc., pero esto complica demasiado el SQL necesario para realizar consultas simples y también puede tener implicaciones de rendimiento.
+1 He estado buscando [algo así como] (http://stackoverflow.com/questions/3375779/object-oriented-relational-hybrid-database) que también – NullUserException