5

我希望在我即将进行的一个项目中使用这个概念。

更多信息:在 MySQL 中管理分层数据

请用例子分享你的经验好坏。

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

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

为了清楚起见,我在此处粘贴用例:


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

  1. 销售经理登录系统并创建一个新组,该组可以与市或县处于同一级别。

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

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


正如你所看到的,第二点可以很容易地通过嵌套集合来完成,但不是第一点,它将为同一个子节点引入新的父节点。

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

  1. 网络数据库支持的网络节点结构。
  2. 有向无环图。

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

4

2 回答 2

4

正如您在引用的文章中指出的那样,您对多个父母的要求立即违反了嵌套集的基本性质,所以我会说您一开始就会遇到麻烦。由于您将使用关系数据库,它(使用它的核心功能)将处理您迄今为止描述的所有内容,我认为只需在该概念框架中工作并提高您的技能将提供您需要的一切,而无需添加额外的抽象(至少在这种情况下)不要增加任何价值。

如果你还想去那里,我称之为网络节点结构。这是一个参考

于 2009-04-19T20:36:15.543 回答
3

由于您可能会为某些操作使用存储过程,因此请确保它们的性能确实足以满足您的需求!根据我的经验,如果您使用 MySQL,这可能是一个问题。

关于新要求(多个父母):您现在在使用 RDBMS 时会遇到更多问题,具体取决于您需要针对数据运行哪种查询。我在此 wiki 页面上将RDBMS 方法与使用图形数据库进行了比较。如果您只对 RDBMS 方法感兴趣,请查看A Model to Represented Directed Acyclic Graphs (DAG) on SQL Databases

于 2009-04-19T19:48:43.380 回答