我们有一个应用程序,目前建立在具有“相当”复杂的数据权限模型的SQL Server数据库上。
我们的应用程序的核心是一个名为Record
的实体。用户是否可以查看记录取决于用户自己,他们所在的工作组以及他们所在的组织。
在下图中,登录的User
可以看到他们被直接分配到的记录,或者他们是分配记录的工作组的一部分,或者他们是工作组的一部分分配记录的组织。
这在“SQL + NHibernate”的土地上有点痛苦,因为有一些混乱的联接和工会被用来获得我需要的结果。这只是在应用程序中以这种方式许可的数据的一个示例。
我只是想知道这种类型的模型对于NoSQL / RavenDB对象层次结构是否合适,以及是否存在可能需要的任何性能考虑/对象模型重新架构。
答案 0 :(得分:1)
我已经编写了一些代码来尝试从呈现的内容中找出1对多的关系。
目前这是的结构?
public class Organisation
{
public List<Workgroup> Workgroups { get; set; }
public List<OrganisationRecord> Records { get; set; }
}
public class Workgroup
{
public List<User> Users { get; set; }
public List<WorkgroupRecord> Records { get; set; }
}
public class User
{
public List<UserRecord> Records { get; set; }
}
根据我的理解 - 记录有三种形式:
这些看起来像Table Per Hierarchy:
public abstract class Record { }
public class OrganisationRecord : Record {}
public class WorkgroupRecord : Record {}
public class UserRecord : Record {}