Если бы это был я, я бы просто добавил P_ID и O_ID к Сотрудникам. Одна и та же должность может быть заполнена несколькими сотрудниками, и в одном офисе может быть несколько сотрудников, но маловероятно (без использования технологии клонирования), что один и тот же сотрудник должен быть реплицирован несколько раз - таким образом, просто добавьте P_ID и O_ID к Сотрудник, и я думаю, что вы хорошо идти. Конечно, вам понадобятся ограничения внешнего ключа от сотрудника к должности (P_ID) и офису (O_ID).
РЕДАКТИРОВАТЬ: После некоторых размышлений и напоминая, что у меня были рабочие места, где я занимал несколько должностей (хотя и в одном и том же месте), я предполагаю, что вполне возможно, что один человек может занимать несколько должностей, которые могут находиться в разных местах.
Если вы действительно настроили наличие таблицы соединений между сотрудниками, позициями и офисами - хорошо, создайте таблицу с именем EmployeePositionOffice (или что-то в этом роде), которая содержит три столбца E_ID, P_ID и O_ID. Первичный ключ должен быть (E_ID, P_ID, O_ID), а каждое поле должно иметь внешний ключ к соответствующей базовой таблице.
EDIT:
Не уверен насчет синтаксиса SQL Server, но в Oracle первый будет выглядеть примерно так:
ALTER TABLE EMPLOYEES
ADD (P_ID NUMBER REFERENCES POSITIONS(P_ID),
O_ID NUMBER REFERENCES OFFICES(O_ID));
в то время как второй будет что-то вроде
CREATE TABLE EMPLOYEES_POSISTIONS_OFFICES
(E_ID NUMBER REFERENCES EMPLOYEES(E_ID),
P_ID NUMBER REFERENCES POSITIONS(P_ID),
O_ID NUMBER REFERENCES OFFICES(O_ID),
PRIMARY KEY (E_ID, P_ID, O_ID));
Делись и наслаждайся.