2

我刚刚参加了一次面试,我收到了一个问题,包括这个场景和一些示例数据:

ABC的老板DD是 和 的E老板F。然后F是 and 的老板GH即我们有分层数据。

换句话说,我们可以说有项目经理,团队负责人,然后是开发人员。现在我们要创建表来存储数据。

此外,开发人员以后可以成为项目经理。

那么我们应该如何创建表呢?表应该包含哪些列?

我的回答是:

我们应该有一个项目经理表,其中包含列PM_ID,主键PM_Name在哪里。PM_ID然后我们应该为团队领导创建另一个表。在该表中,我们应该有TL_ID主键TL_NamePM_ID外键。

然后我们应该创建开发人员表,我们应该将其D_ID作为主键,D_Name然后TL_ID作为外键。

你能告诉我我是否为表格提供了正确的架构吗?

如果有任何问题,您能否向我提供上述情况的正确架构?

4

4 回答 4

2

您很可能需要一个层次结构表http://msdn.microsoft.com/en-us/library/bb677174%28v=sql.100%29.aspx,然后使用 cte 查询来显示结果。

于 2012-09-29T13:15:39.363 回答
1
  • 当开发人员成为项目经理时,该人是否不再是开发人员?
  • 所有这些关系都会随着时间而改变。您是否需要知道哪些关系发生了变化,以及何时发生了变化?
  • 每个人都必须有老板吗?
  • 每个老板都必须有下属吗?
  • 当老板去世或离开时,该老板的下属会怎样?
  • 开发人员可以同时为多个团队负责人工作吗?

有时,面试问题不是关于结构,而是更多关于你识别和解决需求歧义的能力。(另外,这里不一定相关,但是当大多数人指向某物并说“层次结构”时,如果你仔细观察,你会发现“网络”。)

于 2012-09-29T14:07:43.313 回答
0

我认为最简单的表将包含此信息(仅在一个表中):

EmployeeID | LineManager | Role
-----------+-------------+-----
A          | A           | boss
B          | A           | pm
C          | A           | pm
D          | A           | pm
E          | D           | tl
F          | D           | tl
G          | F           | dev
H          | F           | dev
于 2012-09-29T13:40:15.503 回答
0

在这种情况下,您的表需要有一个外键。

于 2012-09-29T13:14:37.353 回答