users
테이블user_id | username | |
---|---|---|
1 | Alice | alice@example.com |
2 | Bob | bob@example.com |
3 | Charlie | charlie@example.com |
tasks
테이블task_id | user_id | status |
---|---|---|
1 | 1 | 완료 |
2 | 1 | 진행 중 |
3 | 2 | 완료 |
4 | 2 | 완료 |
5 | 3 | 진행 중 |
user_task_summary
View (결과)user_id | username | completed_tasks |
---|---|---|
1 | Alice | 1 |
2 | Bob | 2 |
3 | Charlie | 0 |
users
테이블: 사용자 정보(아이디, 이름, 이메일) 포함.tasks
테이블: 작업 정보(아이디, 사용자 아이디, 상태) 포함.user_task_summary
View: users
와 tasks
를 합친 것으로, 각 사용자의 완료 작업 수 표시.CREATE VIEW user_task_summary AS
SELECT
u.user_id,
u.username,
COUNT(t.task_id) AS completed_tasks
FROM users u
LEFT JOIN tasks t ON u.user_id = t.user_id AND t.status = '완료'
GROUP BY u.user_id, u.username;
데이터베이스의 View는 가상 테이블이며, 실제 테이블의 데이터를 조합해서 만들어진다. View의 주된 목적은:
프로젝트 관리 도구를 만들고 있다고 가정해보자. 이 도구에서는 프로젝트 구성원이 작업을 등록하고 상태를 '완료' 또는 '진행 중'으로 표시할 수 있다. 프로젝트 대시보드에서는 각 구성원이 완료한 작업의 수를 요약 정보로 보여줘야 한다.
users
테이블: 모든 구성원의 정보를 저장한다.tasks
테이블: 각 작업의 정보 및 상태를 저장한다.View 생성: user_task_summary
View는 users
테이블과 tasks
테이블을 결합하여 각 사용자별로 완료한 작업의 수를 집계한다.
CREATE VIEW user_task_summary AS
SELECT
u.user_id,
u.username,
COUNT(t.task_id) AS completed_tasks
FROM users u
LEFT JOIN tasks t ON u.user_id = t.user_id AND t.status = '완료'
GROUP BY u.user_id, u.username;
현업 적용: 프로젝트 대시보드에서는 이 View를 통해 간단히 각 사용자별 완료 작업의 수를 조회할 수 있다. 개발자는 복잡한 조인 및 집계 쿼리를 직접 작성할 필요 없이, SELECT * FROM user_task_summary;
와 같은 간단한 쿼리로 정보를 얻을 수 있다.
View 사용의 장점은:
애플리케이션에서 직접 쿼리를 실행하는 방식과 데이터베이스에서 View를 사용하는 방식은 각각 장단점이 있으며, 사용 사례에 따라 적절한 방식을 선택할 수 있다. 여기서는 두 방식의 주요 차이점을 설명한다.
케이션 코드와 통합해, 복잡한 데이터 처리를 쉽게 구현할 수 있다.
애플리케이션에서 직접 쿼리를 실행하는 방식은 유연성을 제공하지만 복잡성과 성능 고려사항이 있다. 반면, 데이터베이스에서 View를 사용하는 방식은 복잡한 쿼리를 단순화하고 데이터를 추상화하며 성능을 최적화하는 등의 이점을 제공하지만, 유연성과 데이터베이스 의존성의 제약이 있을 수 있다.
따봉