2017-11-29 21 views
0

다른 세 테이블에 대한 조인 테이블을 작성하는 가장 우아하고 유지 보수가되는 방법은 무엇입니까?세 테이블에 대한 테이블 코드 조인

학교, 학생, 교사, 모두 기본 키 (ID)가있는 3 개의 테이블이 있다고 가정 해 보겠습니다.

학생은 많은 학교에 다닐 수 있고 많은 교사가 있습니다. 교사는 많은 학교에서 가르 칠 수 있습니다. 교사는 다른 학교에서 같은 학생을 가르 칠 수 있습니다 (또는 아님).

나는 두 테이블 사이의 다 대다 관계 많은 기사를 볼 수 있지만,

어떤 제안을 환영합니다 ,, 세 개의 테이블을 처리 할 수있는 올바른 방법을 찾을 수 없습니다.

답변

1

먼저 내 의견 - 당신은 Course의 개념과 같은 것을 추가해야합니다. 어떤 Student 일부 Teacher이 어떤 특정 School에서 가르치는 것은 당신에게 알려주는 관계입니다. 좀 School 가르쳐의 모든 Teacher의 가르침은 모든 Student의 그 School에 참석 추측 때문에

나는 그것을 소개합니다.

  • Course 하나 School에 보관됩니다. School은 많은 Course을 가질 수 있습니다. (관계)

  • Course은 많은 Students를 갖는다. Studend은 많은 Course에 참석합니다. (관계)

  • Teacher 많은 것을 가르치십시오 Courses. Course에는 교사가 한 명 있습니다. Course - 이것으로 (관계)

Student 하나 개 ManyToMany 관계가 설정. CourseTeacher & School과의 관계가 ManyToOne입니다.

+0

새 테이블을 추가하는 것이 좋습니다. 내가 제안하는대로 중간 테이블을 추가하려고합니다. – tjago

+0

예 실제로 세 테이블을 조인하는 조인 테이블입니다. 그냥 내 대답의 요점은 새로운 테이블을 소개하지 않습니다 (그것은 이미 귀하의 질문에)하지만 그 필요성이 결합 뒤에 개념이 무엇인지 생각할 필요가있다. 조인 테이블에서 어떤 관계가 설명됩니까? 가장 적절하게 그것은'코스 (course) '와 같은 것으로, 그것은 또한 자체의'엔티티 (entity)'입니다. – pirho

1

나는 이러한 종류의 관계에 도움이되는 ORM을 사용합니다. 당신의 관계는 다 대 다 관계라고 생각합니다.

다음은 원하는 내용과 일치하는 것을 보여주는 기사입니다.

Describing Relationships: Django's ManyToMany Through

+0

Thx Richard, Java JPA와 관련된 다른 기사가 발견되었습니다. https://vladmihalcea.com/2017/07/26/the-best-way-to-map-a-many-to-many-association-with- 엑스트라 - 컬럼 - 사용 - jpa 및 최대 절전 모드 / – tjago