본문 바로가기
Database/Oracle

[ORACLE] DBA_CONS_COLUMNS 완벽 해설 : 제약 조건과 컬럼 관계 분석의 핵심

by Papa Martino V 2025. 10. 13.
728x90

DBA_CONS_COLUMNS
[ORACLE] DBA_CONS_COLUMNS

 

데이터베이스의 무결성을 보장하기 위해서는 단순히 제약 조건(Constraint)의 정의뿐 아니라, 그 제약이 어떤 컬럼(Column)에 적용되는지를 명확히 파악해야 합니다. 이때 중요한 역할을 하는 Oracle 데이터 딕셔너리 뷰가 바로 DBA_CONS_COLUMNS입니다. 이 뷰는 DBA_CONSTRAINTS와 긴밀하게 연결되어, 각 제약 조건의 실제 컬럼 레벨 매핑을 제공합니다.

본 글에서는 DBA_CONS_COLUMNS의 구조, 주요 컬럼 설명, DBA_CONSTRAINTS와의 연계 활용법, 외래키 관계 분석, 그리고 데이터 모델 품질 검증에 이 뷰를 어떻게 사용할 수 있는지를 심층적으로 설명합니다.


1. DBA_CONS_COLUMNS란?

DBA_CONS_COLUMNS는 Oracle Database 내에서 **각 제약 조건(Constraint)**이 어떤 컬럼에 적용되어 있는지를 보여주는 데이터 딕셔너리 뷰입니다. DBA_CONSTRAINTS가 제약 조건의 정의적 정보를 담고 있다면, DBA_CONS_COLUMNS는 그 제약의 “물리적 대상”인 컬럼 단위의 세부 매핑 정보를 제공합니다. 즉, 두 뷰를 조합하면 “어떤 테이블의 어떤 컬럼이 PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK 제약에 연결되어 있는가”를 한눈에 확인할 수 있습니다.


2. DBA_CONS_COLUMNS 주요 컬럼 구조

컬럼명 데이터 타입 설명
OWNER VARCHAR2(30) 제약 조건이 속한 스키마 이름
CONSTRAINT_NAME VARCHAR2(30) 제약 조건 이름 (DBA_CONSTRAINTS.CONSTRAINT_NAME 참조)
TABLE_NAME VARCHAR2(30) 제약 조건이 적용된 테이블 이름
COLUMN_NAME VARCHAR2(4000) 제약 조건이 적용된 컬럼 이름
POSITION NUMBER 제약 조건 내 컬럼의 순서 (복합 키일 경우 순번)
CON_ID NUMBER 멀티 컨테이너(CDB) 환경에서 컨테이너 ID

이 중 POSITION 컬럼은 다중 컬럼 제약(복합 키, 복합 유니크 키 등)을 구분하는 데 매우 중요합니다. 예를 들어 PRIMARY KEY가 (EMP_ID, DEPT_ID)로 구성되어 있다면, POSITION 값은 각각 1과 2로 저장됩니다.


3. DBA_CONSTRAINTS와의 관계

DBA_CONS_COLUMNS는 제약 조건 이름(CONSTRAINT_NAME)을 기준으로 DBA_CONSTRAINTS와 조인되어 사용됩니다. DBA_CONSTRAINTS는 제약 조건의 유형, 상태, 참조 관계를 관리하고, DBA_CONS_COLUMNS는 그 제약 조건이 실제로 적용된 컬럼 정보를 제공합니다.

대표적인 조인 예시:

SELECT c.OWNER,
       c.TABLE_NAME,
       c.CONSTRAINT_NAME,
       con.CONSTRAINT_TYPE,
       col.COLUMN_NAME,
       col.POSITION
FROM   DBA_CONSTRAINTS con
JOIN   DBA_CONS_COLUMNS col
       ON con.CONSTRAINT_NAME = col.CONSTRAINT_NAME
      AND con.OWNER = col.OWNER
ORDER BY c.OWNER, c.TABLE_NAME, col.POSITION;

이 조합을 통해 전체 데이터베이스의 제약 구조를 “컬럼 단위”로 분석할 수 있습니다.


4. 제약 조건 유형별 컬럼 관계 예시

아래 표는 DBA_CONS_COLUMNS를 통해 분석할 수 있는 제약 조건과 컬럼의 관계를 요약한 것입니다.

제약 조건 유형 설명 컬럼 레벨 매핑 예시
PRIMARY KEY (P) 테이블의 고유 식별 컬럼 EMPLOYEES.EMPLOYEE_ID
UNIQUE (U) 중복 방지를 위한 고유 제약 EMPLOYEES.EMAIL
FOREIGN KEY (R) 다른 테이블의 PRIMARY KEY 참조 EMPLOYEES.DEPARTMENT_ID → DEPARTMENTS.DEPARTMENT_ID
CHECK (C) 컬럼 값의 논리 조건 검증 EMPLOYEES.SALARY > 0
NOT NULL NULL 값 허용 여부 제한 EMPLOYEES.LAST_NAME

5. FOREIGN KEY 관계 추적 예제

DBA_CONS_COLUMNS는 특히 외래키 관계(Foreign Key Mapping)를 추적할 때 강력하게 활용됩니다. 다음 쿼리는 외래키 제약을 통해 두 테이블 간 관계를 매핑하는 대표적인 예시입니다.

SELECT a.TABLE_NAME AS CHILD_TABLE,
       a.COLUMN_NAME AS CHILD_COLUMN,
       b.TABLE_NAME AS PARENT_TABLE,
       b.COLUMN_NAME AS PARENT_COLUMN
FROM   DBA_CONS_COLUMNS a
JOIN   DBA_CONSTRAINTS c
       ON a.CONSTRAINT_NAME = c.CONSTRAINT_NAME
JOIN   DBA_CONS_COLUMNS b
       ON c.R_CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE  c.CONSTRAINT_TYPE = 'R';

이 결과를 통해 데이터 모델 내의 FK 관계를 시각화하거나 ERD 자동 생성 도구의 기본 데이터로 활용할 수 있습니다.


6. 실무 활용 사례

① 데이터 모델 문서화 자동화

DBA_CONS_COLUMNS를 통해 컬럼 제약 정보를 자동으로 추출하면, 데이터 모델 문서를 수작업으로 작성할 필요 없이 자동화된 스크립트를 통해 최신 문서를 유지할 수 있습니다.

② 데이터 무결성 검증 리포트 생성

DBA_CONSTRAINTS와 DBA_CONS_COLUMNS를 결합하여 PRIMARY KEY 누락, FOREIGN KEY 불일치 등을 주기적으로 점검할 수 있습니다.

③ 마이그레이션 전후 구조 비교

데이터 이전(Migration) 후 제약 구조가 원본과 동일한지 검증할 때, 두 환경의 DBA_CONS_COLUMNS 데이터를 비교하여 차이점을 식별할 수 있습니다.


7. 제약 조건 관리 쿼리 패턴 요약

용도 예시 쿼리 비고
PRIMARY KEY 컬럼 확인 WHERE CONSTRAINT_TYPE='P' 기본키 구성 컬럼 조회
FOREIGN KEY 관계 확인 WHERE CONSTRAINT_TYPE='R' 참조 관계 및 컬럼 매핑 분석
CHECK 조건 컬럼 확인 WHERE CONSTRAINT_TYPE='C' 컬럼 값 검증 로직 확인
복합 키 순서 확인 ORDER BY POSITION 컬럼 순서 유지 검증
제약 조건 누락 탐지 MINUS 쿼리로 비교 데이터 품질 감사 시 활용

8. DBA_CONS_COLUMNS의 장점

  • 정확성: 컬럼 단위의 구체적 제약 관계를 제공하여 모델 정합성 확보
  • 자동화 용이성: 메타데이터 기반 문서화 및 품질 리포팅 자동화 가능
  • 보안 감사 지원: FK 관계를 통해 민감 데이터의 전이 추적 가능
  • 시각화 가능성: ERD 또는 데이터 라인리지(Lineage) 분석의 근간이 됨
  • 데이터 표준화: 제약 구조를 기반으로 데이터 정의서 자동 생성 가능

9. DBA_CONS_COLUMNS과 관련된 주요 뷰 비교

뷰 이름 설명 활용 목적
DBA_CONSTRAINTS 제약 조건의 정의 및 유형, 상태 관리 무결성 관리 및 제약 분석
DBA_CONS_COLUMNS 제약 조건과 컬럼 매핑 정보 제공 컬럼 레벨 무결성 분석
DBA_IND_COLUMNS 인덱스와 컬럼 매핑 정보 성능 최적화 및 인덱스 구조 검증
DBA_TAB_COLUMNS 테이블 컬럼 정의 제약 및 데이터 타입 구조 파악
DBA_COL_COMMENTS 컬럼 주석(Comment) 정보 문서화 및 표준 관리

10. 결론

DBA_CONS_COLUMNS는 Oracle 데이터베이스의 제약 조건 구조를 이해하는 데 있어 **핵심적인 메타데이터 뷰**입니다. 이 뷰를 활용하면 테이블 간의 관계, 컬럼별 제약 구조, 무결성 정책을 정밀하게 분석할 수 있으며, 데이터 모델의 품질 관리 및 데이터 거버넌스 체계를 강화할 수 있습니다. DBA_CONS_COLUMNS는 단순한 데이터 구조 정보가 아니라, **데이터베이스의 논리적 일관성과 신뢰성을 보장하는 도구**로서, DBA와 데이터 아키텍트 모두에게 필수적인 분석 자원입니다.


출처

728x90