2010-07-13 2 views
0

현재 데이터베이스 설계 중입니다.MySQL에서 두 테이블간에 집합을 공유 할 수 있습니까?

20,000 개가 넘는 레코드가있는 테이블이 있는데, 레코드가 4 개 있습니다. 나는 또한 (동일한 세트에서 1의 값) 동일한 집합을 통해 열거있을 것이다 다른 테이블 (100 개 + 기록) 현재의

예를 만드는 중이라서 :

tbl1       tbl2 
ID | Letters | Stuff  ID | Letter | Stuff 
----------------------  --------------------- 
0 | A,B,C,D | ...   0 | D  | ... 
1 | A,B,C,D |    1 | C  | 
2 | C,D  |    2 | A  | 
3 | B,C,D |    3 | D  | 
... 

가 있는지 확인하는 방법이 있나요 그 세트는 동일하고 열거 형과 세트를 비교할 수 있습니까?

데이터가 변경 될 때 더 많은 옵션을 세트에 추가해야 할 수도 있습니다. 그 세트에 대한 별도의 테이블이 필요하고, 그런 다음 연관 테이블이 필요합니까? 난 그냥 말의

예 :

tbl1    tbl2    
ID | Stuff   ID | LetterID | Stuff 
------------  ------------------------ 
0 | ...   0 | 3  | ... 
1 |    1 | 2  | 
2 |    2 | 0  | 
3 |    3 | 3  | 
... 

tblLetters   tblLetters1 (Association table) 
ID | Letter   tbl1Id | letterId 
------------  ------------------ 
0 | A    0  | 0 
1 | B    0  | 1 
2 | C    0  | 2 
3 | D    0  | 3 
...?    ... 

이 나의 유일한 주요 관심사는 연관 테이블의 크기가 TBL1의 행 대부분의 4 개 요소를해야합니다 (너무 큰 것입니다 여부 세트).

감사합니다. 미안하지만 문제를 잘 설명하지 못했습니다. 나는 SQL에 관해서는 매우 초록색이다.

답변

1

두 번째 해결 방법은 정상적으로 처리되지만 1 열의 쉼표로 구분 된 값은 일반적으로 피해야합니다. 당신은 ID가 필요하지 않을 수도 있습니다, 그리고 나는 열에 대한 ENUM 유형을 삭제하고 tblLetters에서 편지의 실제 타입/열 정의를 사용하십시오 :

tbl1    tbl2    
ID | Stuff   ID | Letter | Stuff 
------------  ------------------------ 
0 | ...   0 | D  | ... 
1 |    1 | C  | 
2 |    2 | A  | 
3 |    3 | D  | 

tblLetters   tblLetters1 (Association table) 
Letter    tbl1Id | letter 
------------  ------------------ 
A     0  | A 
B     0  | B 
C     0  | C 
D     0  | D 

는 아마도 tblLetters1.letter &에 FOREIGN KEY 제약 조건을 추가 tbl2.tbl2.tbl2.tbl2.tbl2.tbl2.tbl2.tbl.

그리고 총 80K 행이 표준으로하지 많은, 그것은 그래서에서 나는 당신의 질문에 자상을거야

+0

대단원! 팁 주셔서 감사! – KLee1

0

....
을 (비록 적절한 인덱스를 사용) 괜찮을 내가 이해하는 한, 테이블에 열거 형 및 필드를 "옵션"또는 "변수"가 있는지 확인하기 만하면됩니다.

은 무엇 당신이 할 수있는 것은 : 당신이 볼 수하는

Create table tbl1 
(id int unsigned, 
stuff set('A','B','C','D'), 
.....) 

Show create table tbl2; 
Create table tbl2 
(id int unsigned, 
stuff enum('A','B','C','D'), 
.....) 

모든 당신이 필요, 기술적으로, 두 테이블이 같은 변수가 있는지 확인되는입니다

Show create table tbl1; 

. ALTER TABLE을 수행 할 때 스크립트로이를 수행하거나 알 수 있습니다.

관련 문제