2012-04-10 44 views
0

従業員の活動を追跡するWebベースのアプリケーションによって収集されたデータを格納するデータベースを開発しようとしています。私はこのような従業員テーブルを持っています。2つのデータベーステーブルの関連付け(従業員をアクティビティに関連付ける)

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

そして、それぞれ異なる列を持つ複数のアクティビティテーブルがあります。 1の例:

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

ProfessionalDevelopment 
------ 
id 
date 
comments 

私は従業員がそれぞれの活動の一部であったが、一度だけの活動そのものを記録したいを追跡できるようにしたいです。複数の従業員を1つのアクティビティに関連付ける最良の方法は何ですか?従業員IDとアクティビティIDを格納するためのアクティビティごとに別のテーブルを作成する必要がありますか?

答えて

1

は、複数の活動に参加することができ、従業員と仮定すると、あなたがここに持っていることはNです:

enter image description here:それぞれの関係ごとの追加「リンク」テーブルでモデル化された従業員と活動の間にMの関係を、


あなたが活動の多くの種類を持っている場合は、あなたが関係(したがって、「リンク」テーブル)の数を最小限にするために、継承(別名カテゴリー、一般化、サブタイプまたはクラス階層。)検討してください。

enter image description here

継承の詳細については、ERwin Methods Guideの「サブタイプの関係」を検索してください。

+0

この例では多くのありがとうございます。私はリンクテーブルを視覚化するのに苦労していて、それが唯一の解決策であるかどうか疑問に思っていました。サブタイプのように見えるのが最善の方法かもしれません。 – jasontk19

+0

これはすべてデータベースからエントリを取得する限り意味がありますが、この情報を入力する方法とSQLクエリがどのように表示されるかを判断するのにはまだ問題があります。 – jasontk19

+0

...複数の従業員のアクティビティを記録する。 私はアクティビティテーブルのIDをオートインクリメントしていますので、アクティビティが挿入される前にActivityIDのEmployeeActivityテーブルに何を挿入すればよいかわかりますか? – jasontk19

関連する問題