ki-sd 님의 블로그
[2026-04-17] 테이블 설계(DDL)와 제약조건, 그리고 CRUD 실무 구현 본문
DB의 골격을 직접 설계하고 제약조건을 걸어 데이터의 오염을 막은 뒤, 웹 애플리케이션과 연동될 게시판 데이터의 CRUD 로직과 페이징 처리를 구현했다.
1. DDL과 5대 무결성 제약조건 (Constraints)
- CREATE, ALTER, DROP 명령어로 테이블 스키마를 생성하고 수정했다.
- 데이터베이스는 애플리케이션의 버그나 사용자의 악의적인 조작으로부터 스스로를 보호해야 한다. 이를 위해 테이블 생성 단계에서 5대 제약조건을 걸었다.
- PRIMARY KEY (PK): 중복 불가 + NULL 불가 (데이터 식별)
- FOREIGN KEY (FK): 타 테이블의 PK 참조 (관계 유지)
- UNIQUE (UK): 중복 불가 (예: 이메일, 전화번호)
- NOT NULL (NN): 비워둘 수 없음
- CHECK (CK): 지정된 범위나 조건의 값만 허용 (예: 나이는 0보다 커야 함)
2. DML을 통한 CRUD와 트랜잭션
- 설계된 게시판(Board) 테이블(VARCHAR2, 장문의 내용을 담는 CLOB, 날짜 타입 DATE 포함)에 INSERT, UPDATE, DELETE를 수행했다.
- 수정이나 삭제 시 WHERE 절을 빠뜨리면 테이블 전체 데이터가 날아가는 참사가 발생할 수 있음을 상기하며, 변경 사항을 물리적 디스크에 확정 짓는 COMMIT과 되돌리는 ROLLBACK 등 트랜잭션의 기본 흐름을 파악했다.
3. 서버 사이드 페이징(Pagination) 처리의 현대화
- 과거 오라클에서 페이징을 구현하려면 ROWNUM과 인라인 뷰를 3중으로 겹쳐 쓰는 매우 복잡한 쿼리를 작성해야 했다.
- 하지만 오라클 12c 버전부터 도입된 표준 ANSI 문법인 OFFSET [건너뛸 행 수] ROWS FETCH NEXT [가져올 행 수] ROWS ONLY 구문을 실습했다. 게시판의 1페이지, 2페이지 데이터를 잘라오는 로직을 획기적으로 간결하게 작성하며 실무적인 서버 사이드 데이터 가공 능력을 끌어올렸다.
'OracleStudy' 카테고리의 다른 글
| [2026-04-21] 오라클 성능 최적화의 핵심, 인덱스(Index)와 DDL/객체 총정리 (1) | 2026.04.21 |
|---|---|
| [2026-04-20] 오라클 핵심 총정리 및 서브쿼리, 뷰(View), 시퀀스의 심화 (0) | 2026.04.20 |
| [2026-04-16] 관계형 데이터의 완성, JOIN과 SubQuery (0) | 2026.04.18 |
| [2026-04-15] 내장 함수, 집계, 그리고 데이터 통계 분석 (0) | 2026.04.18 |
| [2026-04-14] 조건부 필터링(WHERE)과 데이터 정렬(ORDER BY) 심화 (0) | 2026.04.18 |
