2012-04-22 2 views
2

MEETING이라는 테이블이있는 데이터베이스를 만들려고합니다.배열 보관

실제 사례와 마찬가지로 meeting의 인스턴스는 다양한 인원을 포함 할 수 있습니다.

그래서 meeting1 ( 회의 내부는) user1, user2, user3을 포함 할 수 있습니다.

하지만 meetings2 (다시 MEETING 내부) user1, user4, user6, user7을 포함 할 수있다.

그런 시나리오를 어떻게 처리할까요? 배열을 만드는 것을 생각하고 있었지만 어떻게해야할지 모르겠습니다.

답변

4

조인 테이블을 사용합니다. MEETING, USER 및 조인 테이블 (MEETING_USER 또는 이와 비슷한 이름이 될 수 있음)이라는 세 개의 테이블이 있습니다. 사용자 테이블에는 각 사용자에 대한 정보 (최소한 식별자와 사용자 이름)가 포함됩니다. 각 회의에는 고유 한 ID도 있습니다. 그런 다음 조인 테이블에는 형식의 행이 있으며 회의의 각 사용자에 대한 새로운 항목이 있습니다. 이것은 각 모임이 많은 사용자를 가질 수 있고 각 사용자가 많은 모임에 참석할 수 있기 때문에 다 대 다 관계라고 불리는 것을 용이하게합니다.

MySQL의 일부 엔진에서는 "외래 키 매핑"을 추가 할 수 있으므로 사용자가 참석 한 모든 모임이나 모임의 모든 사용자를 검색 할 때 매우 빠르게 실행됩니다. 다른 데이터베이스 서버 (MSSQL 등)도 이런 종류의 것을 지원합니다.

예 :

  • 회의 1 ID를 가지고 123
  • 회의 2 ID를 가지고 345
  • 사용자 (1)는 ID를 갖는 3
  • 2 사용자 ID 4
  • 사용자 (3)는 ID 5
  • 를 있음

회의 1에 사용자 1과 사용자 3이 참석 한 경우, 조인 테이블에는 followin 어딘가에서 g 항목 :

  • (123), 3 (회의 1, 사용자 1)
  • (123), 5 (회의 1, 사용자 3)

회의 (2)이 모두 참석했다 경우, 이것에 넣어 이러한 항목을 가질 것이다 테이블 조인

  • 345, 3 (2 회의, 사용자 1)
  • 345, 4 (2 회의, 사용자 2)
  • 345, 5 (회의 3, 사용자 3)
+0

그래서 각 회의에는 다른 테이블이 있습니까? – bluejamesbond

+1

아니요, 각 회의에는 MEETING 테이블에 항목이 있으며 각 사용자에게는 user 테이블에 항목이 있습니다. 사용자가 미팅에 참석하면 meeting_user 테이블에 항목이 작성됩니다. –

+0

이 작업을 수행 할 수있는 명령/쿼리가 있습니까? – bluejamesbond