2012-04-18 4 views
2

스포츠 코트 예약 시스템을 개발 중이며 테이블 헤더의 열을 법원에 표시하고 행을 예약을위한 시간 슬롯으로 표시해야하는 "예약 테이블"을 생성해야합니다.OO 디자인 문제 (Symfony2 사용)

예,

___________________________________ 
|   |   |   | 
| Court 1 | Court 2 | Court 3 | 
|___________|___________|___________| 
|   |   |   | 
| 10.00 am | 10.00 am | 10.00 am | 
|___________|___________|___________| 
|   |   |   | 
| 11.00 am | 11.00 am | 11.00 am | 
|___________|___________|___________| 

요구 사항 : 클럽은 클럽이 예약에 대한 시간 증분을 가질 수

  • 법원의 수 (예를 들어 1 시간 이상 같이있을 수 있습니다

    • , 30 분, 40 분 등)
    • 표의 각 셀은 "예약"을 나타냅니다.

    은 제가 몇 가지 질문 그래서 나는 처음부터이 권리를 할 수 있는지 확인하려면 : 당신이 달성하기 위해 만드는 것이 무엇 기관

    1. 방법이 예약 테이블
    2. 를 생성하는 방법에 대한 갈 것이라고이
    3. 위의 테이블에있는 셀을 예약에 연결 하시겠습니까?

    미리 감사드립니다.

  • +0

    응답을 upvote 및 수락하는 방법을 배워야합니다. 이것은 우리가 시도하고 도와 줄 시간이 걸리는 stackoverflow에 사람들에게 감사를 표시하는 방법입니다 :) – webbiedave

    +0

    안녕하세요 Webbiedave, 의견에 감사드립니다. 각 답변이 너무 다르기 때문에 실제로이 문제를 공격하는 가장 좋은 방법을 모르고 있기 때문에 내 질문이 "답변"이라고 말할 수는 없습니다. 그 이유는 귀하의 답변 중 하나를 수락하지 않은 이유입니다. 선거에 관해서는, 당신이 그것을 할 수 있기 전에 25의 명성이 필요하다고 생각합니다. –

    +0

    걱정할 필요가 없습니다. 실제로, 당신은 upvoting을 위해 단지 15를 필요로합니다. 어느 쪽이든 지금은 25 이상을가집니다. – webbiedave

    답변

    2

    글쎄, 이건 일종의 표준이라고 생각하니?

    먼저 클럽 주체가 필요합니다. n은 법원에 :

    Club 1:n Court 
    

    그런 다음 1 인 예약 테이블이 각 클럽은 n 개의 법원을 가질 수

    Court 1:n Booking 
    

    경우 나도 몰라 두 번째 요구 사항이 있음을 의미 한 클럽 (클럽 엔티티에서 하나의 변수 인 경우) 또는 TimeIncrement 엔티티가있을 수있는 것보다 많을 경우

    테이블을 생성하는 것은 약간 까다로울 수 있습니다. 몇 분 정도 걸릴 수도있는 5-6 개의 솔루션이 있습니다.특정 법원과 시간에 대한 예약을 요구할 수 있고 컬렉션을 검색 할 수있는 특별한 물건을 사용할 수 있습니다. 우리는 매 시간마다 하나의 키가있는 배열을 구축 할 수 있으며 예약이없는 경우 null입니다. 각 법원에 대해 하나의 배열을 두 개 이상 배치하고 배열에서 모든 값을 읽습니다. 데이터를 재정렬하여 직접 사용할 수 있도록 쿼리를 작성할 수 있습니다. 아니면 특정 날짜와 시간에 법원에 예약을 요청할 수 있습니다. 하지만 개발자가 무엇인지 알아 보겠습니다 ... 주어진 요구 사항에 가장 적합한 것이 무엇인지 찾아 구현하십시오.

    1

    당신은 당신이 3 필요합니다 것 같습니다 내 머리 위로 떨어져이

    달성하기 위해 만드는 것이 무엇 기관 :

    가 어떻게 갈 것 예약, 클럽, 법원 이 예약 테이블 생성에 관하여

    테이블은 아마 id, court_id, start_time, end_time

    로 구성되어야합니다.

    어떻게 당신이 위에서 언급 한 바와 같이 예약

    에 위의 표에서 셀을 연결 것, 시작/종료 시간은 예약 테이블의 열입니다.

    +0

    시간이 증가함에 따라 예약 개체에 end_time이 필요하지 않습니다. 법원이 한 번 이상의 증분으로 예약 될 수있는 경우, 하나의 예약 객체로 표시해야하거나 한 객체가 실제로 하나의 시간 증분 인 경우 결정을 내릴 수 있습니다. – Sgoettschkes

    +0

    'end_time'을'duration'으로 바꿀 수 있습니다. 어느 쪽이든, 악마는 세부 사항에 있으며 더 많은 규칙을 구현해야하므로 디자인을 따라야합니다. 법원마다 많은 예약을 할 수 있으며 필요한 경우 시간 중복 방지를 코드 시행 할 수 있습니다. – webbiedave

    1

    데이터베이스의 데이터를 쿼리하고 json으로 변환하여 웹 사이트에 전달합니다. 프론트 엔드는 자바 스크립트로 테이블을 만들 수 있습니다.

    그 경우 json_encode으로 쉽게 json으로 변환 할 수있는 배열로 요청시 데이터를 반환하는 custom entityBookingTable을 만들 것입니다.

    그러면 테이블에 대한 사용자 지정 엔터티에 대한 DQL을 아직 공식화하지 않은 경우 필요한 엔터티를 자동으로 만들 수있는 단일 예약을 보여주는보다 자세한 페이지에 집중할 수 있습니다.