Jump to content

Criar uma tabela para registar horários


softklin
 Share

Recommended Posts

Boas pessoal.

Tenho aqui um pequeno dilema para resolver: numa determinada base de dados, preciso de implementar uma tabela de horários semanais de médicos. Até seria fácil e poderia fazê-lo de uma maneira pouco relacional, por exemplo, com recurso a texto, se não fosse a seguinte restrição: um médico apenas deve alterar o seu horário para uma altura em que não haja consultas marcadas.

Actualmente tenho:

Tabela 'Medico':

idMedico, nome, ....

Tabela 'Consulta':

idConsulta, idMedico, dataHora, ...

Só não faço ideia como irei fazer a tabela Horário. A ideia era ter os horários por semana (dessa maneira já posso, sem recurso a SQL, calcular se calha no dia de uma consulta). Talvez uma tabela com os dias da semana, e o intervalo de horas... Alguém tem uma solução melhor que esta?

Cumps.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Tens que ter uma tabela para pores os horários do mês de cada médico e ele só pode alterar os dias que pensa em falta a partir da semana seguinte para que possa ser preenchido por outro médico.

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

É isso que estou a pensar fazer, mas por semanas, que no final de contas é equivalente, porque o horário é recorrente. Mas fica difícil, porque em cada coluna 2ª, 3ª, ... queria colocar um intervalo de horas, mas num formato que me permita ver depois mais tarde se existe uma consulta nesse horário.

Entretanto, pensei no seguinte:

Tabela 'IntervaloTemporal':

idIntervalo, horaInicio, horaFim, diaSemana

Tabela 'Horario':

idMedico, idIntervalo

Basicamente, divido a tabela de horários em duas, uma com os intervalos de tempo respectivos e a outra que liga o médico a estes intervalos. Acho que esta já é aceitável, se reduzirmos isto a um problema de muitos para muitos. Alguém tem uma sugestão para implementar isto de outra forma melhor?

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Penso que podes fazer isso com apenas uma tabela:

Tabela 'Horario':

idMedico, horaInicio, horaFim, diaSemana

Depois o que precisas é de um trigger que ao tentar inserir um novo registo faça:

  • select de todos os registos com
      diaSemana = diaSemanaNovoRegisto E
        (horaInicio < HoraInicioNovoRegisto < horaFim OU
              horaInicio <HoraFimNovoRegisto < horaFim )
  • se esse select devolver pelo menos um registo não deixas introduzir o novo registo porque uma parte do horario já esta ocupada

Cumps

Link to comment
Share on other sites

Realmente estava a complicar o conceito... 😉 E as horas também vão ter de fazer parte da PK sim, porque pode haver períodos de manhã e tarde no mesmo dia. Obrigado useware, vai ser mesmo essa a minha implementação! 🙂

Cumps.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.