2008-09-15 3 views
0

다음 시나리오 - 댄스 경연 결과를 저장하는 응용 프로그램에 가장 적합한 디자인을 찾으려고합니다.이 병렬 계층을 제거하는 방법

이벤트에는 여러 라운드가 포함되어 있으며 각 라운드에는 여러 개의 공연 (댄스 당 하나씩)이 포함되어 있습니다. 각 공연은 점수 표를받는 많은 심사 위원이 심사합니다.

최종 라운드 (6 개 이하의 댄스 커플 포함) 또는 정상 라운드 (6 개 이상의 댄스 커플 포함)의 두 가지 유형의 라운드가 있습니다. 각각은 약간 다른 행동과 데이터를 요구합니다.

최종 라운드의 경우, 각 점수표에는 최종 결과에 6 쌍의 순서 목록이 포함되어 있습니다.이 목록에는 판사가 1 위, 2 위 등을 표시합니다. 이러한 점수 표기는 "점수 표에는 6 점의 점수가 있습니다"라고합니다. 한 세트에 한 쌍의 숫자와 그 부부가있는 장소

정상적인 라운드의 경우, 각 점수 시트에는 일련의 M 쌍이 포함되어 있습니다 (M <). 대회 주최자가 결정). 나는이 회상을 "M 회고록"이라고 부른다. 부부 56

  • 2 위 : 부부 234
  • 3 위 : 부부 198
  • 리콜은 점수 또는 최종

    • 1 위 예 에 대한 순위

      포함되어 있지 않습니다 4 위 : 커플 98

    • 5 위 : 커플 3
    • 6 위 : 커플 125
    • has_one의 final_round - 다음 커플 54,67,201104187209,8,56,79,35,167,98

      이 내 순진 버전이

      이벤트로 구현 불러올 수 있습니다 정상적인 라운드 들어

    has_many의 final_performances final_performance - - has_many의 final_scoresheets final_scoresheet - has_many의의 대여

    0, has_many는

    final_round에게 라운드

    라운드 - has_many의 perforomances 성능 has_many의 scoresheets 스코어의 has_many이 필요한 것을 내가 중복을 싫어하지만

    을 회상, 그리고 고통이 될 것입니다 (원형, 성능 및 스코어에 대한) 여러 개의 병렬 계층 구조를 가지고 유지하다.

  • 답변

    2

    이것은 내가 가지고 있지 않은 약간의 도메인 지식을 필요로하지만 주문한 순서와 비 주문한 상황이 조금 관련이 없다고 생각됩니다. 각 커플에게 점수가있는 경우 최종 라운드의 순서는 각 커플의 점수에서 추론 할 수 있습니다. 맞습니까? 즉, 최종 라운드의 데이터 구조는 여러 라운드 (부부, 점수) 세트로 구성된 모든 다른 라운드의 데이터 구조와 같을 것입니다.

    0

    진행 상황에 대해 자세히 알지 못하면 명확한 조언을하기가 어렵습니다. 그러나 내가 읽은 것에 기초하여 병렬 계층 구조가 필요하지 않을 수도 있습니다.

    final_performance가 실제 성능과 다른 점은 분명하지 않습니다. 나는 그들이 다르게 득점했다고 생각한다. 이는 final_scoresheet의 차이점에 반영되어야합니다. 최종 결과가 포함되어야하기 때문에 final_performance를 다르게해야한다고 생각했을 것입니다. 어쩌면 당신은 하나의 성능 개체가 있고, 오히려 성능에 포함 된 scoresheets을하는 것보다 둥근 물체 준 공연 scoresheets 수 : 당신이 필요로하는 경우 나 또한 궁금해

    round.getPerformance(couple,dance).getScoresheet() 
    

    보다는

    round.getScoresheet(couple,dance) 
    

    을 배치 및 리콜을위한 객체 : 점수 시트에서 검색된 커플 목록 일 수 있습니까? 그렇다면 세 가지 클래스를 제거했습니다.

    상속보다 계승이 바람직합니다.

    관련 문제