SQL의 분류

이강용·2026년 9월 22일

SQLD

목록 보기
4/12

SQL의 개념과 특징

  • SQL(Structured Query Language)은 관계형 데이터베이스 데이터를 정의·조작·제어하는 표준 질의어
  • 1986년 ANSI 표준으로 채택되었으며, 대부분의 관계형 DBMS에서 공통적으로 지원
  • 절차적 언어가 아닌 비절차적 언어
  • 어떻게 처리할지가 아니라, 무엇을 원하는지를 기술
  • 사람이 읽고 쓰기 쉬운 영어 문장과 유사한 구조로 작성
  • 기능에 따라 DDL, DML, DCL, TCL 4가지 분류

DDL(Data Definition Language)

  • 데이터 정의어로, 데이터베이스 객체(테이블·뷰·인덱스 등)의 구조를 정의·변경·삭제하는 명령
  • 실행 즉시 자동 COMMIT되어 ROLLBACK으로 되돌릴 수 없음
  • 주요 명령어
    • CREATE : 객체 생성
    • ALTER : 객체 구조 변경
    • DROP : 객체 삭제
    • TRUNCATE : 테이블의 모든 행 삭제(테이블 구조는 유지)
    • RENAME : 객체 이름 변경

DML(Data Manipulation Language)

  • 데이터 조작어로, 테이블의 데이터를 조회·삽입·수정·삭제 하는 명령어
  • 자동 COMMIT되지 않으므로 COMMIT 또는 ROLLBACK으로 변경을 확정하거나 취소할 수 있음
  • 주요 명령어
    • SELECT : 데이터 조회
    • INSERT : 데이터 삽입
    • UPDATE : 데이터 수정
    • DELETE : 데이터 삭제

DCL(Data Control Language)

  • 데이터 제어어로, 데이터베이스 사용자에게 권한을 부여하거나 회수하는 명령어
  • 주요 명령어
    • GRANT : 권한 부여
    • REVOKE : 권한 회수

TCL(Transaction Control Language)

  • 트랜잭션 제어어로, DML로 변경된 데이터를 영구 반영하거나 취소하는 명령어
  • 주요 명령어
    • COMMIT : 변경 사항 영구 반영
    • ROLLBACK : 변경 사항 취소
    • SAVEPOINT : 트랜잭션 내 중간 저장점 지정

정규화의 개념

  • 정규화(Normalization)는 데이터 증복을 최소화하고 무결성을 보장하기 위해 테이블을 분해하는 과정
  • 큰 테이블을 작은 단위로 분해하여 이상 현상(Anomaly)을 제거
  • 분해된 테이블은 외래키로 다시 연결되어 원래 데이터를 손실 없이 재구성 할 수 있음(무손실 분해)

이상현상(Anomaly)

  • 잘못 설계된 테이블에서 데이터를 삽입·갱신·삭제할 때 발생하는 문제
  • 데이터 중복으로 인해 발생하며 정규화를 통해 해결

삽입 이상(Insertion Anomaly)

  • 데이터를 삽입할 때 원치 않는 데이터까지 함께 삽입해야 하거나, 삽입 자체가 불가능한 현상

갱신 이상(Update Anomaly)

  • 데이터를 수정할 때 중복된 데이터 중 일부만 변경되어 일관성이 깨지는 현상

삭제 이상(Deletion Anomaly)

  • 데이터를 삭제할 때 함께 삭제되면 안되는 다른 정보까지 같이 사라지는 현상

함수적 종속성(Functional Dependency)

  • 함수적 종속성(FD)은 한 속성의 값이 결정되면 다른 속성의 값이 유일하게 결정되는 관계
  • 표기는 A -> B(A가 B를 결정)로 하며, A를 결정자, B를 종속자라 한다.

완전 함수 종속(Full Functional Dependency)

  • 완전 함수 종속은 결정자에 포함된 모든 속성이 종속자를 결정하는 데 필요한 경우
  • 결정자가 단일 속성일 때는 자동으로 완전 함수 종속이 성립
  • 결정자가 복합키일 때는 복합키 전체가 종속자를 결정해야 함

부분 함수 종속(Partial Functional Dependency)

  • 결정자가 복합키일 때, 복합키의 일부 속성에만 종속이 성립하는 경우
  • 부분 종속은 정규화의 제거 대상이며, 테이블 분해를 통해 완전 함수 종속으로 변환

이행 함수 종속(Transitive Functional Dependency)

  • A -> B이고 B -> C가 성립할 때, A -> C가 성립하는 간접 종속
  • 이행 종속도 정규화에서 제거 대상이며, 중간 결정자를 별도 테이블로 분해

정규화 과정

  • 정규화는 단계별로 진행되며, 각 단계는 특정 종속성을 제거하여 데이터 중복과 이상 현상을 줄임
  • 정규화는 일반적으로 1NF -> 2NF -> 3NF -> BCNF -> 4NF -> 5NF 순서로 진행하며 하위 정규형을 만족한 후 상위 정규형으로 나아감
단계제거되는 종속핵심 조건
제1정규형 (1NF)원자값이 아닌 도메인 (반복군, 다중 값)모든 도메인이 원자값(Atomic value)으로만 구성됨
제2정규형 (2NF)부분 함수 종속제1정규형 만족 + 기본키의 진부분집합이 일반 속성을 결정하는 부분 종속 제거 (완전 함수 종속)
제3정규형 (3NF)이행적 함수 종속제2정규형 만족 + 기본키가 아닌 일반 속성 간의 종속 제거 (A -> B -> C 형태 제거)
BCNF후보키가 아닌 결정자에 의한 종속제3정규형 만족 + 모든 결정자(Determinant)가 반드시 후보키여야 함
제4정규형 (4NF)다치 종속 (Multi-valued Dependency)BCNF 만족 + 하나의 주체에 대해 독립적인 여러 다중 값이 존재하지 않음
제5정규형 (5NF)조인 종속 (Join Dependency)제4정규형 만족 + 테이블을 분해했다가 다시 조인(Join)했을 때 무손실(Lossless)로 원복 가능해야 함

1정규형(1NF)

  • 1NF는 모든 속성이 원자값을 가지는 정규형
  • 조건 : 한 셀에 여러 값이 들어간 다중값, 여러 정보가 합쳐진 복합값을 허용하지 않음
회원번호이름연락처
1001김민수010-1234-5678, 02-111-2222
1002이서연010-9876-5432
1003박지호010-5555-1111, 010-6666-2222, 02-3333-4444

회원번호이름
1001김민수
1002이서연
1003박지호

회원번호연락처
1001010-1234-5678
100102-111-2222
1002010-9876-5432
1003010-5555-1111
1003010-6666-2222
100302-3333-4444

2정규형(2NF)

  • 2NF는 1NF를 만족하면서 부분 함수적 종속이 제거된 정규형
  • 조건 : 모든 비주요 속성이 기본키 전체에 완전 함수적으로 종속
  • 부분 종속은 결정자가 복합키일 때 발생하므로, 단일키 테이블은 자동으로 2NF를 만족
학번 (PK)과목코드 (PK)학생명성적
2026001CS101김민수A
2026001CS102김민수B+
2026002CS101이서연A+

학번 (PK)학생명
2026001김민수
2026002이서연

학번 (PK, FK)과목코드 (PK)성적
2026001CS101A
2026001CS102B+
2026002CS101A+

3정규형(3NF)

  • 3NF는 2NF를 만족하면서, 이행 함수적 종속이 제거된 정규형
  • 조건 : 모든 비주요 속성이 기본키에 직접적으로 종속되어야 하며, 다른 비주요 속성을 거치는 간접 종속은 없어야 함
학번 (PK)학생명학과학과사무실
2026001김민수컴퓨터공학과제1공학관 301호
2026002이서연전자공학과제2공학관 204호
2026003박지호컴퓨터공학과제1공학관 301호

학번 (PK)학생명학과 (FK)
2026001김민수컴퓨터공학과
2026002이서연전자공학과
2026003박지호컴퓨터공학과

학과 (PK)학과사무실
컴퓨터공학과제1공학관 301호
전자공학과제2공학관 204호

반정규화

반정규화의 개념

  • 반정규화(Denormalization)는 의도적으로 일부 정규화를 해제하여 데이터를 중복 저장하거나 테이블을 통합하는 기법
  • 정규화의 반대 개념으로, 역정규화라고도 함
  • 데이터 일관성보다는 조회 성능을 우선시할 때 적용
  • 잘못 적용하면 데이터 무결성이 깨질 수 있으므로 신중하게 결정해야 함

정규화와 성능의 관계

  • 정규화는 데이터 중복을 최소화해 무결성을 강화하지만, 테이블 분리로 조인 횟수가 늘어 조회 성능이 떨어진다.
  • 반정규화는 데이터 중복을 허용해 조회 성능을 높이지만, 갱신·무결성 관리 부담이 늘어난다.
profile
HW + SW = 1

0개의 댓글