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)?
ответ
Первичный ключ OFFICE SCHEDULE должен быть (id_office, id_shift). id_doctor должен находиться в таблице, но не является частью первичного ключа. Это обеспечит соблюдение правила, которое дает офис, и с учетом сдвига может находиться не более одного врача в этом офисе.
Конечно, все три из них являются внешними ключами в дополнение к двум, которые образуют первичный ключ.
, но то врач может быть в двух отделениях для той же смены. Вам нужно два уникальных ограничения для таблицы расписания работы офиса – Mark
Этот ключ (id_doctor, id_office, id_shift) позволит врачу работать во многих офисах за одну смену. Попробуйте ключ для этой таблицы врача и сменного офиса, являющегося зависимым полем. Однако это позволило бы офису иметь нескольких врачей в смену, и я не уверен, что это разрешено.
Только один врач может работать в одном офисе во время смены –
Хорошо, тогда вам нужен еще один уникальный ключ id_office, id_shift в той же таблице – Mark
Я бы сменил ваш первичный ключ, включив только офис и смену, но также добавлю отдельный уникальный признак врача и сместим вместе.
В какой базе данных вы будете использовать? это может изменить то, как вы подходите к этому. –
Кроме того, ОФИСНЫЙ РАСПИСАНИЕ в отношениях 1: M (или M: M) с офисом? Если это соотношение 1: 1, то OFFICE SCHEDULE должно быть частью таблицы OFFICE –
MS SQL Я немного смущен, когда мне приходится отделять многие от многих отношений (врач-офис) в отдельной таблице, но я думаю это офисно-офисный график должен быть 1: M –