데이터베이스에 이벤트 테이블과 테이블에 뮤지션을 저장하는 테이블이 있습니다. 내가하려고하는 일은 뮤지션들이 어떤 이벤트에서 연주했는지 추적하는 것입니다. 가장 효율적인 방법은 무엇입니까? event_id
을 뮤지션 테이블에 넣고 뮤지션이 참여하는 각 이벤트에 대해 새 레코드를 만들어야합니까? event_id
과 musician_id
이있는 별도의 조회 테이블을 만들고 특정 이벤트에서 연주 한 뮤지션을 얻으 려 할 때 테이블에 가입해야합니까? 문제는 현재 약 50 명의 뮤지션이 있으며 연간 50 건의 이벤트를 재생할 수 있다는 것입니다. 이는 중복 된 데이터가 많으며 이벤트가 진행될 확률이 높으며 그 수가 100 명으로 늘어날 수도 있습니다. 어떤 아이디어?데이터베이스 테이블 디자인
답변
나는 당신을 위해 테이블을 배치하지 않지만 기본 구조는 다음과 같습니다
musicians
- 이벤트에 대한 자세한 내용 (예 : 50 명 기록 - 예술가에 대한 자세한
events
(예 : 50 개 기록을.))
musicians_events
- 예술가가
공동 테이블은 단순히 두 필드로 구성 할에서 연주 이벤트 나열 공동 테이블 : 음악가 ID 이벤트 ID, 다시 각각의 부모 테이블에 모두있는 외래 키.
모든 이벤트에서 모든 뮤지션이 연주하면 지정된 데이터 크기로 50 개의 음악 레코드, 50 개의 이벤트 레코드 및 잠재적으로 2,500 개의 음악 이벤트 레코드가 생성됩니다.
뮤지션과 이벤트 간의 다 대다 관계를 매핑하려면 별도의 찾아보기 테이블 (접합 테이블이라고도 함)이 필요합니다.
테이블에는 uniqueID, MusicianID 및 EventID의 세 필드가 필요합니다.
조인 테이블을 사용해야합니다. 그것이 event_id
및 musician_id
테이블을 가지고있는 곳에서 설명한 옵션입니다.
테이블에 적절한 인덱스를 넣으면 잘 수행됩니다.
이벤트 테이블과의 관계가 많은 테이블 음악가를 만들겠다. 의 당신이라는 관계 표를 가지고 것을 의미
은의에 포함 된 MusiciantEvent 말을하자 모두 기본 키 (MusiciantID과에서 EventId)이 당신이 테이블을 가져야한다 전형적인 다 대다 관계 같은 소리 음악가, 이벤트를위한 또 다른 표 그리고 그들 사이의 관계를 저장하는 세 번째 표가 있습니다. 그 테이블에는 음악가와 이벤트 아이디가있을거야.
이벤트에 여러 명의 뮤지션이있을 수있는 경우이를 모델링하는 올바른 방법은 제안한 두 번째 옵션입니다. musician_id와 event_id를 사용하여 두 번째 테이블을 만들어 두 번째 테이블을 만들면됩니다.
데이터 양 - 50 x 50은 2,500 개의 레코드로, MySQL에서는 아무 것도 아닙니다. 적절한 인덱싱을 통해 MySQL은 테이블에서 수백만 레코드를 쉽게 처리 할 수 있습니다.
이 분명히 m입니다 : n 또는 다 대다은 상황에 가입하십시오 musician_id
와
musician
테이블 : 당신은 세 개의 테이블이 필요합니다.event
테이블이event_id
인 테이블.두 필드가 기본 키인
musician_id
및event_id
인 접합 테이블 (musician_events
).
논리적으로는 다 대다 관계입니다. 실제로 musician
과 musician_events
사이의 일대 다 관계와 event
과 musician_events
사이의 일대 다 관계가 있습니다.
뮤지션이 많은 이벤트에 참여할 수 있고 이벤트에 많은 뮤지션이 참여할 수 있기 때문입니다. 그래서 이것은 단지 샘플 그런 자연
**tbl_Event**
Event_ID
Event_Name
Event_Location
**tbl_Musician**
musician_id
musician_firstName
musician_lastname
***tbl_join***
event_ID
musician_ID
뭔가처럼
musician musician_events event
+-----------------+ +--------------------+
| PK musician_id |--->| PK FK musician_id | +--------------+
| name | | PK FK event_id |<---| PK event_id |
+-----------------+ +--------------------+ | date |
+--------------+
나는 이벤트에 대한 테이블을 만들 것입니다. 나는 전문가는 아니지만 어디서든 중복 데이터를 많이 보게되면 피해야합니다.
- 1. 데이터베이스 테이블 디자인 컨트롤
- 2. 데이터베이스 테이블 디자인
- 3. 데이터베이스 디자인 + 테이블 ID
- 4. 데이터베이스 테이블 디자인 문제
- 5. 데이터베이스 디자인 : 좋아하는 테이블?
- 6. Mysql 데이터베이스 테이블 디자인
- 7. 이미지 테이블 용 데이터베이스 디자인
- 8. 데이터베이스 디자인, 테이블 설정 방법
- 9. 데이터베이스 디자인 및 대형 테이블?
- 10. 데이터베이스 디자인 : 어카운팅 트랜잭션 테이블
- 11. 레일상의 기본 데이터베이스 디자인 테이블
- 12. 예약 작업을위한 데이터베이스 테이블 디자인
- 13. 데이터베이스 디자인 많은 테이블 VS 일반 테이블?
- 14. 데이터베이스 디자인 한 테이블 또는 여러 테이블/
- 15. 데이터베이스 디자인
- 16. 친구 목록 : 관계형 데이터베이스 테이블 디자인
- 17. 비공개 메시지 알림 - 데이터베이스 테이블 디자인
- 18. T-SQL 데이터베이스 디자인 및 테이블
- 19. CRM을위한 데이터베이스 디자인 특정 시나리오를위한 사용자 테이블
- 20. MySQL 데이터베이스 디자인 : 사용자 및 이벤트 테이블
- 21. 데이터베이스 테이블 열 데이터 형식 디자인 질문
- 22. 데이터베이스 테이블 디자인 - 내 필드가 정확합니까?
- 23. 데이터베이스 디자인
- 24. 데이터베이스 디자인
- 25. 데이터베이스 디자인
- 26. 데이터베이스 디자인 부모 자식 테이블 대 여러 테이블
- 27. 큰 테이블 또는 여러 개의 개별 테이블? (데이터베이스 디자인 질문)
- 28. 데이터베이스 디자인 질문
- 29. 게시판 데이터베이스 디자인
- 30. 데이터베이스 디자인 101
위대한, 고마워, 그게 내가 알아야 할 필요가있어! – user1143767
더하기, musicians_events (음악가 ID 및 이벤트 ID)에 UNIQUE 다중 열 인덱스를 만들 수 있습니다. 음악가 및/또는 이벤트의 수를 늘리면 앞으로 더 나은 성능을 보장 할 것입니다! – mgm