컴퓨터 과학/데이터 베이스

데이터베이스에서의 플래그(Flag)란 무엇인가?

Data Jun 2025. 6. 21. 00:06

플래그(flag)는 데이터베이스 설계와 운영에서 데이터의 상태를 효율적으로 제어하기 위한 매우 실용적인 도구입니다.
특정 로우(row)의 상태를 빠르게 확인하거나, 복잡한 삭제·활성화 조건을 단순하게 구현할 때 자주 사용됩니다.

 

 

플래그란?

**플래그(flag)**는 데이터의 상태나 조건을 나타내기 위한 불리언(Boolean) 또는 정수 컬럼입니다.
즉, "이 값이 true냐 false냐", "활성화되어 있냐 아니냐" 같은 조건을 판단하기 위한 작은 신호입니다.

 

 

실무에서 자주 쓰는 플래그 컬럼들

 

 

논리적 삭제란?

데이터를 물리적으로 삭제하지 않고, 삭제됨 상태로 표시만 하는 방식

이럴 때 가장 많이 쓰이는 플래그가 is_deleted입니다.

-- 논리 삭제
UPDATE users SET is_deleted = 1 WHERE user_id = 123;

-- 실제 조회 쿼리
SELECT * FROM users WHERE is_deleted = 0;

이렇게 하면 데이터는 DB에 남아 있으면서도, 사용자에겐 보이지 않게 처리할 수 있습니다.

 

상태 제어용 플래그

플래그는 단순히 "삭제"만이 아니라 다양한 비즈니스 상태를 표현할 수 있습니다.

 

활성/비활성

SELECT * FROM features WHERE is_active = 1;

 

관리자 여부

SELECT * FROM users WHERE is_admin = 1;

이처럼 플래그 하나로 다양한 분기 처리가 가능해지므로, 비즈니스 로직이 깔끔해지고 유지보수도 쉬워집니다.

 

 

플래그 사용 시 주의할 점

  1. 인덱싱 고려
    • is_deleted, is_active 등 자주 사용하는 플래그는 WHERE 조건에서 쓰이므로, 인덱스를 고려하는 게 좋습니다.
  2. 복잡한 상태는 ENUM 또는 상태 테이블 고려
    • 플래그로 표현할 수 있는 상태가 2개 이상이라면?
      → status 열을 만들고 enum이나 코드 테이블로 분리하는 것이 더 나음

예시:

status ENUM('WAITING', 'IN_PROGRESS', 'COMPLETED')

 

정리: 플래그는 작지만 강력한 제어 도구

플래그는 단순한 1/0, True/False 이지만, 그 효과는 큽니다.
특히 논리적 삭제, 접근 제어, 사용자 상태 관리 등에서 그 유용성이 빛납니다.

 

📌 **"작지만 전략적인 설계 요소"**로써, 실무적인 데이터베이스 모델링에서 플래그는 빠질 수 없는 존재입니다.