데이터 베이스 기본 (8)

데이터의 1차 정규화는 1개의 셀에 1개의 값만을 가지게 하기 위한 테이블의 설계입니다. 2차 정규화는 2개이상의 필드로 구성된 복수 기본키에서 일부 데이터가 1개의 기본키만 해당 될 때 발생하는 문제점이고 제가 제공한 데이터베이스에서는 해당 사항 자체가 없습니다. 여러 개의 필드로 구성된 기본키를 구성하지 않았으니까요. 그러나 3차 정규화는 고민 하셔야 하고 반드시 데이터베이스 설계에 들어가야 하는 영역 입니다. 3차 정규화는 데이터베이스의 제일 기본인 중복의 가능성을 설계 단계에서 최소화 하는 것 입니다.

 

  1. 데이터 3차 정규화 예제

    데이터의 3차 정규화를 말로 설명하면 한 테이블의 기본 키를 제외한 필드 들에서 하나의 필드가 다른 필드를 통해서 항상 같은 값을 얻는 다면 중복을 피하기 위해 다른 테이블에 저장 하라는 것 입니다. 다음 사진을 보면서 설명 하겠습니다.

     

    한 셀에 하나의 데이터만 입력 하였으므로 1차 정규화를 지켰고 기본키는 숫자를 사용 하였으므로 2차 정규화를 지켰습니다. 그러나 3차 정규화를 지키지 않은 예제 입니다.

     

    여기서 삼성의 공식 서비스 센터의 전화번호는 삼성이란 브랜드 명만 있으면 알아낼 수 있는 것 입니다. 즉 브랜드 명과 공식 서비스 센터는 완전히 연결되어 있는데 이걸 하나의 테이블에 표기 함으로써 브랜드 이름에 삼성, 애플 등이 반복되어 표시되고 있고 공식 서비스 센터의 전화번호가 하나의 테이블에 중복되어 나타나고 있습니다. 데이터를 저장하는 공간인 테이블에 중복된 데이터가 없어야 하는데 중복 데이터가 반복 되고 있습니다.

     

     

  2. 3차 정규화 오류를 피하는 법

    1차, 2차, 3차 정규화 모두 지키는 법은 같습니다. 데이터 테이블을 디자인 할 때 해당 데이터 테이블을 따로 빼서 하나의 독립적인 테이블을 만들어 주면 됩니다. 그리고 기본키와 외래키로 연결해 주시면 됩니다.

     

    이렇게 제조회사의 정보 테이블을 따로 배서 만들면 삼성이나 LG 그리고 서비스 센터 번호가 절대 중복 될 일이 없습니다.

     

     

    제품의 필드의 값이 중복 될 일이 거의 없습니다.

     

    만약 Model명이 32GB 로 중복이 된다고 합시다. 그러나 그 Model명을 다른 필드의 값으로부터 얻을 수 있는 것이 아니기 때문에 3차 정규화를 어긴 것이 아닙니다. 그러나 서비스 센터의 번호만으로 제조 회사의 브랜드명을 알 수 있다면 그건 3차 정규화를 어긴 것 입니다.

    이 밖에도 엑셀은 보통 합계나 평균 등을 테이블에 기록을 합니다. 그러나 엑세스에서는 테이블에 저장을 하게 되면 이것도 3차 정규화 과정을 어긴 것 입니다. 왜냐하면 합계나 평균 등은 테이블의 다른 데이터를 조합해서 얻어지는 것이기 때문에 테이블에 저장하는 것이 아니라 내가 필요할 때 원본데이터를 가공하는 쿼리로부터 얻는 것 입니다.

    테이블을 따로 만들고 이렇게 연결을 해주시면 3차 정규화도 끝납니다.

     

    처음에 데이터를 설계 하실 때 이 세가지 원칙만 지키다 보면 자연스럽게 테이블을 어떻게 구성 할지, 관계 설정을 어떻게 해야 할지 요령이 늡니다. 데이터베이스에 대해서 더 다루고 싶은 것이 많지만 엑세스를 배우기 위해서는 거기까지는 필요 없다고 생각하고 다음 포스팅부터 엑세스 실정 테이블 만들기에 들어가겠습니다. 모든 강의는 제가 미리 배포해 드린 어플을 만드는 방법을 알려드리는 것으로 진행 합니다.

+ Recent posts