2012-04-10 2 views
1

내 응용 프로그램에 대한 엔티티 간의 관계를 모델링하는 데 기본적인 설계 질문이 있습니다. Apple doc states 반전 관계는 데이터베이스 무결성에 매우 중요합니다. 나는 다음과 같은 관계핵심 데이터 모델 디자인 - 반비례 관계

Team <--->> Player 
Player <--->> Team 

위의 관계는 팀은 많은 선수가 수 있으며, 플레이어는 여러 팀에 속할 수, 간단 세 단체, 팀, 선수, 일치가있다.

Match: 
homeTeam <---> Team 
awayTeam <---> Team 

내 경기 엔티티에서 homeTeam과 awayTeam이라는 두 가지 속성이 있습니다. 현재 대상은 반비례 관계가없는 팀으로 설정됩니다. 응용 프로그램이 작동하지만 나는 팀과의 경기에 반대의 관계가 없다는 사실을 좋아하지 않습니다. 그래서 팀 엔티티에 대해 역 관계를 설정하는 가장 좋은 방법은 무엇인지 파악하려고합니다. 또한 팀이 많은 경기를 할 수 있기 때문에 팀과 일치하는 일대일 반비례 관계를 설정할 수 없습니다. 그래서, 저의 초기 생각은 팀에서 성냥을 일치시킬 수 있고 그들에게 경기와 반대되는 관계를 만들 수 있다는 것입니다. 이 시나리오가 효과가 있습니까? 또는 homeMatches, awayMatches with Team과 같은 두 개의 역 관계 속성을 만들어야합니까?

아무쪼록 고맙습니다.

Javid는

답변

0

나는 당신의 homeMatches이 awayMatches 아이디어가 잘 작동한다고 생각합니다.

나에게 뛰어든 또 다른 한 가지는 플레이어가 둘 이상의 팀에 속한 관계입니다. 한 번에 여러 팀이 사실이 아니어야한다고 가정합니다. 한 팀의 한 선수의 시간을 설명하는 중간 테이블 (RosterEntry라고도 함)을 원할 수도 있습니다. Team과 Player는 RosterEntry를 사용하여 일대 다 (one-to-many)가됩니다.

+0

사실 당신은 방금 아주 좋은 지적을했습니다. 나는 플레이어가 서로 경쟁하는 두 팀에서 끝나는이 혼란을 처리하지 않는다는 것을 깨달았습니다. 그러나, 나는 그들이 서로 놀지 않는 한 선수가 두 팀에 존재한다면 문제가되지 않아야한다고 생각한다. 귀하의 의견에 감사드립니다. – user320587

1

팀에서 homeMatches, awayMatches와 같은 두 개의 반대 관계 속성을 만들어야합니까?

넵. 역관계는 원래 관계를 반영해야합니다.

왜, 당신은 Match에 모두 homeTeamawayTeam의 역으로 ​​설정 Teammatches 관계가 있다면 무슨 일이 일어날 지 생각 이해하기 : 그것은 관계의 한 방향에 좋아 보이는 - allStarGame.awayTeam = redTeam를 호출하면 aMatch을 추가해야합니다 redTeammatches 관계. 하지만 다른 방법으로하면 어떻게됩니까? 즉, [redTeam addMatchesObject:allStarGame]으로 전화하면 allStarGame의 관계 중 어떤 것이 사용됩니까? 그것은 정의되어 있지 않습니다 ... 그래서 각 관계에 뚜렷한 반대가 필요합니다.

+0

의견을 보내 주셔서 감사합니다. 말된다. – user320587