데이터베이스에서의 데이터 프로파일링 및 정규화 연습문제

목차


데이터 프로파일링

데이터베이스에서 데이터 프로파일링은 저장된 데이터를 분석하고 이해하는 작업입니다. 데이터 프로파일링을 통해 데이터 품질, 완전성, 일관성 등을 평가할 수 있습니다. 이를 통해 잘못된 데이터나 중복된 데이터 등의 문제를 발견하고 해결할 수 있습니다.

데이터 프로파일링을 수행하는 방법에는 다양한 도구와 기술이 있습니다. 일반적으로는 SQL 쿼리를 사용하여 데이터의 속성, 유형, 누락된 값, 중복된 값 등을 확인합니다. 또한, 데이터 시각화 도구를 활용하여 그래프나 차트를 생성하여 데이터의 분포, 통계적 특성 등을 시각적으로 확인할 수도 있습니다.

예를 들어, 다음은 고객 정보를 저장하는 테이블의 데이터 프로파일링을 위한 SQL 쿼리의 예입니다.

-- 고객 정보 테이블에서 나이의 평균, 최소, 최대값을 확인하는 쿼리
SELECT AVG(age) AS avg_age, MIN(age) AS min_age, MAX(age) AS max_age
FROM customers;

-- 고객 정보 테이블에서 중복된 이메일 주소를 확인하는 쿼리
SELECT email, COUNT(*) AS count
FROM customers
GROUP BY email
HAVING count > 1;

위의 쿼리를 실행하여 고객 정보 테이블의 데이터를 프로파일링할 수 있습니다.

데이터 정규화

데이터베이스에서 데이터 정규화는 중복을 최소화하고 데이터를 보다 효율적으로 저장하는 과정입니다. 데이터 정규화는 데이터의 구조를 재조정함으로써 데이터의 일관성과 무결성을 유지할 수 있습니다.

데이터 정규화는 일반적으로 제 1 정규화, 제 2 정규화, 제 3 정규화 등의 단계로 이루어집니다. 제 1 정규화는 테이블의 칼럼을 원자 값으로 분해하여 중복을 제거하는 작업입니다. 제 2 정규화는 제 1 정규화된 테이블에서 부분 종속성을 제거하여 중복을 제거하는 작업입니다. 제 3 정규화는 제 2 정규화된 테이블에서 이행적으로 종속적인 속성을 분리하는 작업입니다.

예를 들어, 다음은 주문 정보를 저장하는 테이블에서 데이터 정규화를 수행하는 예입니다.

-- 제 1 정규화: 테이블을 쪼개고 외래 키를 추가하여 중복을 제거하는 작업
CREATE TABLE orders (
  order_id int PRIMARY KEY,
  customer_id int,
  order_date date,
  order_total decimal
);

CREATE TABLE order_items (
  order_id int,
  item_id int,
  quantity int,
  price decimal,
  PRIMARY KEY (order_id, item_id),
  FOREIGN KEY (order_id) REFERENCES orders(order_id)
);

-- 제 2 정규화: 부분 종속성을 제거하여 중복을 제거하는 작업
CREATE TABLE products (
  item_id int PRIMARY KEY,
  item_name varchar,
  item_price decimal
);

-- 제 3 정규화: 이행적으로 종속적인 속성을 분리하는 작업
CREATE TABLE customers (
  customer_id int PRIMARY KEY,
  customer_name varchar,
  customer_email varchar
);

위의 예제에서는 주문 정보 테이블을 제 1 정규화, 제 2 정규화, 제 3 정규화의 단계별로 분해하여 정규화된 테이블을 생성합니다.


이렇게 데이터베이스에서 데이터 프로파일링과 데이터 정규화를 연습하는 것은 데이터의 품질과 효율성을 개선하는 데 도움이 될 것입니다.

References