🔌 SPARTA/Courses

스탠다드반 2회차: 데이터 베이스 모델링

eunjiom 2026. 2. 5. 20:26

데이터 모델의 이해

1. 모델링이란

  •  유의미한 정보를 디지털로 가져오기 위해 변환하는 작업

2. 3가지 과정

  • 추상화: 정말 필요한 정보만 가져오기
  • 단순화: 수많은 특징 중에 필요한 정보만 남기기로 결정
  • 명확하: 오해 없이 규칙을 명확하게 정의

3. 중요한 이유

  • 파급 효과: 작은 실수 > 큰 돈, 노력
  • 간결한 표현
  • 데이터 품질: 좋은 데이터 모델은 품질 보장

4. 좋은 데이터 모델 유의

  • 중복성: 하나의 정보는 한 곳에만
  • 비유연성: 변화에 유연하게 대처
  • 비일관성: 관계 명확해야 함

5. 모델링 3단계

  • 개념적 데이터 모델링: 스케치 / 추상적으로 표현
  • 논리적 데이터 모델링: ERD 사용 / 상세 설계도 / 표준적 설계
  • 물리적 데이터 모델링: 시공 단계

6. 데이터 베이스 3단계 스키마 구조

  • 외부 스키마: 사용자가 봄 / View
  • 개념 스키마: ERD
  • 내부 스키마: 실제 파일이 저장되는 곳

7. 모델 핵심 3대요소: 엔터티, 속성, 관계

 

엔터티

1. 개념

  • 업무에서 필요하고 관리해야 할 정보의 대상
  • 정보의 주인공(명사)
  • 사용자, 게시물, 댓글, 해시태그 등 각각의 엔터티

2. 자격요건

 

1) 업무에서 필요한 정보

 

2) 유일한 식별자에 의해 식별 가능

  • 유저 = user_id
  • 학교 = 학번

3) 2개 이상의 데이터를 가진 집합

  • 유저 여러명

4) 업무 프로세스에 의해 반드시 이용

 

5) 1개 이상의 속성을 가져야 함

  • 학번 뿐만 아니라 주소, 이름을 가져야 함

6) 최소 1개 이상의 관계

 

3. 명명 규칙

  • 현업 업무에서 사용하는 용어
  • 약어 사용 X
  • 이론 시험에선 단수
  • 엔터티 이름 중복 X
  • 의미에 맞게 사용

속성

1. 개념

  • 엔터티가 가지고 있는 세부 정보, 최소 단위의 정보
  • USER: id, name, email
  • 연락처 X : 더 쪼갤 수 있음 > 번호, 메일, 카톡id 등
  • POST: id, content, view_count

2. 좋은 속성

 

1) 꼭 필요한 속성만

 

2) 하나의 속성 = 하나의 값

  • 콤마 X
  • DB에선 배열 리스트 사용 X

3) 하나의 속성 = 하나의 의미

 

3. 속성 종류

 

1) 특성에 따른 분류

  • 기본 속성: 원래 업무에 존재 ex) 혈액형 등
  • 설계 속성: 인위적으로 만든 것 ex) 학번 등
  • 파생 속성: 다른 속성 값에서 변형 ex) 이자액 등

2) 엔터티

 

4. 속성의 값 범위: 도메인

  • 값의 범위: 최대 글자, 정해진 값 범위

관계

1. 개념

  • 2개 이상의 엔터티가 업무적으로 의미있는 연관성을 가지고 상호작용(동사 역할)
  • 댓글 > 게시물 필요
  • 주문 > 주문자, 상품 필요
  • 사용자는 댓글을 "남긴다"

2. 관계 종류

 

1) 존재에 의한 관계

  • ~에 소속된다, ~의 일부다

2) 행위에 의한 관계

  • 팔로우, 좋아요, 게시물 작성

3) 관계 이름 짓기: 관계명

  • A > B / B > A (양방향)

4) 관계의 수량: 관계차수

  • 하나의 데이터가 관계 맺고 있는 데이터와 몇 대 몇인지
  • 1:1 = 유저 / 유저 프로필
  • 1:N = 유저 / 게시글
  • M:N = 회원 / 상품 > 한 명이 여러 상품 구매 가능, 상품은 다른 사람도 살 수 있음 (양쪽에서 1:N)

3. 관계 필수 여부: 관계선택사항

  • 필수: 피드는 유저가 필수 / 실선 표현
  • 선택: 유저는 피드 선택 / 점선 또는 동그라미
  • 까마귀발 = N

 

식별자

 

1. 개념

  • id / 유일한 값
  • 기본 키(PK)
  • 외래 키(FK)

2. 4대 조건

  • 유일성: 중복X
  • 최소성: 하나로도 식별 가능
  • 불변성: 전화번호, 메일은 X
  • 존재성: null 값X / NOT NULL 자동 포함

3. 식별자 대표성: 주식별자 vs 보조식별자

  • ex) 이메일: PK(주식별자) / 전화번호: 보조식별자
  • 본질식별자: 원래 있는 식별자(주민번호, username)
  • 인조식별자: 인위적으로 만든 식별자(학번, user_id)
  • 인조식별자가 보안적인 측면으로 좋음

4. 관계 종류를 결정하는 식별자(ERD 핵심)

 

1) 식별자 관계

  • 복합 PK
  • 부모PK [게시글] > 자식PK [게시물_해시태그]

2) 비식별자 관계

  • 독자적인 PK 만들고 나머지를 FK

정규화

1. 개념

  • 엑셀 시트 나누는 것
  • 테이블을 잘게 나누는 것

2. 왜 필요한가

  • 데이터 중복 최소화 / 일관성 보장
  • 나쁜 테이블 예시: 하나의 테이블에 저장 > 게시물 쓸 때마다 중복 저장 > 이상현상 발생

3. 3가지 이상현상

  • 갱신 이상: 이메일 변경했을 때 중복된 데이터 만큼 변경해야 함
  • 삽입 이상: 게시물 작성 안 하면 유저 등록 X
  • 삭제 이상: 게시물 삭제 했을 때 유저 정보도 삭제됨

4. 함수적 종속

  • X(결정자)를 알면 Y(종속자)를 구할 수 있다
  • id를 알면 이름을 알 수 있다 / 사원번호를 알면 집 주소를 알 수 있다

5. 중복 제거 1단계: 제1정규형(1NF)

  • 모든 칸에는 값 하나만
  • 나쁜 테이블: 하나 해시태그 값에 여러 태그 값 나열(,)
  • 중복을 차라리 허용해서 하나의 해시태그 값만 입력
user_id    post_id      tag
1	1		#hi
1	1 		#bye

 

6. 중복 제거 2단계: 제2정규형(2NF)

  • 제1정규형 만족
  • 모든 속성이 PK 종속(부분 함수 종속 제거)
  • 부분 함수 종속
    : 이름 > 유저id 종속 / 게시글 > 게시글id 종속
    : 게시글id > 유저id 종속X
    = 종속 되어 있는 것끼리 독립

7. 중복 제거 3단계: 제3정규형

  • 제2정규형 만족
  • 이행 함수 종속 제거
    : PK가 아닌 FK끼리 종속하면 독립

트랜잭션

1. ACID 원칙

  • 원자성(All or Nothing): 성공 or 실패
  • 일관성: 정해진 규칙 지켜야 함
    / 사용자가 이미 존재하는 이메일로 회원가입 > 유니크 제약 조건이 거부
  • 고립성/격리성: 남에게 방해X / 동시 실행될 때 혼자서 순서대로 실행되는 것처럼 보여야 함
    ex) 좋아요 999에서 동시에 좋아요 눌렀을 때 1000으로 보임 > 최종 좋아요는 1001
  • 지속성: 성공했으면 영구적으로 보존

'🔌 SPARTA > Courses' 카테고리의 다른 글

[숙련 Spring] Spring Boot 활용하기  (0) 2026.02.10
스탠다드반 3회차: 실전 SQL  (0) 2026.02.09
스탠다드반 1회차: MVC & REST API  (0) 2026.02.02
Spring MVC / Data JPA  (0) 2026.01.30
Spring 시작하기  (1) 2026.01.29