2014-01-13 2 views
0

사용자가 수집하는 것을 정리할 수있는 웹 페이지를 만들고 싶습니다. 모두가 다른 것을 수집 할 때마다 사용자가 자신의 데이터 모델을 만들도록하고 싶습니다 (엄격한 제한이 있음). 두 사람이 동일한 "사물"을 수집하는 경우 데이터 구조를 공유 할 수 있습니다. 제 아이디어는 모든 콜렉션에 ID를 부여하는 것이었고 콜렉션에 속한 모든 테이블에는 ID가 접두사로 사용됩니다.MySQL : 수백 개의 테이블 또는 하나의 큰 테이블?

Table: Collections 
ID | Collection 
1 | Poststamps 
2 | Barbie Dolls 

Table: 1_Base 
ID | StampValue | StampPic 
.... 

Table: 2_Base 
ID | EAN | Pic 
.... 

따라서 이론적으로 각 사용자가 자신의 컬렉션을 만들 수 있으므로 많은 테이블을 만들 것입니다. 또한 하나의 매우 큰 테이블과 매핑 테이블 만 사용할 수도 있습니다. 예 :

Table: Colleactions 
ID | Collection 
1 | Poststamps 
2 | Barbie Dolls 

Table: Mapping 
fkCollection | FieldName | Mapping 
1   | DoubleField1 | StampValue 
1   | BlobField1 | StampPic 
2   | StringField1 | EAN 
2   | BlobField1 | StampPic 

Table: CollectionData 
fkCollection | DoubleField1 | ... | DoubleField10 | StringField1 | ... | Stringfield10 | BlobField1 | ... 
1   | 30   |  |    |    |  |    | ...  | 
2   |    |  |    | 21312412414 |  |    | ...  | 

다른 아이디어?

도움 주셔서 감사합니다.

+0

당신이'VIEW'를 만들려고 했습니까? 또는'UNION'을 사용 하시겠습니까? –

+0

내가 아는 한 MySQL에서 작동하지 않는 유니온 ... 내가 틀렸다면 정정 해주세요. ...보기에 대해서는 모른다. –

+0

안녕하세요! 나는 아직 아무것도 테스트하지 않았다. 나는 프로젝트를 계획하고있다. 내가 아는 한 UNION은 작동하지 않습니다. VIEW는 솔루션 2, 큰 테이블 하나의 경우에 도움이됩니다. 옳은? – AlexWerz

답변

2

내가 볼 수 있듯이이 두 번째 시도는 가장 쉬운 방법 일 것입니다. 쿼리가 처리하기 쉽고 10 배 더 간단 해 지므로 프로그래밍 방식으로 테이블을 생성 할 필요가 없습니다. .. 제 제안은 약간 두 번째 아이디어를 수정하는 것이 될 것입니다 ... 단지 뭔가를 명확히하기 위해 BLOB는 쿼리 속도를 늦추므로 이미지로 소스 링크를 유지하도록 블록을 변경하고 있습니다.

표 : Collections

ID| Collection 
1 | Poststamps 
2 | Barbie Dolls 

테이블 : CollectionData

fkCollection | DataType | VALUE | FieldName | 
1   | Double  | 30  | StampID | 
1   | String  | London | StampName | 
1   | ImgSrc  | ../loc | StampPic | 
2   | String  | Ken | BarbieName | 
2   | ImgSrc  | ../loc | BarbiePic | 
+0

감사! 그것은 훌륭한 아이디어입니다. 이제 테이블을 정규화하고 fkDataType 및 fkFieldName을 가질 수 있습니다. 다시 한 번 감사드립니다! – AlexWerz

+0

항상 즐거움 :) –

관련 문제