2014-06-23 2 views
0

두 테이블이 있으며 "다 대다"관계가 있습니다. 문제는 "이름"과 "상태"필드가 2 개 더있는 미러 테이블에 있습니다. 이름 필드 값은 "Youtube, DailyMotion 및 Mp4Upload"이고 상태 값은 "Subbed, Dubbed and Raw"입니다. 모든 링크마다이 가치를두고 복제가 발생합니다.어떻게 mysql 테이블에 반복되는 내용을 피하기 위해?

데모 :

거울 테이블

id name  link   status 
1 Mp4Upload Some link 1 Subbed 
2 Mp4Upload Some link 2 Subbed 
3 Mp4Upload Some link 3 Subbed 
4 Mp4Upload Some link 4 Raw 
5 Mp4Upload Some link 5 Raw 
6 YouTube Some link 6 Dubbed 
7 YouTube Some link 7 Dubbed 

내가 어떤 관계에 의해 반복 컨텐츠를 피할 수있는 방법이 있습니까? 위의 관계를 고려하십시오. 한 에피소드에는 많은 거울이 있고 많은 거울은 한 에피소드에 속합니다. 세 번째 테이블 피벗 테이블 episode_mirror를 사용하여이를 해결했습니다.

다른 테이블 내가 모두 감사 많은이 메이크업 감각을 희망

에피소드 테이블

id name   
1 First Episode 
2 Second Episode 
3 Third Episode 
4 Fourth Episode 

episode_mirror (피벗 테이블)

id episode_id mirror_id 
1 1   1 
2 1   2 
3 1   3 

에게 있습니다.

+0

enum 또는 다른 테이블 모두 int를 저장하는 가장 좋은 방법입니다. – exussum

+0

여러 개의 열에 대해 고유 한 인덱스를 사용해 보셨습니까? –

답변

0

이름과 상태 모두에 대한 표를 만듭니다.

status_id | status 
1 | subbed 
2 | dubbed 
3 | raw 

name_id | name 
1 | mp4upload 
2 | youtube 
3 | dailymotion 

그런 다음 첫 번째 테이블에, 그 새 테이블

id name_id  link   status_id 
1 1    Some link 1 1 
2 1    Some link 2 1 
3 1    Some link 3 1 
4 1    Some link 4 3 
5 1    Some link 5 3 
6 2    Some link 6 2 
7 2    Some link 7 2 

이 문자열을 반복에서 당신에게 공간과 반복의 큰 금액을 절약 할 수에 해당하는 ID를 사용합니다.

+0

예, Exussum도 같은 것을 언급했습니다. 감사 –

관련 문제