2010-01-04 1 views
1

네 개의 클래스가 있습니다. 한 학생은 여러 과목을 가질 수 있습니다. 한 코스는 많은 학생들이 방문 할 수 있습니다.누가 관계를 수립해야합니까? 엔티티 또는 데이터 맵퍼? 학생 객체가 코스 객체와 관계를 가질 수</p> <p><strong><strong>이</strong> 및 <strong>StudentDataMapper</strong>을 CourseBase StudentBase</strong>, <strong>CourseDataMapper</strong></p> <p>:

ER 다이어그램에서 Student 엔티티에는 'courses'라는 속성이 있지만 코스는 학생에 대해 아무것도 모릅니다. 코스에는 "students"라는 속성이 없습니다.

관계 생성을 수행해야하는 클래스는 무엇입니까?

편집 : 이것은 시스템 레이어입니다! Business Logic Layer에서 개발자는 StudentBase 및 CourseBase의 하위 클래스로 Student 클래스와 Course 클래스를 만듭니다. 이러한 클래스를 만드는 개발자는 자신의 비즈니스 로직 코드를 제외하고는 해당 코드를 볼 수 없습니다.

답변

5

아니요.

먼저 ERD가 변경되어야합니다. 당신이 묘사 한 것은 다 대다 관계입니다 (한 코스는 많은 학생들과 많은 코스를 가질 수 있습니다). 따라서 학생에게는 courses 속성이 없어야하지만 대신 학생 과정 실체가 있어야합니다.

그런 다음 묻는 것 (관계 유지)을 수행하는 StudentCourseDataMapper 클래스가 있어야하며 StudentDataMapper와 CourseDataMapper가이를 인식하고 사용해야합니다.

0

귀하의 질문을 이해하면 100 % 확신 할 수 없습니다.

예를 들어, NHibernate (객체 관계형 매퍼)는 가능한 한 비즈니스 코드에 영향을 미치려고하지 않습니다.

따라서 ORM은 을 (를) (으)로 관리하면 안됩니다. 그것은 저장할 때와 데이터베이스에서 로딩 할 때 원래 상태로 다시 만들어야합니다.

코스가 학생에 대해 아무것도 모르는 경우 관계를 관리 할 수 ​​없습니다.

그래서 상황에 대한 설명에 따라 학생은 관계를 관리 할 수있는 가장 자연스러운 장소입니다.

+0

죄송합니다. 놓친 상품입니다. 업데이트 됨. 나는 귀하의 학생 가정에 동의합니다. 말이된다! – openfrog

0

관계를 관리해야하는 사용자의 질문에 대답하려면 학생, 코스 또는 둘 다가 될 수 있습니다.

어떻게 이러한 클래스가 사용되는 것으로 보입니까? 코스 관점에서 항상 사용되는 경우 관계를 관리하는 students 속성을 추가해야합니다. 반대로 학생들의 관점에서 항상 사용된다면 분명히 그것이 사는 곳이됩니다.

그러나 두 가지 모두에 해당되는 데이터 유형이 주어질 때 가장 가능성있는 대답 인 것처럼 보이는 경우 두 가지 모두에 속합니다.