2010-03-30 7 views
0

두 테이블에 계획 구조가있어 하루와 세션별로 사용 ​​가능한 슬롯을 저장합니다.계획 관리 슬롯/세션

슬롯은 하루 중 시간 범위로 정의됩니다.

CREATE TABLE slot (
    `id` int(11) NOT NULL AUTO_INCREMENT 
, `date` date 
, `start` time 
, `end` time 
); 

세션은 중복 될 수 없으므로 슬롯에 넣어야합니다.

CREATE TABLE session (
    `id` int(11) NOT NULL AUTO_INCREMENT 
, `date` date 
, `start` time 
, `end` time 
); 

세션을 만들려면 일정 기간 동안 사용 가능한 시간 블록 목록을 생성해야합니다.

예 :

INSERT INTO slot 
    (date, start, end) 
VALUES 
    ("2010-01-01", "10:00", "19:00") 
, ("2010-01-02", "10:00", "15:00") 
, ("2010-01-02", "16:00", "20:30") 
; 

INSERT INTO slot 
    (date, start, end) 
VALUES 
    ("2010-01-01", "10:00", "19:00") 
, ("2010-01-02", "10:00", "15:00") 
, ("2010-01-02", "16:00", "20:30") 
; 

2010-01-01

<##><####>        <- Sessions 
------------------------------------  <- Slots 
10 11 12 13 14 15 16 17 18 19 20 

내가 사용할 수있는 1 시간 공간 알아야 2010-01-02

  <##########>   <########> <- Sessions 
-------------------- ------------------ <- Slots 
10 11 12 13 14 15 16 17 18 19 20 

:

+------------+-------+-------+ 
| date  | start | end | 
+------------+-------+-------+ 
| 2010-01-01 | 13:00 | 14:00 | 
| 2010-01-01 | 14:00 | 15:00 | 
| 2010-01-01 | 15:00 | 16:00 | 
| 2010-01-01 | 16:00 | 17:00 | 
| 2010-01-01 | 17:00 | 18:00 | 
| 2010-01-01 | 18:00 | 19:00 | 
| 2010-01-02 | 10:00 | 11:00 | 
| 2010-01-02 | 11:00 | 12:00 | 
| 2010-01-02 | 16:00 | 17:00 | 
+------------+-------+-------+ 
+0

귀하의 예가 정확하게 설명되어 있습니까? 당신은 결코'session'을 채우지 않습니다. –

답변

0

나는 쿼리를 사용하는 대신 알고리즘 적으로 접근한다면 인생이 훨씬 쉬워 질 것이라고 생각한다. 그것은 sproc을 사용할 수 있으며 이것은 중간 계층에 알고리즘을 작성하는 것을 의미 할 수 있습니다.

중간 계층에서 수행하는 것이 좋습니다. 데이터베이스가 슬롯과 세션을 저장하는 일을 담당하게하고 계산을 작업에 더 적합한 것으로 남겨 둡니다.

데이터베이스는 비즈니스 논리를 호스팅하지 않고 지식을 유지하기위한 것입니다.

+0

MySQL을 독점적으로 사용하려고했는데, 시간을 찾은 후에 조작과 유지 보수가 쉬워 졌기 때문입니다. 사실 나는 이미이 목적을 위해 PHP 알고리즘을 만들었지 만 꽤 무거웠습니다. 나는 당신이 옳다고 생각하고, 나는 그것을 다시하려고 노력할 것입니다. –