2012-04-10 86 views
0

我试图开发一个数据库来存储由跟踪员工活动的基于Web的应用程序收集的数据。我有一个看起来像这样的员工表关联两个数据库表(将员工与活动相关联)

Employee 
-------- 
id 
name 
position 
email 

而且还有多个活动表,每个表都有不同的列。一个示例:

OutreachAndTraining 
----- 
id 
date 
county 
city 
type 
... 

ProfessionalDevelopment 
------ 
id 
date 
comments 

我希望能够跟踪哪些员工是每个活动的一部分,但只是想记录活动本身一次。将多个员工与一项活动相关联的最佳方式是什么?我是否必须为每个活动创建一个单独的表来存储员工ID和活动ID?

回答

1

假设一个员工都可以在一个以上的活动参加,你这里有什么是N:员工和活动米之间的关系,这是仿照时,每次使用关系额外的“链接”表:

enter image description here


如果你有很多各种各样的活动,你可以考虑继承(又名类,概括,亚型或类层次结构),以尽量减少关系的数量(因此“链接”表):

enter image description here

有关继承的更多信息,请在ERwin Methods Guide中搜索“子类型关系”。

+0

非常感谢这个例子。我很难想象链接表,并想知道这是否是唯一可能的解决方案。看起来亚型可能是最好的选择。 – jasontk19 2012-04-11 14:06:18

+0

好的,就我从数据库检索条目而言,这对我来说都是有意义的,但我仍然无法确定如何去输入这些信息以及SQL查询的样子。 – jasontk19 2012-04-12 20:50:11

+0

...为多个员工记录活动。 我自动增加活动表的ID,所以在插入活动之前,我怎么知道要为ActivityID插入EmployeeActivity表? – jasontk19 2012-04-12 20:58:06