2009-07-22 3 views
4

나는 80 개의 열과 1 천만 개의 행으로 이루어진 거대한 테이블로 가득 찬 mySQL 데이터베이스를 가지고 있습니다. 데이터에 불일치가있을 수 있습니다.mySQL 데이터베이스의 자동화 된 표준화 - 어떻게 수행합니까?

자동화되고 효율적인 방법으로 데이터베이스를 정규화하고 싶습니다.

나는 java/C++/...을 사용하여 할 수 있었지만 데이터베이스 내에서 가능한 한 많이하고 싶습니다. 나는 데이터베이스 외부의 모든 작업이 작업 속도를 크게 떨어 뜨릴 것이라고 생각합니다.

어떻게해야합니까? 좋은 리소스/튜토리얼은 무엇부터 시작합니까?

나는 이 아니며은 정상화가 무엇인지에 대한 힌트를 찾고 있습니다.

답변

2

지저분한 데이터를 정리할 때 나는 사용자 정의 된 mysql 함수를 만들어서 일반적인 데이터 제거 작업을 수행하는 것을 좋아한다. 그런 식으로 나중에 다시 사용할 수있다. 이 방법으로 접근하면 수정할 수 있거나없이 사용할 수있는 기존의 udf를 찾을 수 있는지 알 수 있습니다 ... 예를 들어 mysqludf.org

+0

고맙습니다. mysqludf는 내가 찾는 리소스입니다. – CL23

4

나는 당신이 그것을 자동화 할 수있는 방법을 생각할 수 없다. 원하는 테이블을 작성한 다음 각 데이터를 수동 쿼리로 교체해야합니다.

예를 들어

,
INSERT INTO contact 
SELECT DISTINCT first_name, last_name, phone 
FROM massive_table; 

는 당신은 거대한 테이블에서 열을 삭제하고 contact_id 열로 대체 할 수있다.

일대 다 테이블로 이동하는 행을 가져올 때 비슷한 프로세스가 있습니다.

3

'좋아요'엔티티를 식별하고 별도의 탭으로 나누기 위해 열을 연구해야합니다. 기껏해야 자동 도구는 열의 일부에 대해 동일한 값을 가진 행 그룹을 식별 할 수 있지만 데이터를 이해하는 사람은 해당 값이 실제로 별개의 엔터티에 속하는지 여부를 결정해야합니다.

예를 들어 귀하의 열이 이름, 성, 주소, 도시, 주, 우편 번호라고 가정 해 보겠습니다. 자동화 된 도구는 동일한 성, 주소, 도시, 주 및 우편 번호를 가진 동일한 패밀리의 구성원이었던 사람들의 행을 식별 할 수 있으며 이러한 5 개의 열이 엔티티를 나타내는 것으로 잘못 판단 할 수 있습니다.

내가 무엇을 의미하는지보기 ZIP,,

이름

과 다른 테이블

ID, 성, 주소,시, 주를 ReferenceID : 그런 다음 최대 테이블을 나눌 수 있는가?

관련 문제