2

엔티티를 EF5와 3 자 관계로 매핑하는 가장 좋은 방법은 무엇입니까?삼항 관계를 모델링하는 방법

예를 들어

, 세 기관 :

Bike 
Crash 
Person 

그런 다음 삼항 관계를 알고있을 것입니다 :

  1. 자전거있는 사람은 X
  2. 위격이 관련된 사고로했다 자전거 X와 Y 사이의 충돌 X
  3. 어떤 충돌이 있었는가에 자전거 A의 사람 A

엔티티는 어떻게 작성해야합니까? 3 자 관계에 대한 새로운 엔터티를 만들 수있는 유일한 방법은 무엇입니까?

답변

2

옵션 1

수는 Crash ES없이 존재 Person-Bike 조합 (신에게 감사)이이 있다고 가정하자. 따라서 자전거가 특정 인원에 의해 소유되지 않는다고 가정 할 때 바이너리 관계 (교차점 표) PersonBike을 작성하여 사람과 자전거에게 FK를 부여 할 수 있습니다. EF는이 모델을 연관 클래스없이 다 - 대 - 다 관계로 처리 할 수 ​​있습니다.

그러면 나빠지는 사람 - 자전거 조합이 충돌에 연루 될 수 있습니다. 하나의 충돌로 2 가지 이상의 조합이있을 수 있습니다. 기본적으로 PersonBikesCrash에 넣을 수 있습니다. 이 경우 모델에 연관 클래스가 전혀 없을 것입니다. 그러나 CrashPersonBike 사이의 연결에 대해 자세히 알고 싶다면 충돌 사고가있는 사람은 CrashPersonBike에서 FK 's ~ CrashPersonBike 사이의 연결 표가 필요하며 연관성을 설명하는 하나 이상의 필드 (유죄 예/아니오 등)가 필요합니다. EF 모델에는 연관 클래스가 필요합니다. PersonBikes 모음 (테이블 자전거는 사람에 대한 FK를 가지고)하자 :

옵션 2

자전거 특정 소유자 (명)가 있습니다. 이제는 자전거가 사람을 결정하기 때문에 관련된 자전거에서만 충돌을 설명하기에 충분합니다. 따라서 CrashBikes 콜렉션을 가질 수 있습니다 (다시 말하면, 모델에 연관 클래스 없음). 또는 위에 설명 된 것과 같은 세부 사항을 포함하는 연관 클래스 CrashBike.

또는 추가 사항없이 모델의 연관 클래스 (CrashPersonBike)를 필요로하는 "true"로 삼항 관계 옵션 3.

모든 경우에 동일한 사람 (또는 옵션 1과 3의 자전거)이 한 번의 충돌에 연루되지 않도록 비즈니스 논리가 필요합니다. 옵션 1과 2는 충돌과 별도로 사람과 자전거의 조합을 설명 할 수 있다는 점에서 추가적인 이점이 있습니다. 그것이 1인지 2인지는 자전거 소유권에 달려 있습니다.

+0

Gert, 답장을 보내 주셔서 대단히 감사합니다.이제는 내 응용 분야에서 어떤 것이 더 잘 맞는지 생각할 문제가 될 것입니다. – polonskyg

+0

안녕하세요, 옵션 1 ('Crash'에'PersonBike's 컬렉션 포함)을 "모델에 연관 클래스 없음"으로 관리하는 방법을 이해하려고합니다. 'PersonBike'를 FK에'Crash'라고하면 PersonBike가 엔티티가되고'Person'과'Bike'의 직접적인 다 - 대다 관계를 잃게됩니다. 그걸 피할 ​​수있는 방법이 있습니까? 나는 EF4를 사용하고 있습니다. – nmclean

관련 문제