Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 您是否扩展了嵌套集以用于涉及子节点的多个父节点的分层数据建模?你的经历是什么?_Database Design_Nested Sets - Fatal编程技术网

Database design 您是否扩展了嵌套集以用于涉及子节点的多个父节点的分层数据建模?你的经历是什么?

Database design 您是否扩展了嵌套集以用于涉及子节点的多个父节点的分层数据建模?你的经历是什么?,database-design,nested-sets,Database Design,Nested Sets,我期待在我即将进行的一个项目中使用这个概念 更多信息: 请用例子分享你的经历好或坏 我正在添加更多信息以使其更广泛: 我的子项可以有多个父项(例如:一个用户可以属于city,也可以属于一个名为UserDefinedRegion的组),这是典型的分层模型不支持的,无论是邻接列表还是嵌套集 为了清晰起见,我将用例粘贴到这里: 背景:目前系统有一个固定的层次结构,即州->县->市->用户 销售经理登录到系统并创建一个新组,该组可以与市或县的级别相同 销售经理登录系统并创建一个新组,该组可以位于州和县

我期待在我即将进行的一个项目中使用这个概念

更多信息:

请用例子分享你的经历好或坏

我正在添加更多信息以使其更广泛:

我的子项可以有多个父项(例如:一个用户可以属于city,也可以属于一个名为UserDefinedRegion的组),这是典型的分层模型不支持的,无论是邻接列表还是嵌套集

为了清晰起见,我将用例粘贴到这里:


背景:目前系统有一个固定的层次结构,即州->县->市->用户

  • 销售经理登录到系统并创建一个新组,该组可以与市或县的级别相同

  • 销售经理登录系统并创建一个新组,该组可以位于州和县之间,也可以位于县和市之间

  • 一旦销售经理创建了这些组,他应该能够查看第二天在仪表板中汇总的所有必要报告


  • 如您所见,第二个点可以通过嵌套集轻松完成,但第一个点却不能,这将为同一子节点引入新的父节点

    到目前为止,stackOverflow用户提出了以下解决方案:

  • 网络数据库支持的网络节点结构
  • 有向无环图

  • 我肯定在寻找RDBMS解决方案。在现实生活中,似乎没有多少人在Hierarchical数据模型中遇到过多个父节点。

    由于您可能会在某些操作中使用存储过程,请确保它们确实能够满足您的需要!根据我的经验,如果您使用MySQL,这可能是一个问题


    关于新的需求(多个父项):在使用RDBMS时,您现在会遇到更多问题,这取决于您需要对数据运行何种查询。我将RDBMS方法与使用图形数据库进行比较。如果您只对RDBMS方法感兴趣,请看一看。

    您对多个父项的要求立即违反了嵌套集的基本性质,正如您在参考文章中所指出的,因此我认为您从一开始就遇到了麻烦。由于您将使用关系数据库,它(使用它的核心功能)将处理您到目前为止描述的所有内容,因此我认为仅在该概念框架中工作并完善您的技能将提供您所需的所有内容,而不会添加(至少在本例中)不会增加任何价值的额外抽象


    如果你还想去那里,我会称之为网络节点结构

    好问题,我也想知道。大多数情况下,我只使用格式为“1.3.4”的字符串,然后选择使用格式为“1.3.%”的字符串。我觉得它更直观,但显然这不是最佳的。我更改了你问题的标题,因为你肯定不想知道有多少人使用过分层数据建模,但你希望ppl与你分享经验,以防他们有……你的问题几乎是重复的:嗨,塔尔坤,实际上,这是我自己问题的第二部分,我很清楚在我的场景中,嵌套集是有意义的。我想接触社区,看看我的选择是否有缺点。我还想借鉴其他人使用嵌套集的经验。我已经拿起了Joe Celko的书来获得更多的理解。标题或描述需要更改,嵌套集模型中不能有多个父对象。你是对的,有多个父对象确实违反了嵌套集。不幸的是,这是一个用例。能够让业务用户定义自定义组(在继承权中添加新节点),这最终将使用户不仅绑定到城市,还绑定到自定义销售区域。我在考虑是否可以扩展嵌套集来适应这种行为。不是每个城市都是某个地区的孩子吗?我很难跟踪您的设计过程。在关系数据库出现之前,有网络数据库产品(非循环图)和层次数据库;关系模型的一个卖点是,您不需要首先将您的问题域映射到任何其他领域;事情变得太复杂了。您能描述您的问题域而不首先尝试将其封装成一个完整的广义抽象吗?或者直接到关系抽象?我不确定你在问什么,但我们已经有了一个数据库。我们使用MySQL。我只是在我的问题描述下总结我迄今为止收到的答案。请不要对此感到困惑。我坚持使用RDBMS,因为它是一个遗留应用程序,我的任务是扩展它以适应新的需求。我不能像下面提到的le dorfier那样将我的继承权隔离到单独的图形数据库或网络数据库中。