본문 바로가기

데이터모델링

7. 그럼에도 불구하고 정규화

데이터 이상현상 data anomaly 는 속성의 값을 수정할 때나 표에 새로운 개체를 삽입하거나 삭제할 때 의도하지 않은 다른 데이터에 문제가 발생하는 현상이다.

   

이상현상이 발생하지 않도록 데이터를 담아야 한다. !!

  1. 제 1 정규형은 모든 속성이 값을 반드시 하나만 가져야 한다.

여러 개 가지고 있거나 물리적으로는 하나만 갖지만 유사한 형태의 반복 속성이 존재해서 논리적으로는 다수의 값을 갖는 것과 마찬 가지라면 Basis Parent 에서 별도의 엔터티로 분리해야한다.

  1. 2정규형에서는 모든 속성이 반드시 식별자 전부에 종속되어야 한다. 일부만 종속될 경우에는 엔터티를 분리.
  2. 3 정규형에서는 식별자가 아닌 모든 속성이 상호 종속 관계 여서는 안된다.
  3. 통상 3정규형 이상의 모델은 폭넓게 사용되지 않는다 .

   

정규화의 의의

데이터모델링의 핵심이론은 정규화 !!

  1. 속성간의 종속성을 기준으로 성격이 유사한 속성들은 모이고 관계없는 속성들은 분리된다. 자연스럽게 범주화가 가능
  2. 하나의 주제로 집약된 데이터 구조, 제대로 된 엔터티가 도출된다. 데이터 응집도는 높고 결합도는 낮게 분리된다.
  3. 데이터 중복이 최소화된 효율적이고 구조화된 모델이 나온다. 저장용량 측면에서도 당연히 이익을 보게된다.
  4. 데이터간의 종속성을 분석하기 때문에 엔터티명과 더불어 엔터티의 정체성을 가장 잘 표현하는 주 식별자가 정확히 도출된다.
  5. 엔터티가 명확하고 정확해 졌기 때문에 확장성이 좋아진다.
  6. 데이터 무결성 극대화
  7. 정규화된 모델은 성능이 좋다.

       

정규화와 성능은 반비례관계?

조인이 많아 져서 ?

무조건은 아니다.

대부분의 DBMS는 데이터를 블록단위로 읽고 쓴다. 하나의 블록에는 다수의 행이 포함될 수있다.

SQL을 최적화 할때 조회할 레코드의 수가 아닌 블록의 수에 집착하는 것이 이것 때문임

정규화가 IO대상이 되는 블록 수를 줄여 줄 수 있음을 의미한다.

정규화 하면 성능이 저하되는건 그럴수도 있고 아닐수도 있다는 얘기

OLTP에서는 조인에 의해 성능저하가 된 경우라면 조인을 잘못했을 가능성이 크다.

인덱스가 없거나 조인 연결 고리 이상으로 옵티마이저가 인덱스를 사용하지 못하는 등의 무제지,조인자체의 경우는 드물다.