我在为工作中的一个问题确定正确的数据结构时遇到了一个小问题。我要做的是创建一个“公司结构树”。简而言之 - 某人是所有老板中的老板(所以他是树的第一层(或零层))然后是其他 worker ,但如你所知,某人可以是其他人的老板等。树必须最多深入 5 个级别。我真的不知道如何创建它,即使从数据库的角度来看也是如此。
我已经尝试过自定义 ViewModel 和一些字典,但我觉得有一种可行的方法,不包括 5 级嵌套字典或列表。
如果有人知道如何执行此操作,我们将不胜感激。
干杯。
最佳答案
我建议您在 Employees 表上使用自引用外键
Employees
| ID | Name | ManagerID |
|-------|-------|-----------|
| 1 | Tom | NULL |
| 2 | Andy | 1 |
| 3 | Heidi | 2 |
其中 ManagerID 是 ID 上的外键。
优点:
- 您不限于 5 个级别
- 你可以有多个根条目
- 此原则也适用于其他自引用结构,如菜单树等。
- 易于扩展,如果您需要 n:n 连接,您可以进行非规范化(每个字段 1;2 只需分号分隔的 ManagerID)或使用自己的交叉表进行规范化。
关于c# - 为公司树选择正确的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35147713/