정규화(Normalization)

정규화는 중복을 줄이고, 데이터의 일관성과 무결성을 유지하기 위해 데이터를 여러 개의 테이블로 나누는 과정입니다. 이 과정에서 각 테이블은 단일 책임을 가지며, 데이터 중복을 최소화합니다.

  • 예를 들어, 가게 정보, 상품 정보, 주문 정보가 있을 때, 각 정보는 별도의 테이블로 분리되며, 가게상품은 각자 독립적으로 관리됩니다.
  • 필요한 데이터는 조인을 통해 가져오며, 각 테이블이 가진 정보는 중복 없이 잘 정리되어 있습니다.

정규화의 특징:

  • 중복되는 데이터가 적음.
  • 데이터 수정 시 한 곳에서만 수정하면 되므로 일관성이 유지됩니다.
  • 여러 테이블을 조인해야 하므로 조회 성능이 떨어질 수 있습니다.

정리하자면, 정규화여러 테이블을 만들고 조인하여 필요한 데이터를 가져오는 방식입니다. 이때 중복 데이터가 없기 때문에 저장 공간을 절약하고, 데이터 무결성을 유지할 수 있습니다.

 

예시)

  • 가게 정보상품 정보를 각각 별도의 테이블로 만들고, 그때그때 필요한 상품과 가게의 관계를 조인을 통해 조회합니다.
    • 예) Store 테이블, Product 테이블
    • 필요한 정보가 있을 때, Store 테이블과 Product 테이블을 조인해서 가져옵니다.

이렇게 정규화를 사용하면 데이터의 일관성을 유지하고, 저장 공간을 절약할 수 있지만, 조회 성능에서는 조인으로 인해 약간의 비용이 발생할 수 있습니다

 

 

 

역정규화(Denormalization)

역정규화는 조회 성능을 개선하기 위해 일부러 데이터를 중복 저장하는 방식입니다. 데이터베이스 설계에서 중복을 허용하고, 이를 통해 읽기 성능을 향상시킬 수 있습니다. 중복된 데이터를 일부 테이블에 저장하는 대신 조인 없이 한 번의 조회로 필요한 정보를 가져올 수 있습니다.

  • 예를 들어, 가게 정보상품 정보가 모두 포함된 하나의 테이블을 만들어 두 개의 테이블을 조인하지 않고도 조회가 가능하도록 하는 방식입니다.
  • 이렇게 하면 조회할 때 조인이 필요 없으므로 성능이 향상됩니다. 하지만 중복된 데이터가 발생하여 데이터 수정 시 여러 곳에서 수정이 필요하고, 저장 공간이 더 많이 필요할 수 있습니다.

역정규화의 특징:

  • 데이터 중복이 발생하여 저장 공간이 늘어납니다.
  • 읽기 성능이 향상되며, 조인 없이 데이터를 빠르게 조회할 수 있습니다.
  • 데이터 수정 시 여러 테이블에서 변경을 해야 하므로 관리가 복잡해질 수 있습니다.

 

정리

  • 정규화(Normalization): 여러 개의 테이블로 데이터를 나누어 중복을 최소화하고, 조인을 통해 데이터를 조회하는 방식.
  • 역정규화(Denormalization): 일부러 중복된 데이터를 저장하여 조인 없이 빠른 조회 성능을 얻는 방식.

결론적으로, 정규화는 중복을 피하고 여러 테이블을 생성하여 필요한 데이터를 조인을 통해 조회하는 방식이고, 역정규화는 일부러 데이터를 중복 저장하여 조회 성능을 최적화하는 방식입니다.

+ Recent posts