programing

마리아에서 달력 약속 처리 방법DB

starjava 2023. 10. 4. 20:29
반응형

마리아에서 달력 약속 처리 방법DB

저는 데이터베이스(MariaDB)를 사용하여 PHP 기반 학교 수업 달력을 지원하고 있습니다.는 클래스라는 테이블을 가지고 있는데, 클래스의 시작 시간과 기간 등을 저장하고 있습니다.그리고 선생님이라는 또 다른 테이블이 있는데 선생님 정보가 저장되어 있습니다.오직 한 명의 선생님만이 한 수업에 배정될 것이고, 수업은 항상 한 시간에 시작합니다.

저는 특정 선생님이 다른 수업을 진행하는 동안 새로운 수업이 예약되지 않도록 하고 싶습니다.수업시간이 1시간만 된다면 단순히 선생님수업에 독특한 제약을 가하겠다는데, 수업시간이 1시간 이상일 수도 있기 때문에 어떻게 접근해야 할지 잘 모르겠습니다.

물론 INSERT 전에 PHP 체크 인을 할 수는 있지만, 한 명의 교사의 수업이 중복되는 것을 불가능하도록 데이터베이스를 설계하는 것이 더 낫다고 생각했을 것입니다.SQL 프로시저를 살펴보았지만 SQL 프로시저의 사용법에 익숙하지 않으며, 여기서 수행해야 할 검사의 종류에 근접하는 예가 발견되지 않았습니다.

이 문제를 가장 잘 해결할 수 있는 방법을 제안해 줄 수 있는 사람이 있습니까?

시간 간격(15분)을 사용하여 교사와 학급 모두 바쁘다고 표시합니다.

-- Teacher TCH exists.
--
teacher {TCH}
     PK {TCH}
-- Class CLS exists.
--
class {CLS}
   PK {CLS}
-- Time slot number SLT, starting at STA is 15 min long.
--
tslot {SLT, STA}
   PK {SLT}


-- data sample
  (SLT, STA)
---------------
  (1, '00:00')
, (2, '00:15')
, (3, '00:30')
, (4, '00:45')
, (5, '01:00')
-- ...
, (95, '23:30')
, (96, '23:45')

-- This is a "static" table, once populated make it read-only.

응용프로그램 수준에서 지정된 날짜의 교사, 수업, 시작 시간 종료 시간을 기준으로 이 표의 모든 슬롯을 채웁니다.이 작업은 트랜잭션 내에서 수행되므로 오류가 발생하면 모든 작업이 취소됩니다.

-- On date DTE, teacher TCH is busy with class CLS
-- during time slot number SLT.
--
busy {DTE, SLT, TCH, CLS}
  PK {DTE, SLT, TCH}
  AK {DTE, SLT, CLS}

FK1 {SLT} REFERENCES tslot   {SLT}
FK2 {TCH} REFERENCES teacher {TCH}
FK3 {CLS} REFERENCES class   {CLS}

참고:

All attributes (columns) NOT NULL

PK = Primary Key
AK = Alternate Key   (Unique)
FK = Foreign Key

이렇게 완벽한 것과는 거리가 멀어서, 무작위 업데이트로 엉망이 될 수도 있다고, 수업 중간에 있는 자리에서 선생님을 바꾸는 것입니다.따라서 애플리케이션은 이상한 항목을 방지하기 위한 규칙을 적용해야 합니다.

언급URL : https://stackoverflow.com/questions/63989277/how-to-handle-calendar-appointments-in-mariadb

반응형