데이터 모델의 이해
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 |