我有一个可以由用户主持的文件夹实体。文件夹可以包含其他文件夹。所以我可能有这样的结构:如何构建级联属性 - 仅应用于父元素还是应用于所有子元素?
Folder 1
Folder 2
Folder 3
Folder 4
我必须决定如何执行此实体的审核。我想出了两个选项:
选项1
当用户被赋予主持权到文件夹1,定义文件夹1和用户1.无其他关系之间的关系主持人加入到D b。
要确定用户是否可以调节文件夹3,我检查并查看用户1是否是任何父文件夹的主持人。
这似乎减轻了在关系定义后处理文件夹1下的更新/移动实体/添加的一些复杂性,并且恢复关系意味着我只需要处理一个实体。
选项2
当用户被赋予适度的权限文件夹1,定义用户1和文件夹1,和所有子实体下到盛大的孙子之间的新关系时,关系是创建,如果它被删除,则向下迭代图表以删除关系。如果我在文件夹2下添加了一些关系后,我只需将所有版主复制到新实体中。
但是,当我只需要显示用户正在进行审查的顶级文件夹时,我需要查询所有具有用户不适度的父文件夹的文件夹,而不是选项1,我只是查询任何用户正在调节的项目。
思考
我认为它归结为确定是否用户将查询所有父项比他们更会查询子项...如果是这样,那么选项1 似乎更好。但我不确定。
要么比其他方法更好?为什么?还是有另一种方法比两者都好?我使用实体框架以防万一。
针对无液
在选项1中,当与 主持人父文件夹会发生什么 - 用户关系被删除?儿童文件夹是否会将一个 级别向上移动?
所有孩子都从数据库中删除。
用户多长时间执行一次操作,您需要确定他/她是否是该文件夹的模组?在选项 2中创建的额外关系可能仅在有几个主持人和数千个子文件夹要计算您希望具有的性能时才有用。
有也不会是需要访问他们中度的项目许多儿童版主 - 如果有,则调用“UserModeratesParentOfThisFolder()”是在验证工作流程中的最后一次检查,所以没有其他用例受到影响(我认为)。
也是值得考虑的,而不是在复制选项2主持人文件夹 关系下的树,你可以做选择3: 维持“子文件夹,以缓和父文件夹”的关系。 这样,您可以验证用户在两个查询中具有mod访问权限 - 1)到保存child_folder_mod_parent关系和 的表格,然后2)检查用户是否是任何返回的父文件夹的模块。所以即使有多个mod,你也在复制这个 的关系少于选项2.
我不太明白这一点。这和方案1有什么不同?
我找到选项2和3凌乱,恕我直言。 #2不如#3那么混乱,如果你需要纯粹的性能(如果真的有那么多的mod 活动?),那么你的选项2就足够了。从'结构' 的角度来看,选项1是最好的,但有其缺点。您应该看到选项1中的性能命中有多糟糕,并且如果它如此 比您需要实现选项2来解决该问题多得多。 I 假设您将在 底层数据库中使用与存储过程等效的选项1.通过重复执行 来回应用程序代码调用的SQL将会产生更大的性能提升。
我不认为会有一吨国防部的活动,我已经实现的选项1,所以我想我给它一个去,并保持选项两记应该表现成为一个问题。我很好奇第三个选项,虽然...任何进一步的细节都会很棒。谢谢你的帮助:)
编辑我的回复你的...... :-) – aneroid