서론

데이터베이스 관리에서 데이터가 정규화되고 올바르게 구조화되는 것은 데이터 무결성과 유용성을 유지하는 데 매우 중요합니다. 때로는 데이터 포인트 간의 필요한 관계가 부족한 테이블을 만나 데이터베이스 구조가 어지러울 수 있습니다. 일반적인 시나리오는 고객 위치를 기록하는 테이블이 회사 이름을 위한 전용 필드 없이 존재하는 경우입니다.

이 글은 “위치 이름” 필드가 하나뿐인 약 18,000개의 행으로 구성된 테이블을 handed 받은 특정 예제를 다루고자 합니다. 여기서는 같은 회사가 운영하는 여러 위치에 대해 적절한 회사 지명이 없기 때문에 데이터 검색 및 분석에 어려움을 초래할 수 있습니다.

이번 블로그에서는 이러한 테이블을 정규화하고, 고유한 위치 설명에 따라 회사 목록을 생성하며, 데이터베이스의 효율성을 다시 높이는 체계적인 접근 방식을 탐구해 보겠습니다.

현재 테이블 구조 이해하기

기존 위치 테이블은 간단한 구조를 가지고 있습니다:

 ID  Location_Name     
 1   TownShop#1        
 2   Town Shop - Loc 2 
 3   The Town Shop     
 4   TTS - Someplace   
 5   Town Shop,the 3   
 6   Toen Shop4        

우리가 목표로 하는 것은 각 위치에 대해 “Company_ID"를 포함하는 보다 구조화된 출력입니다:

 ID  Company_ID   Location_Name     
 1   1            Town Shop#1       
 2   1            Town Shop - Loc 2 
 3   1            The Town Shop     
 4   1            TTS - Someplace   
 5   1            Town Shop,the 3   
 6   1            Toen Shop4        

이 위치 테이블과 함께 별도의 회사 테이블도 생성할 것입니다:

 Company_ID  Company_Name  
 1           The Town Shop 

회사 이름 생성하기

기존 회사 이름 목록이 없기 때문에 제공된 위치 이름에서 생성해야 합니다. 이를 수행하기 위한 단계별 접근 방식은 다음과 같습니다:

단계 1: 후보 회사 이름 식별

  • 위치 이름 추출: 주로 알파벳 문자로 구성된 위치 이름 목록을 만듭니다.
  • 정규 표현식 사용: 숫자나 특수 문자가 포함된 불필요한 항목을 필터링하기 위해 정규 표현식을 사용하여 데이터를 파싱합니다.

단계 2: 수동 검토

  • 목록 정렬: 필터링된 위치 이름 목록을 알파벳 순으로 정렬합니다.
  • 회사 이름 선택: 정렬된 목록을 수동으로 검토하여 어떤 위치가 가장 잘 대표하는 회사 이름이 되는지 결정합니다.

단계 3: 매칭 점수

  • 매칭을 위한 소프트웨어 알고리즘: 레벤슈타인 거리 또는 유사한 문자열 비교 알고리즘을 활용하여 각 잠재적 회사 이름과 여러 위치 이름 간의 유사성을 평가합니다.
  • 점수 시스템 생성: 회사 이름, 위치 이름 및 해당 매칭 점수를 반영하는 새 테이블에 이러한 결과를 저장합니다.

단계 4: 임계값 적용

  • 매칭 필터링: 임계점 점수를 정의하여, 이 사전 결정된 점수 이하의 매칭은 추가 고려에서 제외합니다.

단계 5: 수동 검증

  • 데이터 검토: 회사 이름, 위치 이름, 매칭 점수로 나열된 각 항목을 수동으로 확인하고, 각 회사의 진정으로 대표하는 이름을 최종 결정합니다.
  • 효율성을 위한 정리: 검토 프로세스를 간소화하고 작업 부담을 줄이기 위해 결과를 매칭 점수에 따라 정렬합니다.

결론

설명된 프로세스는 시간이 많이 걸리는 것처럼 보일 수 있지만, 약 18,000개의 레코드를 처리하는 복잡성을 관리하기 위해 자동화 및 알고리즘 기술을 활용합니다. 이 구조화된 접근 방식은 시간을 절약할 뿐만 아니라 데이터를 안정적으로 분류하는 데 도움을 주어 궁극적으로 데이터베이스 무결성과 향후 의미 있는 분석으로 이어집니다.

이 방법을 사용하면 낮은 무결성을 가진 테이블을 정규화하고 데이터베이스의 사용 가능성을 개선하는 것이 훨씬 수월해질 것입니다. 항상 기억하세요: 정규화의 목표는 데이터를 구조화하는 것뿐만 아니라 데이터 접근성과 신뢰성을 향상시키는 것입니다.