0

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

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

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

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

ProfessionalDevelopment
------
id
date
comments

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

4

1 回答 1

1

假设一名员工可以参加多个活动,您在这里拥有的是员工和活动之间的 N:M 关系,它是用每个关系的附加“链接”表建模的:

在此处输入图像描述


如果您有多种活动,您可以考虑继承(也称为类别、泛化、子类型或类层次结构),以尽量减少关系的数量(因此“链接”表):

在此处输入图像描述

有关继承的更多信息,请在ERwin 方法指南中搜索“子类型关系” 。

于 2012-04-10T22:02:47.887 回答