programing

닥터 스케쥴링 데이터베이스 설계

instargram 2023. 9. 9. 08:52
반응형

닥터 스케쥴링 데이터베이스 설계

기능 스케줄링을 위한 아래 사용자 인터페이스를 받았습니다.

enter image description here

저는 의사들이 한 달에 몇 일씩 쓸 수 있는 시간을 정해야 합니다.

이 문제를 처리하기 위한 테이블을 어떻게 만들어야 합니까?

저는 제가 한번쯤은table structure아래란으로

  1. 닥터 아이드
  2. 날짜.
  3. 사용할 수 있음
  4. 사용가능로.

하지만 여기서 문제는 같은 의사가 같은 날에 다른 타이밍을 두 번 방문할 경우 2행을 추가한다는 것입니다.

데이터베이스 스키마에 문제가 있습니까? 아니면 더 나은 테이블 설계가 이 작업을 간단하게 수행하는 데 도움이 됩니까?

이 테이블로 의사가 특정 요일과 시간에 이용 가능한지 여부를 감지할 수 있어야 합니다.

테이블 디자인을 가장 잘 개선할 수 있는 방법은 무엇입니까?

편집: 제가 작업하고 있는 화면은 다음을 돕기 위한 입니다.Hospital Staff to know when the visiting doctor is available, 그래서 그들은 시간동안 환자를 위한 약속을 예약하거나 다른 가능한 시간을 알려줄 수 있습니다.

편집: 질문을 잘못 이해했습니다.

당신의 디자인은 괜찮습니다. 테이블에 여러 개의 행이 있는 것도 여러 개의 짝수를 반영하는 것도 문제가 없습니다.시간이 아닌 AvailableFrom과 AvailableTo를 날짜 시간 값으로 사용하는 것이 고려할 수 있는 유일한 개선 사항이므로 "날짜" 열을 제거할 수 있습니다.이를 통해 자정까지 가용성을 해결할 수 있습니다.

나머지 대답은 질문과 관련이 없습니다. 문제에 대한 오해에 근거한 것입니다.

첫째, 의사의 근무시간이 언제인지 알아야 합니다. 간단한 경우(매일 9-5시) 또는 복잡한 경우(월 9-5시, 화요일은 불가능, 수-금 9-12:30).또한 의사들이 각기 다른 시간에 휴식을 취한다고 가정할 때, 예를 들어 점심과 같은 휴식 시간을 매일 기록해야 할 수도 있습니다.

다음으로, "가용성"을 기록하는 대신, 각 요일에 대한 "약속"을 기록할 수 있습니다.의사 선생님은 스케줄이 일을 하고 있다고 말할 때, 그리고 예약된 약속이 없을 때 가능합니다.

스키마는 다음과 같습니다.

Doctors
--------
DoctorID
....

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

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

저는 하루를 15분 또는 30분 단위로 나누고, 가능한 각 시간대별로 모든 의사에 대한 기록을 작성하는 것으로 하겠습니다.독특함을 잘 관리해 줍니다.

약속은 하나의 레코드일 수 있으며 이 레코드에서 다루는 시간 간격은 약속 레코드를 참조할 수 있습니다.

예약 시간과 동일한 방식으로 예약 가능 시간을 기록하기 때문에, 이 방법에 대한 쿼리는 일반적으로 매우 간단합니다. 예를 들어, 주어진 길이의 사용 가능한 시간 간격을 쿼리하거나, 예약에 사용되지 않은 의사의 시간의 양 또는 예약의 평균 길이 등을 계산할 수 있습니다.

테이블은 다음과 같습니다.

create table staff_time(
  staff_id  integer,
  time_slot date,
  allocation_id)

allocation_id는 약속 또는 교육 시간 또는 기타 할당을 나타내지만 슬롯이 비어 있는 경우에는 아무것도 나타내지 않습니다.

날짜 데이터 유형에는 오라클의 시간 구성 요소가 포함됩니다.

언급URL : https://stackoverflow.com/questions/16669197/doctor-scheduling-database-design

반응형