2013-06-22 2 views
2

가용성 캘린더를 개발 중입니다. 예약 가능한 이벤트에는 예약 할 수있는 하나 이상의 리소스가있을 수 있으며 이벤트는 되풀이 될 수 있으며 반복 이벤트 등의 인스턴스를 편집하는 것과 같은 몇 가지 기본 기능 (예 : Google 캘린더)을 가질 수 있습니다. 달력은 또한 예약을 저장할 수 있어야합니다.예약 캘린더 모델 디자인

예 : 매주 월요일 10시, 2014 년 말까지 단위 A는 2 개의 리소스를 사용할 수 있지만 월요일 24/6은 사용할 수 없습니다. 지난 월요일 UserX 및 UserY가 해당 이벤트에 예약되어 UserX가 표시되지 않았습니다.

본인은 되풀이 이벤트에 대한 몇 가지 디자인 패턴을 살펴 보았지만 반복 이벤트와 세부 이벤트를 개별 이벤트에 처리하는 좋은 방법을 찾지 못했습니다.

이벤트에 이벤트와 반복을 저장하는 일부 모델링을 수행 한 다음 모든 개별 이벤트에 대해 EventDetails 인스턴스를 만들어야합니다.

class Event { 

    Date start 
    Date end 

    boolean isRecurring 
    EventRecurType recurType // DAILY, WEEKLY ... 
    Integer recurInterval = 1 
    Date recurEnd 
    Integer recurCount 
    List<EventDetails> eventDetails // Id, start, end, BookingDetails et.c. 
} 

더 좋은 방법이 있습니다. 제발 도와주세요.

답변

1

일반적으로 데이터베이스 디자인을 사용하면 구성 요소를 분리하여 다른 키와 관련 지을 수 있습니다. 나는 당신이 그것에 관한 기초를 알고 있다고 가정하고 있습니다.

그래서 내 초기 생각은 다음과 같습니다

이벤트, 이벤트 정보가있는 테이블 -와 이드 (이벤트 ID)

사용자, 사용자 세부 테이블 -와 UID (사용자 ID)

되풀이, 반복적 인 이벤트가있는 테이블, 반복 패턴과 같은 다른 관련 정보 (나는 열거 형을 사용한다)와 함께 eid와 uid를 입력한다.

거대한 테이블에 모든 것을 넣고 싶지 않아 두통을 피할 수 있습니다. 걱정거리를 분리하면 나중에 확장 할 수 있습니다.

검색은 단순한 조인이되고 날짜와 사용자와 같은 데이터를 조회하는 데 사용되는 필드에 인덱스를 넣으면 검색 속도가 빨라지지만 삽입 속도가 느려지므로 미칠 염려가 없습니다.

이 정보가 도움이되기를 바랍니다.

+0

아니요, 제가 찾던 내용이 아닙니다. – loddn

+0

Zach는 SQL 샘플을 게시 할 수 있습니까? DDay로 작업하라는 권고에 따라 비슷한 것을 찾고 있습니다. – aggie

+0

GUI를 사용하여 먼저 show create table syntax를보십시오. DDay (Normandy?) 란 무엇입니까? –