Есть ли там база данных, которая дает вам преимущество ссылочной целостности и возможность использовать язык SQL-типа для запроса, но также позволяет объектам свободно определять свои атрибуты данных, а также отношения между ними?
например. возьмите модель типа RBAC, где у вас есть разрешения, пользователи, группы пользователей и роли. Сложная/гибкая модель может иметь следующие правила:
- Роли могут иметь одно или несколько разрешений, а разрешение может принадлежать одной или нескольким ролям.
- Пользователи могут иметь одно или несколько разрешений, а разрешение может принадлежать одному или нескольким пользователям
- Группы пользователей могут иметь одно или несколько разрешений, а разрешение может принадлежать одной или нескольким группам пользователей.
- Пользователи могут иметь одну или несколько ролей, а роль может принадлежать одному или нескольким пользователям
- Группы пользователей могут иметь одну или несколько ролей, а роль может принадлежать одной или нескольким группам пользователей.
- Роли могут иметь одну или несколько ролей, а роль может принадлежать одной или нескольким ролям.
Для моделирования вышеизложенного в СУБД будет создано множество таблиц пересечений. В идеале, все, что я хотел бы определить в базе данных, это сами сущности (Пользователь, Роль и т.д.) Плюс некоторые обязательные атрибуты. Тогда все остальное будет динамическим (т.е. Не требуется DDL), например. Я мог бы создать пользователя с новым атрибутом, который не был предварительно определен. Я мог бы также создать связь между объектами, которые не были предварительно определены, хотя база данных будет обрабатывать ссылочную целостность, как обычная СУБД.
Вышеупомянутое может быть достигнуто в некоторой степени в СУБД, создав таблицу для хранения объектов и другую для хранения отношений и т.д., но это слишком усложняет SQL, необходимый для выполнения простых запросов, а также может иметь последствия для производительности.