组织层次结构的数据结构



我想在数据结构中表示组织层次结构。有几种员工:首席执行官、总裁、董事、经理、工程师等。选择数据结构的方式要使查询能够有效地执行,例如:

  • 根据在他们手下工作的员工总数找出排名前5位的经理。
  • 查找工资大于5000美元的员工总数。
  • 找到并解雇所有工作经验少于2年的员工。

说所有的员工都有许多不同的属性。

在这种情况下哪种数据结构最合适?

要求:提供空间和时间优化的查询。

编辑:我不是在寻找SQL表。我想为这个场景设计合适的数据结构。

大多数数据结构,如b树、哈希表、尝试、基数树等,将单个键映射到有效负载。有些(如Radix Tree/Radix Trie)针对字符串键进行了优化。

你要求的东西可以回答多个不同字段的查询。您的需求看起来与关系数据库快速回答表上的此类查询所需的需求基本相同。

据我所知,这是通过对每个字段有一个单独的索引(例如B-tree)来完成的。一个字段上的range-query只使用该字段的索引。但是,修改表意味着更新所有其他索引。

如果你需要回答范围查询,哈希表是一个糟糕的选择。某种树,如b树或平衡二叉树(如红黑树)可能是好的。或者一个类似字符串的字段的基数Trie。

IDK如何在一个索引被删除后有效地更新其他索引。也许只需要单独找到/删除每个键。

如果你想知道如何做到这一点,只是作为一个学习练习,看看SQL数据库是如何做到的。您可能会发现他们需要一些您不想实现的功能,因此您可以简化事情。(例如,也许你不需要它是事务性的,所以查询中途失败仍然可以删除一些条目。)

最新更新