IT/SQLD(SQL개발자)

[SQLD] 정규화와 성능

pandada 2019. 6. 16. 17:11
반응형

정규화란? 

  - 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다. 

  - 데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. 

  - 일반적으로 정규화를 수행해야 데이터처리의 성능이 향상되며 데이터의 조회처리 트랜잭션시에 성능저하가 나타날 수 있음. 

  - 데이터를 원자적으로 만드는 것이 테이블을 정규화 하는 첫 단계이다.

<반정규화 모델>

Therefore

  - 일반적으로 정구화가 잘 되어있으면 입력/수정/삭제의 성능이 향상되고 반정규화를 하면 조회의 성능이 향상된다고 인식 할 수 있다.  

  - but! 데이터 모델링을 할 때 반정구화만이 조회 성능을 향상시킨다는 고정관념은 탈피시켜야합니다!

 

 

정규화테이블의 이점

  -> 정규 테이블은 중복데이터가 없어서 데이터베이스의 크기를 줄여준다.

  -> 찾아야할 데이터가 적어 쿼리가 더 빨라진다.

 

 

정규화 단계

  -> 1 정규화

    = 각 행의 데이터들은 원자적 값을 가져야 한다.

    = 각 행은 유일무이한 식별자인 기본키(Primary Key)를 가지고 있어야 한다.

    = 예시 테이블

 id

last_name 

first_name 

nick_name 

elisworth 

kim

kim 

brown 

john 

john 

brown 

john 

john 

pertrillo 

maria 

maria 

franken 

esme 

em 

    = id 열이 없다면 john brown의 레코드는 두 개가 있다. 하지만 이 경우 두 명의 다른 사람을 나타낸다. 왜? id열을 사용하여 두 레코드를 유일무이하게 하였기 때문에이다.

 

  -> 2 정규화

    = 1 정규화이어야 한다.

    = 부분적 함수 의존이 없다.

 

  -> 3 정규화

    = 2 정규화이어야 한다.

    = 이행적 종속이 없어야 한다.

 

 

함수적 종속성

  -> 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것.

  -> 이때 기준값을 결정자라 하고 종속되는 값을 종속자라 한다.

  -> 종속자는 근본적으로 결정자에 함수적으로 종속성을 가지고 있다.

<함수 종속성>

    여기서 이름, 출생지, 호주라는 속성은 주민등록번호 속성에 종속된다.

    Therefore. 주민등록번호가 이름, 출생지, 호주를 함수적으로 결정한다.

    -> 함수의 종속성은 데이터가 가지고 있는 근본적인 속성으로 인식되고 있다.

    -> 기본적으로 데이터는 속성간의 함수종속성에 근거하여 정규화되어야 한다.

 

 

 

반응형

'IT > SQLD(SQL개발자)' 카테고리의 다른 글

[SQLD] 대량 데이터에 따른 성능  (0) 2019.06.18
[SQLD] 반정규화와 성능  (0) 2019.06.17
[SQLD] 성능 데이터 모델링의 개요  (0) 2019.06.15
[SQLD] 데이터 모델링관점과 분류  (0) 2019.06.13
[SQLD] 식별  (0) 2019.06.11