2011-08-05 7 views
1

나는 약 3000 개의 행과 40 개의 열과 함께 엑셀의 큰 데이터를 가지고있다. 나는 CSV로 변환하고 "데이터를 로컬 infile을로드"를 사용하여 SQL에서 6 테이블에 데이터를 버렸습니다 문제는 40 컬럼 중 하나의 컬럼 (속성)이 유일하며 다른 모든 컬럼이 널이거나 고유하지 않습니다. 지금은 모든 테이블에 기본 키를 하나만 사용했습니다. 하지만 앞으로는 효율적이지 않을 것이라고 생각합니다. 누구나이 대안을 제안 할 수 있습니까? 이 단지 1 논리적 후보 키이며, 모든 열은, 그 키에 직접 관련이 후 모든해야하는 경우SQL - 고유 한 특성이 하나뿐입니다. 여러 테이블에 대해 기본 키를 지정해야합니까?

감사합니다, 알렉스

답변

0

당신은 당신이 1의 6 개 테이블 대신을 만든 이유에 대해 다시 생각해야 1 개의 테이블에 있어야합니다.

database normalization에서 검색하는 일부 Google 검색을 통해 데이터베이스 디자인을 더 잘 이해할 수 있습니다.

+0

제안 해 주셔서 감사합니다.하지만 약 40 개의 열로 구성된 데이터를 분할하려고했습니다. 나는 그것들의 유사성에 기초하여 테이블을 그룹화하고 싶었습니다 ... 이것을 수행하는 다른 방법이 있습니까 아니면 단일 테이블에있는 것만 있습니까? – Matt

+0

내가 말했듯이, 나는 당신의 특정 데이터 세트를 처리하는 방법을 결정하기 위해 데이터베이스 정규화에 대한 연구를 강력히 제안한다. –

0

우선, 이는 많은 데이터와 관련이있는 것처럼 보입니다. 그것의 소리에서, 분야의 수 및 유일한 속성의 낮은 수를 고려하면 아마 많은 중복이있다. 나는 당신이 먼저 필요하지 않은 것을 꺼내어 최대한 많은 중복 된 항목을 제거하려고 노력할 것을 제안합니다. 좋은 정보를 제공하고 이메일 필드뿐만 아니라 동일한 정보가 될 수있는 인스턴트 메시징과 같은 정보가 있으면 알려주세요. 이 경우 전자 메일 필드 만 있으면 결합 할 수 있습니다.

일단 완료되면 데이터베이스에서 PK로 원하는 모든 것을 편집하여 각 테이블의 PRIMARY를 읽어야합니다. 오버 헤드를 위해 데이터베이스 공간을 많이 절약 할 수 있습니다.

+0

3000 행은 거의 데이터가 많지 않다. –

+0

고마워, 중복은 많지 않지만, 2 또는 3 개의 열을 하나로 병합 할 수있다. . 나는 여전히 문제가 계속되고 열을 병합하더라도 많은 null 값을 갖는다 고 생각합니다 .... 하나의 테이블에 넣는 것이 낫습니다. – Matt

+0

예, 테이블 수가 적어집니다. 아래에 제안 된 것처럼 정규화를 살펴보십시오. 그것은 먼 길을 갈거야. – Paolo

관련 문제