데이터베이스 테이블 정규화와 역정규화 연습문제

문제 상황

ABC 회사가 온라인 쇼핑몰을 운영하고 있습니다. 회사는 제품, 주문, 고객 정보를 관리하기 위해 데이터베이스를 사용하고 있습니다.

다음은 현재 데이터베이스에 존재하는 테이블의 스키마입니다.

제품 (products)

| 컬럼명 | 데이터 타입 | |——–|————| | id | int | | name | varchar | | price | int | | brand | varchar |

주문 (orders)

| 컬럼명 | 데이터 타입 | |————|————| | id | int | | customer_id| int | | product_id | int | | quantity | int | | order_date | date |

고객 (customers)

| 컬럼명 | 데이터 타입 | |————|————| | id | int | | name | varchar | | email | varchar | | phone | varchar | | address | varchar |

문제 해결

정규화 (Normalization)

현재 데이터베이스의 테이블은 몇 가지 정규형 규칙을 위반하고 있는 것으로 보입니다. 다음과 같은 정규화 과정을 거치세요.

  1. 첫 번째 정규형 (1NF): 모든 컬럼은 원자값(Atomic)을 가지도록 테이블을 분해합니다.
  2. 두 번째 정규형 (2NF): 부분 함수 종속성이 제거되도록 테이블을 분해합니다.
  3. 세 번째 정규형 (3NF): 이행 함수 종속성이 제거되도록 테이블을 분해합니다.

역정규화 (Denormalization)

역정규화를 통해 데이터 조회 시 성능을 향상시킬 수 있습니다. 다음과 같은 역정규화 과정을 거치세요.

  1. 제품 테이블(products)에 브랜드(brand) 컬럼을 추가합니다.
  2. 고객(customer) 테이블의 이름(name) 컬럼을 성(last_name)과 이름(first_name)으로 나누어 저장합니다.

정리

이상으로 데이터베이스 테이블 정규화와 역정규화 연습문제를 해결해보았습니다. 데이터베이스 설계 시 정규화를 통해 데이터 일관성과 중복을 최소화하고, 역정규화를 통해 성능을 향상시킬 수 있습니다.


#데이터베이스 #정규화 #역정규화