[TIL-260226] DB 기초: 데이터 모델링, 정규화, SQL 분류

2026. 2. 27. 09:27·DB

데이터 모델링

🔴 외래키(FK)는 개발 초기 단계에서는 설정을 지양한다.

외래키(FK)는 릴레이션 간의 결합도를 높여 데이터베이스를 복잡하게 만들기 때문에, 개발 초기 단계에서는 설정을 지양한다.

참조하는 기본키(PK)가 삭제될 경우 외래키에도 영향을 미쳐 데이터 무결성 제약이 발생할 수 있으므로, 외래키는 모든 테이블 구조가 확정된 후 가장 마지막 단계에서 설정하는 것이 좋다.

 

관계 데이터 모델의 제약

  • 개체 무결성 제약조건 (기본키 제약)
    릴레이션에서 기본키를 구성하는 속성은 NULL이나 중복 값을 가질 수 없다.
  • 참조 무결성 제약조건 (외래키 제약)
    자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다.

 

데이터베이스 설계 과정

요구사항 분석(요구 사항 명세서 작성) -> 개념적 설계(ERD 작성) -> 논리적 설계(테이블 구조 정의) -> 물리적 설계(인덱스, 저장 방식 등 결정) -> 구현(SQL문 작성, 데이터베이스 생성)

 

ERD 관계의 종류

  • 일대일(1:1) 관계

  • 일대다(1:N) 관계

  • 다대다(N:M) 관계
    (실제 구현 시 중간 테이블을 사용하여 두 개의 관계로 변환)

 

ERD 관계 설정 시 고려사항

  • 기본키 선택
    • 자연키: 실제 데이터에서 고유한 값 (예: 주민번호, 이메일)
    • 대리키: 인위적으로 생성한 식별자 (예: 자동증가 ID) ✨요즘 트렌드
  • 외래키 설정
    • 두 테이블 간 관계를 정의
    • 부모 테이블의 기본키를 자식 테이블에 포함시킴
  • 정규화 수준 결정
    • 보통 3정규형까지 진행 (더 높은 정규형은 복잡해질 수 있음)

 

데이터베이스 설계 방법론

  • 하향식 접근법
    • 전체 시스템 먼저 파악하고 세부사항으로 내려가는 방식
    • ERD 먼저 그리고 테이블 변환
  • 상향식 접근법
    • 세부적인 데이터 요소부터 시작해 전체 구조로 올라가는 방식
    • 기존 데이터 분석하여 모델 작성
  • 프로토타입 접근법
    • 일부 모델을 빠르게 구현, 테스트한 후 개선
    • 애자일 개발에 적합

정규화

이상현상

  • 삽입이상
    데이터 삽입 시 특정 열에 해당하는 값이 없어서 필요하지 않은 NULL을 강제로 입력해야 하는 현상
  • 삭제이상
    데이터 삭제 시 유용한 다른 데이터까지 함께 삭제되는 현상
  • 수정이상
    중복 데이터 중에서 일부만 수정되어 데이터의 불일치 문제가 발생하는 현상

 

함수적 종속성

속성들 간의 관련성을 말한다. 하나의 릴레이션에는 하나의 함수적 종속성만이 존재하도록 정규화를 하게 된다.

  • 부분 함수적 종속
    속성집합 Y가 속성집합 X의 전체가 아닌 일부분에도 함수적으로 종속됨
  • 완전 함수적 종속
    속성집합 Y가 속성집합 X 전체에 대해서만 함수적으로 종속됨

 

정규화

  • 관계형 데이터베이스 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스.
  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법.
  • 함수적 종속성을 이용해서 연관성 있는 속성들을 분류하고, 각 릴레이션에서 이상현상이 생기지 않도록 하는 과정.

정규화 단계

  • 제1정규화(1NF): 모든 속성의 도메인이 원자 값으로만 구성되어 있어야 한다.
  • 제2정규화(2NF): 부분 함수 종속 관계가 있을 경우 별도의 테이블로 분리한다.
  • 제3정규화(3NF): 이행적 함수 종속 관계가 있을 경우 별도의 테이블로 분리한다.

📌 BCNF, 제4정규화, 제5정규화가 더 있지만, 일반적으로 제3정규화까지만 수행.

정규화의 특징

  1. 정규화 정도가 높은 경우단점: 물리적 접근이 복잡해질 수 있고, 길이가 짧은 데이터 발생할 수 있다.
  2. 장점: 유연한 데이터 구축할 수 있고, 데이터의 정확성 높아진다.
  1. 정규화 정도가 낮은 경우단점: 데이터에 많은 LOCK이 발생하거나 길이가 긴 데이터 발생할 수 있다.
  2. 장점: 데이터 결합 처리가 감소되고, 물리적 접근이 단순할 수 있다.

 

비정규화

정규화를 하면 성능 향상에 도움이 되지만, 경우에 따라 분리해 놓은 테이블을 성능 향상의 목적으로 다시 합쳐야 할 수도 있다. 그럴 경우 조인을 사용하는데, 너무 많은 조인이 발생하면 부하를 줄이기 위해 다시 합치는 것도 고려해야 한다.

 

지나치게 자주 발생하는 조인 대상 테이블을 다시 합치는 작업 -> 비정규화.

비정규화: 정규화의 반대 과정으로 데이터베이스 성능 최적화를 위해 중복 데이터를 추가하거나, 데이터를 그룹화하는 작업

 


SQL

  • Structured Query Language의 약자로, DBMS에서 사용하는 데이터 표준 질의 및 처리 언어이다.
  • 타 언어에 비해 배우고 사용하기 쉽고, DBMS 종류 상관없이 사용 가능하다.
  • 개발자, DBA, DB 모델링 종사자들이 필수로 알아야 하는 언어이다.

SQL의 분류

  • DDL(Data Definition Language) - 데이터 조작어
    • CREATE, DROP, ALTER, TRUNCATE
  • DML(Data Manipulation Language) - 데이터 조작어
    • SELECT, INSERT, UPDATE, DELETE
  • DCL(Data Control Language) - 데이터 제어어
    • GRANT, REVOKE
  • TCL(Transaction Control Language) - 트랜잭션 처리어
    • COMMIT, ROLLBACK, SAVEPOINT(오라클에만 있음)

 


❕느낀점

수업 시간에 보여주신 예시 ER 다이어그램을 보며 실제 ERD가 어떻게 생겼고, 이걸 어떻게 이해할 수 있는지 알게 되었다. https://www.erdcloud.com/라는 ERD 그리기 사이트를 알게 되면서, 다음 프로젝트 때 ERD를 잘 그릴 수 있도록 미리 숙지해놔야 겠다고 생각했다.

'DB' 카테고리의 다른 글

[TIL-260304] DB 기초: SET, 그룹 함수, 주요 함수  (0) 2026.03.04
[TIL-260303] DB 기초: 제약 조건, SELECT, WHERE 조건  (0) 2026.03.04
[TIL-260227] DB 기초: SQL 정의하기  (0) 2026.02.27
[TIL-260225] DB 기초: 데이터베이스 시스템과 데이터 모델링  (0) 2026.02.25
[TIL-260126] Supabase(수파베이스)란?  (0) 2026.02.16
'DB' 카테고리의 다른 글
  • [TIL-260303] DB 기초: 제약 조건, SELECT, WHERE 조건
  • [TIL-260227] DB 기초: SQL 정의하기
  • [TIL-260225] DB 기초: 데이터베이스 시스템과 데이터 모델링
  • [TIL-260126] Supabase(수파베이스)란?
hee-on
hee-on
작은 기록을 모아 꾸준히 성장해 나가는 개발 기록 공간입니다💻
  • hee-on
    희온의 dev log
    hee-on
  • 전체
    오늘
    어제
    • 전체 글 (46)
      • About (2)
      • Java (15)
      • Spring (4)
      • Spring Boot (2)
      • Front-end (6)
      • 알고리즘 (6)
        • Do it 알고리즘 코딩테스트 (자바편) (4)
      • DB (7)
      • Git (1)
      • 개발 지식 (2)
      • 일상 || 잡담 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    Servlet
    db
    백엔드
    백준
    react
    SQL
    알고리즘
    JSP
    소개
    개발자
    코테
    SpringBoot
    JavaScript
    Spring
    MVC
    깃허브 코파일럿
    til
    안티그래비티
    취준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hee-on
[TIL-260226] DB 기초: 데이터 모델링, 정규화, SQL 분류
상단으로

티스토리툴바