2010-05-05 1 views
2

필자는이 시나리오를 가지고 있으며 데이터베이스에서 모델링하는 방법을 정확히 모르겠습니다. 내가 모델로하려는 대상은 팀, 선수, 팀 플레이어 멤버십 및 주어진 팀의 각 플레이어에게 지불해야하는 수수료 목록입니다. 따라서 요금은 팀과 플레이어에 따라 다릅니다.스키마 디자인 : many to many many to many many one to many

그래서, 내 현재의 접근 방식은 다음과 같습니다

이 스키마에서
**teams** 
    id 
    name 

**players** 
    id 
    name 

**team_players** 
    id 
    player_id 
    team_id 

**team_player_fees** 
    id 
    team_players_id 
    amount 
    send_reminder_on 

Schema layout ERD

, team_playersteamsplayers에 대한 접합 테이블입니다. 테이블 team_player_fees에는 레코드에 속하는 레코드가 접합 테이블에 있습니다.

예를 들어, playerA는 teamA에 있으며 8 월과 2 월에 10 달러와 20 달러를 지불해야합니다. PlayerA도 teamB에 있으며 5 월과 6 월에 25 달러와 25 달러의 수수료가 부과됩니다. 각 플레이어/팀 조합은 서로 다른 수수료 집합을 가질 수 있습니다.

질문 :

  • 는 시나리오를 처리하기가 더 나은 방법이 있습니까?
  • 이 유형의 용어가 있습니까? (그래서 나는 그것을 할 수있다) 또는 유사한 구조를 가진 참고 문헌을 알고 있는가?

답변

0

따라서 완벽하게 훌륭한 디자인입니다. 접합 표 (AKA 교차 표)가 자체의 속성 (예 : joining_date)을 가지며 종속 표를 포함 할 수있는 경우는 드뭅니다. 내가 아는 한이 협약에는 특별한 이름이 없습니다.

이상하게 느껴질 수있는 이유 중 하나는 이러한 테이블이 논리적 데이터 모델에 존재하지 않는다는 것입니다. 그 단계에서 그들은 many-to-many 조인 표기법으로 표현됩니다. 접합 테이블을 구체화해야하는 물리적 모델에 도달 할 때만입니다. (물론 많은 사람들이 논리적 모델을 건너 뛰고 곧바로 물리적 모델로 이동합니다.)

+0

의견에 감사드립니다! 몇 가지 추가 열이있는 접합 테이블을 가졌지 만 종속 테이블이없는 접합 테이블을 사용하여 어딘가에 놓친 패턴이 없는지 확인하려고했습니다. – azymm