Slow is better than NOTHING

Computer Science/2. Architecture

[DB] 정규화

Jeff_Kang 2019. 5. 20. 11:50
반응형

 DB의 관계 스키마가 잘못 설계되어 데이터가 불필요하게 중복되게 된다면 어떠한 문제가 있을까? 

 

1) 삭제 이상

한 튜플을 삭제함으로써 유지해야 될 정보까지도 삭제되는 연쇄 삭제 현상이 일어나게 되어 정보 손실이 발생한 것

2) 삽입 이상

불필요하고 원하지 않는 데이터도 함께 삽입해야되고 그렇지 않으면 삽입이 되지 않는 현상

3) 갱신 이상

중복된 튜플 중에서 일부 튜플만 애트리뷰트 값을 갱신시킴으로써 정보의 모순성(inconsistency)가 생기는 현상

 

 이와 같은 이상들이 생기는 근본적인 이유는 무엇인가? 그것은 여러 가지 상이한 종류의 정보를 하나의 릴레이션으로 표현하려 하기 때문이다. 즉, 애트리뷰트 간에 존재하는 여러 가지 데이터 종속 관계를 무리하게 하나의 릴레이션으로 표현하려는데서 이러한 이상 현상이 발생한다. 

 따라서 문제의 해결은 이러한 애트리뷰트 간의 종속성(dependency)을 분석해서 하나의 릴레이션에는 기본적으로 하나의 종속성이 표현되도록 분해(Decomposition)하면 되는 것이다. 이러한 분해를 정규화(Normalization)라고 한다.

 

 즉, 다시 말하면 정규화는 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정으로, 가능한 중복을 제거하여 삽입,삭제,갱신 이상의 발생 가능성을 줄이는 것이다.

 

Q) 비정규화(Denormalization, 역정규화) ?

 정규화로 인해 여러 개로 분해된 릴레이션들에서 원하는 정보를 얻기 위해서는 조인을 사용하여 다시 연결해야하는데, 지나치게 자주 조인을 사용하게 되면 Response Time이 떨어진다. 따라서 정규화에 위배되지만 성능 향상을 위해 다시 테이블을 합치는 것을 비정규화 라고 한다.

반응형

'Computer Science > 2. Architecture' 카테고리의 다른 글

[DB] 데이터 종속성과 중복성  (0) 2019.05.20
Cache  (0) 2019.05.09