2016-09-27 3 views
2

저는 MySQL을 처음 사용하기는했지만 많은 양의 클라이언트 데이터를 저장할 데이터베이스를 생성해야했습니다.MySQL에 CSV 가져 오기 및

내가 겪고있는 가장 큰 문제는 정규화를 중심으로 데이터를 가져와 정규화 규칙을 준수하는지 확인하는 것입니다. 분명히 나는 ​​모든 것을 하나의 커다란 테이블에 넣을 수 있었고 최선을 다할 수 있었지만 내가 읽은 모든 것에서는 길 아래로 상당한 문제가 발생할 것입니다.

어떻게 다음과 같은 형식

Unique Reg Num |Promotion |Advert |Characteristics 
---------------|-----------|--------|---------------- 
123   |20% Off |Aug 15 |Green;Blue;Purple 
124   |10% Off |Sep 14 |Purple;Red;Green 
125   |20% Off |Aug 15 |Green;Blue;Purple 
126   |10% Off |Sep 14 |Purple;Red;Green 

그래서 촉진 및 고라 열을 정규화해야하며,이 (실제적인 데이터 만 형태가 같은 단지 더 행과 더 많은 열 것)을 소요 데이터를 가져 오기에 착수한다 별도의 테이블 (이것은 내가 생각하는 다 대 일 관계입니다) 고유 등록 번호에 연결되었지만 주요 문제점은 특성 열을 정렬하는 방법입니다. (다른 질문에 필요한 경우 별도의 스레드를 설정합니다.)

구분 된 데이터가있는 특성 열과 같은 몇 개의 열이 있습니다. 이 열을 사용하여 데이터를 쿼리 할 수 ​​있도록이 데이터를 데이터베이스에 어떻게 업로드해야합니까?

각 구분 된 데이터의 행을 확장하여 고유 등록 번호 123에 대한 데이터 행을 3 줄 줄 수 있습니다 (위의 샘플 표를 사용). 그러나 여러 특성을 가진 다른 열이있는 경우 3 개 국가 (독일, 프랑스, ​​이탈리아)라고 말하면 행 수는 9 행의 데이터로 에 해당합니다. 고유 등록 번호 123.

큰 테이블을 만드는 것 이외에이 문제를 해결하기 시작하십시오.

MySQL Workbench와 함께 MySQL 6.3을 사용하고 있습니다. 현재 테스트를 위해 Windows 7에 설치되었지만 Windows Server 2012에서 실제 데이터베이스를 설정할 예정입니다.

관련 정보를 빠뜨린 경우 알려 주시면 질문을 업데이트하겠습니다.

미리 감사드립니다.

+0

'특성'데이터는 비정규 화 된 데이터의 전형입니다. CSV 형식이 아닌 데이터를 가져와야합니다. 조금 더 많은 일을하는 것은 나중에 갚을 것입니다. –

+0

안녕하세요, Tim, 의견에 감사드립니다. 조금 더 확장 할 수 있을까요? 나는 당신의 사고 방식을 완전히 따르고 있습니다. 더 많은 일을해야만 장기적으로 효과가있는 것이 있습니다. 이 데이터를 수집하는 것이 어떻게 더 효과적일까요/더 쉽게 작업 할 수 있습니까? – dctb13

+0

'Green; Blue; Purple' 대신 한 줄에 _three_ 레코드가 있어야합니다. 각 색상은 하나의 레코드에 나타납니다.이것조차도 이상적이지는 않지만 시작입니다. –

답변

1

데이터가 이상적으로 보입니다. ,

프로모션

Unique Reg Num |Promotion |Advert 
---------------|-----------|-------- 
123   |20% Off |Aug 15 
124   |10% Off |Sep 14 
125   |20% Off |Aug 15 
126   |10% Off |Sep 14 

특성

Unique Reg Num |Characteristic 
---------------|---------------- 
123   | Green 
123   | Blue 
123   | Purple 
124   | Purple 
124   | Red 
124   | Green 
125   | Green 
125   | Blue 
125   | Purple 
126   | Purple 
126   | Red 
126   | Green 

이 테이블이 상당히 정규화 : 나는 두 개의 테이블 특성에 대한 프로모션 정보를 하나의 다른에 샘플 테이블을 분할 할 아마 당신의 유스 케이스에 충분합니다. 귀하가 직면 한 도전은 해당 CSV 데이터를 없애는 것입니다.