Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Projeto de banco de dados de agendamento médico


EDIT:não entendi a pergunta.

Seu design está bom - não há nada de errado em ter várias linhas em uma tabela refletindo vários pares. O único refinamento que você pode considerar é ter AvailableFrom e AvailableTo como valores de data e hora, em vez de hora, para que você possa remover a coluna "data". Isso ajuda você a lidar com a disponibilidade que abrange a meia-noite.

O restante da resposta NÃO está relacionado à pergunta - é baseado em um mal-entendido do problema.

Em primeiro lugar, você precisa saber qual é o horário de trabalho de um médico; isso pode ser simples (9-5 todos os dias) ou complexo (9-5 segundas-feiras, não disponível terças, 9-12:30 quarta-feira). Você também pode precisar registrar os intervalos - almoço, por exemplo - em cada dia, para não agendar um compromisso durante o almoço; Estou assumindo que médicos diferentes farão suas pausas em momentos diferentes.

Em seguida, em vez de gravar "disponibilidade", você provavelmente deseja gravar "compromissos" para cada dia. Um médico está disponível quando sua agenda diz que está trabalhando e quando não tem uma consulta agendada.

Então, seu esquema pode ser:
Doctors
--------
DoctorID
....

DoctorSchedule
------------
DoctorID
DayOfWeek
StartTime
BreakStartTime
BreakEndTime
EndTime

DoctorAppointment
----------------
DoctorID
Date
AppointmentStartTime
AppointmentEndTime