2009-09-23 2 views
1
 
I'm doing a conceptual model in Sybase PowerDesigner. 
The restriction is following: 
One doctor can work in only one office at a time during his working time (shift). 

I guess Doctor - Office relationship should be many-many, but what about 
time restriction ("during his working time")? 
Should it be a new table SHIFT? 

So I guess I should have four tables (DOCTOR, OFFICE, SHIFT and OFFICE SCHEDULE). 
OFFICE SCHEDULE should be a table connecting all 3 other entities 
and should have composite primary key (id_doctor, id_office, id_shift)? 
+0

В какой базе данных вы будете использовать? это может изменить то, как вы подходите к этому. –

+0

Кроме того, ОФИСНЫЙ РАСПИСАНИЕ в отношениях 1: M (или M: M) с офисом? Если это соотношение 1: 1, то OFFICE SCHEDULE должно быть частью таблицы OFFICE –

+0

MS SQL Я немного смущен, когда мне приходится отделять многие от многих отношений (врач-офис) в отдельной таблице, но я думаю это офисно-офисный график должен быть 1: M –

ответ

0

Первичный ключ OFFICE SCHEDULE должен быть (id_office, id_shift). id_doctor должен находиться в таблице, но не является частью первичного ключа. Это обеспечит соблюдение правила, которое дает офис, и с учетом сдвига может находиться не более одного врача в этом офисе.

Конечно, все три из них являются внешними ключами в дополнение к двум, которые образуют первичный ключ.

+0

, но то врач может быть в двух отделениях для той же смены. Вам нужно два уникальных ограничения для таблицы расписания работы офиса – Mark

1

Этот ключ (id_doctor, id_office, id_shift) позволит врачу работать во многих офисах за одну смену. Попробуйте ключ для этой таблицы врача и сменного офиса, являющегося зависимым полем. Однако это позволило бы офису иметь нескольких врачей в смену, и я не уверен, что это разрешено.

+0

Только один врач может работать в одном офисе во время смены –

+0

Хорошо, тогда вам нужен еще один уникальный ключ id_office, id_shift в той же таблице – Mark

0

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