关联两个数据库表(将员工与活动相关联)

时间:2012-04-10 21:00:25

标签: database-design relational-database

我正在尝试开发一个数据库来存储由跟踪员工活动的基于Web的应用程序收集的数据。我有一个看起来像这样的员工表

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

以及多个活动表,每个表都有不同的列。一个例子:

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

ProfessionalDevelopment
------
id
date
comments

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

1 个答案:

答案 0 :(得分:1)

假设一名员工可以参加多项活动,那么您所拥有的是员工与活动之间的N:M关系,并使用每个关系的附加“链接”表建模:

enter image description here


如果您有多种活动,可以考虑继承(也就是类别,概括,子类型或类层次结构),以最小化关系数量(因此最小化“链接”表):

enter image description here

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