[DB 설계] 데이터베이스 모델링(Database Modeling)이란?

iiingkeep·2024년 11월 4일

Database

목록 보기
14/21

데이터베이스 모델링(= DB 설계)

데이터를 어떻게 분류해 저장할지 설계하는 행위

데이터베이스 모델링 이유

특정 규칙으로 일관되게 데이터를 저장하여 데이터를 쉽게 찾을 수 있도록 한다.

데이터베이스 관련 개념

관계형 데이터베이스 RDBMS
관계형 데이터베이스로는 MySQL, MariaDB, PostgreSQL 등이 있다.
관계형 데이터베이스는 여러 테이블(표)로 구성되며 테이블은 컬럼(열)과 로우(행)으로 구성.

PK(Primary Key)

특정 데이터를 식별하기 위해 사용하며 중복과 Null값을 허용하지 않는다.
PK는 변경될 가능성이 없는 값으로 설정해야 하기 때문에 현업에서는 주로 Auto IncrementUUID로 설정한다.

FK(Foreign Key)

다른 테입을의 데이터와 관계를 연결하기 위한 키로, DB는 이에 대해 참조 무결성을 유지할 수 있게 해준다.

데이터베이스 네이밍 규칙

  • 테이블명, 컬럼명
    • 테이블명은 복수형/단수형 둘 중 통일하여 사용
    • 소문자
    • snake_case
    • 축약어 사용 금지
  • SQL문
    • 예약어만 대문자 작성

데이터 설계 시 이상현상(Anomaly)이 일어나는 것을 방지하기 위해 데이터의 중복을 없애는 것이 핵심이며 이 과정을 정규화(Normalization)이라 한다.

데이터베이스 설계 과정

  1. 저장해야 하는 데이터 파악
    대략적인 UI, 요구사항 정의서 등을 통해 파악
  2. 파악한 데이터를 그룹핑해 분류
    ex) 아이디, 패스워드, 이름, 이메일 → 유저
    ex) 게시글 제목, 게시글 내용, 게시글 생성 시간 → 게시글
  3. 테이블로 나타내기

데이터베이스 설계 과정 예시

  1. 저장해야 하는 데이터 파악
    다음과 같은 요구사항이 있을 때 저장할 데이터를 파악해 보자

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

위에서 추출할 수 있는 데이터는 다음과 같다.
이메일, 비밀번호, 이름, 작성자, 게시글 제목, 게시글 내용, 게시글 작성 시간

  1. 파악한 데이터를 그룹핑해 분류
    위에서 추출한 데이터들을 그룹핑 할 수 있는 상위 개념을 찾는다.
    이 상위 개념을 엔터티(Entity) 라고 하며, 데이터베이스의 테이블(Table)이기도 하다.
    이메일, 비밀번호, 이름 → 유저
    작성자, 게시글 제목, 게시글 내용, 게시글 작성 시간 → 게시글

  2. 테이블로 나타내기
    위에서 찾은 엔터티와 데이터를 토대로 테이블을 생성한다.
    users 테이블(유저)

    id이메일비밀번호이름
    1
    2

    posts 테이블(게시글)

    id제목내용작성 시간작성자
    1
    2

    지금은 간단한 예시로, 데이터와 테이블의 수가 적지만 데이터와 테이블이 많아지게 되면 이상 현상이 발생할 가능성도 높아진다. 이를 방지하기 위해 테이블 생성시 지켜야 할 규칙들이 있는데, 이는 다음 게시글에서 작성하도록 하겠다.


참고

이 게시글은 박재성님의 비전공자도 이해할 수 있는 DB 설계 입문/실전 강의를 토대로 작성되었습니다.
https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-db-%EC%84%A4%EA%B3%84-%EC%9E%85%EB%AC%B8/dashboard

profile
혁신적인 백엔드 개발자가 되고자, 기록✏️

0개의 댓글