ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <김기창의 데이터 모델링 강의> 4장 모델링의 꽃, 정규화
    독서/전공서적(dev) 2024. 9. 3. 16:09

    정규화의 순기능

    - 중복데이터 제거

    - 모델 확장성

    - 저장공간 사용 최소화

    - 모델 관리 수월

     

    함수종속?

    - 데이터 종속성. 한 속성의 값(결정자)을 알면 다른 속성의 값(종속자)이 저절로 결정되는, 두 속성 간의 일종의 제약.

    - 결정자 역할을 속성과 종속자역할 속성이 하나의 엔티티에 존재.

    - 데이터 모델링의 종속성 중 가장 중요.

    - ex) 이름, 휴대전번, 주소는 유일하게 식별할 수 있는 속성이 아니다. 주민등록번호 속성이 결정자.

    - 결정자라고 생각한 속성 값에 대한 종속자 속성 값이 두개 이상이 존재한다면 결정자를 잘못 선정한 것이다.

     

    함수종속 이외에 종속 종류

    - 그밖에 종속성으로 이행종속 (transitive dependency), 다가종속(multivalued dependency), 조인종속(join dependency) 가 있음 : 3,4,5정규화와 연관된 종속성.

    - 파생종속? 추출속성과 연관된 종속성. 추출속성은 반드시 하나이상의 속성에 종속.

     

    정규화

    - 정규화가 어려운 이유? 업무 요건을 기반으로 판단해야 하기 때문에 업무에 대한 이해도가 높아야함. -> 모델링이 어려운 이유이기도 하다.

    - 데이터 이상현상을 아노말리라고 한다.

    - 기본적으로 중복데이터가 없으면 발생하지 않음.

    - 관계형 DB 의 핵심 개념은 JOIN !

     

    이노말리 종류

    입력 아노말리: 팀이 결정되지 않았다면 새로운 선수를 등록하지 못함.

    업데이트 이노말리: 잘못된 데이터 설계로 인해 의도치 않은 데이터까지 업데이트되는 현상.

    삭제 이노말리 : 잘못된 데이터 설계로 인해 의도치 않은 데이터까지 삭제되는 현상.

    실무에서 입력, 삭제 아노말리는 거의 볼 수 없지만 업데이트 이노말리는 자주 볼 수 있다. (중복데이터를 많이 사용하기 때문에)

     

    1정규화.

    - 이론은 쉽지만 실무에서는 적용하기 까다로운 정규화.

    - 뜻: 속성의 값은 원자값(atom)이면서 나눌 수 없는 (uncut) 값이어야함.

    1정규화와 연관된 속성 : 다가속성(multivalued attributes), 복합속성(composite attributes)

     

    다가속성

    예제) 고객엔티티에 전화번호1, 전화번호2, 전화번호3이 각 속성으로 3컬럼이 존재할 때.

    - 속성을 명확하게 분석해서 세가지가 동일하게 전화번호를 의미한다는 것을 알아야 제1정규화 대상인지 알 수 있다.

    - 전화번호가 더이상 늘어나지 않는다면 비정규화를 하는 것이 낫지만 계속해서 늘어난다면 정규화를 해야함 -> 이 판단을 해야한다.

     

    복합속성

    - 단일 속성을 세개의 속성으로 분리해서 정의.

    예제) 휴대폰 번호에 대한 속성이 phone1, phone2, phone3 010,8888,8888 로 세개로 분리되어 관리하는 경우

    - 업무에 따라서 분리해야한다. (불필요한 분리는 불편함을 야기)

     

     

    2정규화

    - 부분함수 종속 (주 식별자가 두개 이상일 때 일부 속성이 주 식별자 중 하나에만 종속되는 현상) 이 없으면 됨

    - 일반속성은 주 식별자 전체에 종속되어야함. 

     

    3정규화

    - 이행종속(간접적 함수종속=간접종속)이 없도록 해야함.

    - 간접적이행종속이란? X <-(종속) Y <-(종속) <-(종속) Z 일 때, X <- Z 이렇게 종속된단 정의 

     

    3정규화의 사촌, BC 정규화

    - 3정규화를 보강한 정규화. 실무에 적용하기 이상적.

    - 슈퍼식별자와 연관이 있음.

    - 슈퍼식별자란? 기존의 주 식별자 속성에 다른 속성이 포함된 식별자. 예를 들어 납품 테이블의 pk 가  (상품번호, 업체번호, 업체명)일 때 BC 정규화 위배. (업체명은 업체번호에 따라 다르다)

    슈퍼식별자는 많은 문제를 야기하니 절대로 사용하면 안된다 !

     

    4정규화

    - 다가종속 제거

    - ex) 홍길동 기술은 모델링, 튜닝이고 언어는 한국어, 영어, 중국어일 때. -> 모델링에 언어 3개 row , 튜닝에 언어 3개 row 총 6개 row 생성. 여기서 두 다가속성 사이(기술속성, 언어속성)에 관계가 존재하지 않으면 속성을 분리해야한다.

     

     

    5정규화 (저자는 과하게 이론적이라고 표현)

    - 아노말리가 발생하지 않을 때까지 릴레이션을 분해.- 조인종속을 제거하는 것. 어떤 릴레이션을 분해(정규화)한 후 다시 조인하면 원래의 릴레이션으로 복원할 수 있는 것을 조인종속이라함.- 5정규화에 따르면, 위의 예제에서 기술과 언어가 연관되어있는 경우 기술-언어로도 테이블이 하나 더 생성되어야함.- 어차피 사용하려면 다시 조인해야하기 때문에 분해하는 것이 실익이 없다.

     

    결론

    실정규화는 3정규형까지만 하는 것에 대해 의문을 품는 듯한 저자의 말.

     

     

Designed by Tistory.