【发布时间】:2012-09-21 02:28:14
【问题描述】:
我刚刚参加了一次面试,我收到了一个问题,包括这个场景和一些示例数据:
A 是B、C 和D 的老板。
D 是 E 和 F 的老板。
那么F是G和H的boss,即我们有分层数据。
换句话说,我们可以说有项目经理、团队负责人然后是开发人员。现在我们要创建表来存储数据。
此外,开发人员以后可以成为项目经理。
那么我们应该如何创建表呢?表格应该包含哪些列?
我的回答是:
我们应该有一个项目经理表,其中包含PM_ID 和PM_Name 列,其中PM_ID 是主键。然后我们应该为团队领导创建另一个表。在该表中,我们应该有 TL_ID 作为主键,TL_Name 和 PM_ID 作为外键。
然后我们应该创建开发人员表,我们应该有D_ID 作为主键,D_Name,然后TL_ID 作为外键。
您能否告诉我是否为该表提供了正确的架构?
如果有任何问题,您能否向我提供上述情况的正确架构?
【问题讨论】:
-
为不同角色设置单独的表的问题是您需要在角色更改时添加表。像 CTE 和“under”查询这样的查询也更难。有很多方法,但所有方法都使用一个表。
-
问题没有明确说明。层次结构是否将员工与其他员工相关联(Joe 向 Fred 报告)在一个将工作槽与其他工作槽相关联(团队 X1 的团队负责人向项目 x 的项目经理报告)?如果是前者,那么一些答案会将您指向一个名为“Adjacency List”的单表解决方案。
标签: c# sql-server database-design hierarchical-data