Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-17] 테이블 설계(DDL)와 제약조건, 그리고 CRUD 실무 구현 본문

OracleStudy

[2026-04-17] 테이블 설계(DDL)와 제약조건, 그리고 CRUD 실무 구현

ki-sd 2026. 4. 18. 01:11

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페이지 데이터를 잘라오는 로직을 획기적으로 간결하게 작성하며 실무적인 서버 사이드 데이터 가공 능력을 끌어올렸다.