2010-08-23 6 views
2

나는 몇몇 이벤트를 관리하는 데 도움이되는 스포츠 클럽을위한 stat 유지를 위해 데이터베이스에서 작업하고 있습니다. 경쟁자 이름, 분류, 범주 등을 추적 할 수있는 부분을 가지고 있다고 생각합니다. 주요 테이블, 여러 개의 조회 테이블 및 관련된 다 대 다 관계를 다루는 몇 개의 브리지 테이블을 사용하여 알아 냈습니다.부모 - 자식 관계 : 여러 테이블 대 자체 조연

나는 다음 부분을 위해 스케치 된 모델을 가지고 있지만, 나는 그것을 올바르게하고 있다고 완전히 편안하지가 않다. 나는 우리가 종이 및/또는 많은 수작업을하고있는 스프레드 시트에서 어떻게하는지 알지만, 나는 그것을 테이블과 관계로 바르게 번역하고 있다고 100 % 확신하지는 못합니다. 더 조금

Tournament 
- Day 1 
    - Match 1 (Fired Match) 
    - Match 2 (Fired Match) 
    - Match 3 (Fired Match) 
    - Match 4 (Aggregate Match of 1,2,3) 

- Day 2 
    - Match 5 (Fired Match) 
    - Match 6 (Fired Match) 
    - Match 7 (Fired Match) 
    - Match 8 (Aggregate Match of 5,6,7) 

- Match 9 (Aggregate Match of 4,8) 
내가 깨진했다

일을하고 (사이 '점수', '단계', '일치'와 '토너먼트'에 대한 테이블이 있습니다

간단한 이벤트 구조는 다음과 같을 수 기타). 그 점수는 '경쟁자'및 '스테이지'테이블에 외래 키가있는 각 경쟁 업체에 대해 기록해야하는 원시 데이터입니다. '해고'와 '집계'경기가 아니라 하나 이상의 스테이지가 합계 된 경기로 접근하기로 결정했으며 토너먼트에 하나 이상의 경기 (집계)가있을 수 있습니다. 그들이 바로 내가 추측 손에서이 문제에 관련되지 않기 때문에

ERD

내가 다른 외부 키에 의해 표시 룩업 테이블의 일부를 남겨 "이 이것에 대해 갈 수있는 올바른 방법이다, 또는 성냥/단계 분리를 건너 뛰는 것이 더 낫겠습니까? 자체 조인을 통해 단일 테이블에서 성냥과 단계 사이의 부모 - 자식 관계를 다시 구현하는 방법이 있습니까?

+0

일치 항목이 하나 이상의 스테이지 집계 인 경우보기 또는 구체화 된보기가 더 적합하지 않습니까? –

답변

1

제대로 정규화 된 것처럼 보입니다. 유연한 계층 적 구조를 제공합니다.

의도 한대로 토너먼트에 하나 이상의 경기가 있고 경기에 하나 이상의 경기가 있습니다 ... 또는 더 많은 점에서 각 부모는 항상 숫자가 0보다 크고 변할 수있는 다양한 수의 자녀를두고 있습니다 인스턴스를 인스턴스로. 그렇지 않은 경우 부모 (토너먼트 또는 경기)의 자녀 수가 항상 같은 경우 데이터를 비정규 화하는 데 약간의 이점이있을 수 있지만 (평일의 경우 7 열의 테이블과 같음) 장기적으로 어색함을 증명하십시오.

계층 구조의 여러 수준이 서로 다른 특성을 포함하므로 자체 조인이있는 단일 테이블을 확실히 작성하지 않습니다. 예를 들어 "샷"은 스테이지의 일부이며 경기의 일부가 아니므로 경기 테이블에 포함해서는 안됩니다.

+0

'일반적으로'토너먼트에는 한 가지 전반적인 '매치 우승자'가 있지만 기술적 인 이유로 인해 변경 될 수 있습니다 - 서로 다른 그룹이 나란히 경쟁하는 종이에 별도의 '토너먼트'가 있어야합니다), 또는 하나의 토너먼트가 각 그룹에 하나씩 여러 개의 큰 agg 경기를 가질 수있게하십시오. 샷은 무대 또는 합계의 일부가 될 수 있지만, 아마 하위 스테이지의 총합에서 샷을 계산하는 것이 더 쉬울 것입니다 ... – memilanuk

관련 문제