【问题标题】:Most efficient way to store heirarchical data存储分层数据的最有效方式
【发布时间】:2014-03-07 22:41:29
【问题描述】:

我想在 SQL Server 中存储分层数据,我想知道最有效的方法是什么。

一个示例数据集是:

Department Manager #1
  Product Manager #1
    Team Leader #1
      Team Member #1
      Team Member #2
      Team Member #3
    Team Leader #2
      Team Member #1
      Team Member #2
      Team Member #3

etc...

【问题讨论】:

  • 以什么方式高效?贮存?阅读?插入?轻松加入?任何解决方案都需要权衡取舍。
  • 最被接受的方法是什么?我想一定有一种方法可以很好地平衡它们。
  • 是的,但是任何一个都有限制 - 如果您每个级别使用一个表,那么添加一个级别是困难的。如果您使用自引用故事,则查询很困难。
  • CTE(公用表表达式)和 XML 路径使查询变得更容易。

标签: sql sql-server


【解决方案1】:
Person Table
- ID
- ParentID

优点:

  • 可以支持无限深度
  • 易于编辑

缺点:

您还需要添加检查以确保某个人不能是自己的父母(特定记录的 ID 和 parentID 不能相同),否则您在查询数据时会遇到一些严重问题。

【讨论】:

    【解决方案2】:

    最常见的答案是将每种对象类型存储在不同的表中,因此根据您的数据,您需要: 1 部门经理表 1 产品经理表 1 组长表 1 个团队成员表。

    在 Team Members 表中,您需要为每个其他表使用一个外键。您也可以将所有数据保存在同一张表上,但您可能会有重复的数据。 希望对您有所帮助。

    【讨论】:

    • -1。错误的宇宙并在许多项目中进行 HT 演讲,除非表格根本不同。工作不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多