728x90

데이터베이스의 무결성을 보장하기 위해 기본키(PK), 외래키(FK), 고유 제약조건(UNIQUE) 등이 설정됩니다. 이러한 제약조건이 어떤 컬럼에 설정되어 있는지를 확인하려면 ALL_CONS_COLUMNS 뷰를 반드시 이해하고 있어야 합니다.
이 글에서는 Oracle의 ALL_CONS_COLUMNS 뷰의 구조와 함께, ALL_CONSTRAINTS와 연계하여 실무에서 제약조건을 분석하는 방법을 자세히 설명합니다.
1. ALL_CONS_COLUMNS란?
ALL_CONS_COLUMNS는 사용자가 접근 가능한 테이블 또는 뷰의 제약조건에 연결된 컬럼 정보를 보여주는 시스템 뷰입니다. 즉, 어떤 제약조건이 어떤 컬럼에 적용되었는지를 확인하는 데 쓰입니다.
2. 주요 컬럼 설명
| 컬럼명 | 설명 |
|---|---|
| OWNER | 제약조건이 설정된 테이블의 소유자 |
| TABLE_NAME | 제약조건이 적용된 테이블 이름 |
| CONSTRAINT_NAME | 제약조건 이름 (ALL_CONSTRAINTS와 연결) |
| COLUMN_NAME | 제약조건이 적용된 컬럼 이름 |
| POSITION | 복합 키에서 컬럼의 순서 |
3. 관련 뷰 비교
| 뷰 이름 | 역할 | 주요 컬럼 |
|---|---|---|
| ALL_CONS_COLUMNS | 제약조건이 적용된 컬럼 정보 | TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME |
| ALL_CONSTRAINTS | 제약조건 정의 및 타입 | CONSTRAINT_NAME, CONSTRAINT_TYPE, STATUS |
| DBA_CONS_COLUMNS | DB 전체 제약조건 컬럼 정보 | DBA 권한 필요 |
4. 실무 활용 예제
4.1 특정 테이블의 제약조건 컬럼 확인
SELECT COLUMN_NAME, CONSTRAINT_NAME
FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME = 'EMPLOYEES'
AND OWNER = 'HR';
4.2 제약조건과 유형까지 함께 조회 (JOIN 사용)
SELECT c.CONSTRAINT_NAME, c.CONSTRAINT_TYPE, col.COLUMN_NAME
FROM ALL_CONSTRAINTS c
JOIN ALL_CONS_COLUMNS col
ON c.CONSTRAINT_NAME = col.CONSTRAINT_NAME
WHERE col.TABLE_NAME = 'EMPLOYEES'
AND col.OWNER = 'HR';
4.3 외래키(FK)가 설정된 컬럼 목록 조회
SELECT col.TABLE_NAME, col.COLUMN_NAME, con.R_CONSTRAINT_NAME
FROM ALL_CONS_COLUMNS col
JOIN ALL_CONSTRAINTS con
ON col.CONSTRAINT_NAME = con.CONSTRAINT_NAME
WHERE con.CONSTRAINT_TYPE = 'R';
4.4 복합 키(Composite Key) 컬럼 순서 파악
SELECT CONSTRAINT_NAME, COLUMN_NAME, POSITION
FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME = 'ORDERS'
ORDER BY POSITION;
5. 제약조건 컬럼 정보 관리 전략
- 모델링 도구 연계: ALL_CONS_COLUMNS 데이터를 데이터 모델링 툴로 내보내 구조를 시각화할 수 있습니다.
- ERD 자동 생성: 제약조건 컬럼과 ALL_CONSTRAINTS를 조합하면 ERD 구성 자동화에 활용 가능합니다.
- 데이터 이관 전 검증: 제약조건 컬럼이 일치하는지 확인하여 데이터 마이그레이션 리스크를 줄입니다.
- 보안 감사: 외래키 컬럼을 통해 민감정보가 연결된 테이블 추적 가능
6. 제약조건 타입 요약
| 타입 | 설명 | 코드 |
|---|---|---|
| PRIMARY KEY | 기본키 | P |
| FOREIGN KEY | 외래키 | R |
| UNIQUE | 고유 제약조건 | U |
| CHECK | 조건 제약 | C |
7. 결론
Oracle의 ALL_CONS_COLUMNS 뷰는 제약조건이 어떤 컬럼에 설정되어 있는지를 식별하는 데 필수적인 도구입니다. ALL_CONSTRAINTS와의 조합을 통해 데이터베이스 구조를 정밀하게 파악할 수 있으며, 이는 데이터 무결성 확보, 보안 점검, 모델링 자동화 등에 폭넓게 활용됩니다. 실무 개발자 및 DBA는 제약조건의 유형과 적용 위치를 명확히 파악함으로써 시스템 안정성과 유지보수성을 향상시킬 수 있습니다.
8. 참고자료
- Oracle Database 21c Reference Guide: https://docs.oracle.com/en/database/
- Oracle SQL Language Reference
- 실제 프로젝트 제약조건 감사 보고서 (내부 문서 기반)
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ALL_IND_EXPRESSIONS 완전 분석 : 함수 기반 인덱스 추적과 활용 전략 (0) | 2025.06.16 |
|---|---|
| [ORACLE] ALL_IND_COLUMNS 완벽 가이드 : 인덱스 컬럼 조회와 실전 활용 (0) | 2025.06.16 |
| [ORACLE] ALL_COL_COMMENTS 뷰 활용 법 : 컬럼 설명 관리의 핵심 (0) | 2025.06.16 |
| [ORACLE] ALL_TAB_PRIVS 뷰 완벽 가이드 : 테이블 권한 조회 및 실무 활용법 (0) | 2025.06.15 |
| [ORACLE] ALL_SOURCE 뷰 완벽 가이드 : PL/SQL 소스코드 관리 (0) | 2025.06.15 |