我刚刚参加了一次面试,在那里我收到了一个问题,包括这个场景和一些样本数据:
A
是B
,C
和D
的老大。
D
是E
和F
的老大。
然后F
是G
和H
的老大,即我们有分层数据。
另一方面,我们可以说有项目经理,团队负责人,然后是开发人员。现在我们要创建表来存储数据。
此外,开发人员以后可以成为项目经理。
那么我们应该如何创建表格呢?该表应包含哪些列?
我的回答是:
我们应该有一个项目管理器表,其中包含PM_ID
和PM_Name
列,其中PM_ID
是主键。然后我们应该为团队领导者创建另一个表。在该表中,我们应将TL_ID
作为主键,TL_Name
和PM_ID
作为外键。
然后我们应该创建开发人员表,因为我们应该将D_ID
作为主键,D_Name
然后TL_ID
作为外键。
您能否告诉我是否为表格提供了正确的架构?
如果出现任何问题,那么请您告诉我上述情况应该是正确的架构吗?
答案 0 :(得分:2)
您很可能需要层次结构表http://msdn.microsoft.com/en-us/library/bb677174%28v=sql.100%29.aspx,然后使用cte查询来显示结果。
答案 1 :(得分:1)
有时,面试问题不是关于结构,而是关于你识别和解决需求中的歧义的能力。 (此外,并不是说它在这里必然相关,但是当大多数人指出什么并说“等级”时,如果你仔细观察,你会发现“网络”。)
答案 2 :(得分:0)
在这种情况下,您的表需要有一个自己的外键。
答案 3 :(得分: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