2012-04-10 3 views
0

Я пытаюсь создать базу данных для хранения данных, собранных веб-приложением, которое отслеживает действия сотрудников. У меня есть таблица сотрудников, которая выглядит так:Связать две таблицы базы данных (связать сотрудника с активностью)

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

И несколько таблиц действий, каждая из которых имеет разные столбцы. Пример одного:

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

ProfessionalDevelopment 
------ 
id 
date 
comments 

Я хочу, чтобы иметь возможность отслеживать, какие сотрудники были частью каждого вида деятельности, но только нужно войти в саму деятельность один раз. Каков наилучший способ связать нескольких сотрудников с одним видом деятельности? Должен ли я создать отдельную таблицу для каждого вида деятельности для хранения идентификаторов сотрудников и идентификаторов активности?

ответ

1

Предполагая, что работник может принять участие в более чем одним видом деятельности, что у вас здесь есть N: M отношения между работниками и деятельности, который моделируется с дополнительным «ссылка» таблицы на каждой связи:

enter image description here


Если у вас есть много видов деятельности, вы можете рассмотреть вопрос наследования (. ака категории, обобщение, подтип или иерархии классов), чтобы свести к минимуму числа отношений (и, следовательно «связь» таблица):

enter image description here

Для получения дополнительной информации о наследовании, найдите «Отношения подтипов» в ERwin Methods Guide.

+0

Большое спасибо за этот пример. Мне было трудно визуализировать таблицы ссылок и было интересно, было ли это единственно возможным решением. Похоже, подтипы могут быть лучшим способом. – jasontk19

+0

Хорошо, все это имеет смысл для меня, поскольку извлекает записи из базы данных, но у меня все еще возникают проблемы с определением того, как вводить эту информацию и как может выглядеть запрос SQL. – jasontk19

+0

... для регистрации деятельности для нескольких сотрудников. Я автоинкремент для своих идентификаторов для таблиц действий, так как я узнаю, что нужно вставить в таблицу EmployeeActivity для ActivityID до того, как активность еще была вставлена? – jasontk19

Смежные вопросы