[sql] 뷰의 계층 구조와 계층형 쿼리

관계형 데이터베이스에서 (view)는 하나 이상의 기본 테이블에서 가져온 데이터를 기반으로 생성된 가상의 테이블이다. 또한, 는 다른 뷰나 기본 테이블과 동일하게 쿼리할 수 있다.

데이터베이스에서 계층 구조를 가지는 데이터를 다루는 경우가 많은데, 이때 를 활용하여 계층형 데이터를 관리할 수 있다. 는 상위 레벨 계층에 해당하는 데이터를 하위 레벨 계층과 조인하여 사용할 수 있으므로, 데이터를 계층 구조로 다룰 수 있게 한다.

더불어, 계층형 구조를 가지는 데이터를 다룰 때 유용한 계층형 쿼리(hierarchical query)를 사용하여 를 계층 구조로 다룰 수 있다. 계층형 쿼리는 데이터의 상위와 하위 관계를 쉽게 파악할 수 있도록 도와준다.

아래는 PostgreSQL에서 WITH RECURSIVE를 사용하여 계층형 쿼리를 통해 조직도를 조회하는 간단한 예제이다.

WITH RECURSIVE org_chart AS (
  SELECT emp_id, emp_name, manager_id
  FROM employee
  WHERE manager_id IS NULL
  UNION ALL
  SELECT e.emp_id, e.emp_name, e.manager_id
  FROM employee e
  JOIN org_chart c ON e.manager_id = c.emp_id
)
SELECT * FROM org_chart;

이 예제에서는 employee 테이블을 활용하여 사원과 상사의 관계를 가진 조직도를 조회하고 있다.

의 계층 구조와 계층형 쿼리를 활용하여 데이터베이스에서 계층 구조를 가지는 데이터를 손쉽게 다룰 수 있으며, 이를 통해 더 효율적인 데이터 관리가 가능해진다.

참고 자료