DB 설계의 핵심 원칙 및 전체 과정

2025. 8. 20. 14:47개발/DB

반응형

* 이 글은 개발 공부를 위한 블로그글로 지식전달보다는 개발 공부 일지에 초점이 맞춰져 있으니 유의하시길 바랍니다.

DB 설계할 때 이런 개념들 몰라도 아무 문제 없습니다!

- 기본키, 후보키, 대체키, 슈퍼키

출처 : https://blog.naver.com/gongtong/150135665812

- 개체-관계 모델

출처 : https://velog.io/@rg970604/데이터베이스-4.-개념적-데이터-모델링

- 모델링 과정 (개념적 모델링, 논리적 모델링, 물리적 모델링)

출처 : https://velog.io/@devyjkwon/DB-Modeling

- 이상현상 (삭제이상, 삽입이상, 수정이상)

https://velog.io/@h5ss/240129-이상현상과-정규화

- 함수 종속성

https://velog.io/@h5ss/240129-이상현상과-정규화

 

- 제1정규형 ~ 제5정규형, BCNF 정규형 / 부분적 함수 종속, 이행적 함수 종속

출처 : https://sommda.tistory.com/92

 

DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지

중복 없애기 = 정규화

정규화 (Normalization)

- 데이터 중복을 제거하여 이상현상(삽입이상, 삭제이상, 수정이상)을 방지하고 데이터의 무결성을 유지하도록 한다.

- 데이터를 잘못 수정해서 어떤 테이블에서는 수정했으나 다른 테이블에서는 그 데이터가 수정되지 않았을 경우를 수정이상이라고 한다. 나는 정보처리기사 필기 공부를 할 때, 갱신이상 (Update Anomaly) 이라고 배웠던 부분이다.

- 정규형에는 총 6가지 종류의 정규형이 있다. 하지만 실제 현업에서 적용시키는 정규형은 1정규형, 2정규형, 3정규형이다.

- BCNF, 4정규형, 5정규형을 적용시키면 지나치게 테이블이 분리되어서 관리가 복잡해지기 때문이다.

 

DB 설계 전체 과정

1. 저장해야 는 데이터 파악하기

- 요즘 현업에서 글로 이루어진 요구사항 명세서를 작성하지 않는다.

- 완성된 UI를 보고 필요한 데이터를 파악한다.

 

2. 분류하기

- 저장해야하는 데이터를 그룹화. 묶어서 분류한다.

 

아래와 같은 요구사항이 있다면? => 저장 해야할 데이터를 파악한다. 아래에 있는 굵은 키워드들!

  • 회원가입 기능
    • 회원가입을 할 때 이메일, 비밀번호, 이름의 정보를 받는다.
  • 로그인 기능
    • 로그인할 때 이메일, 비밀번호를 활용해서 로그인한다.
  • 게시글 작성 기능
    • 로그인한 사용자만 게시글을 작성할 수 있다.
    • 게시글에는 제목과 내용을 작성할 수 있다.
  • 게시글 조회 기능
    • 작성자, 게시글 제목, 게시글 내용, 게시글 작성 시간을 조회할 수 있어야 한다.

이 키워드들을 모은 다음에, 그룹핑해서 분류하기

 

- 이메일, 비밀번호, 이름 → 사용자

- 작성자, 게시글 제목, 게시글 내용, 게시글 작성 시간 → 게시글

 

테이블로 나타낸다면?

* 엔티티(Entity)는 관련된 속성(데이터 항목)들을 모아놓은 개념적인 집합이며, 보통 실제 데이터베이스의 테이블이 됩니다.

반응형