<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dbstudy</id>
	<title>DBSTUDY - 사용자 기여 [ko]</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dbstudy"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/%ED%8A%B9%EC%88%98:%EA%B8%B0%EC%97%AC/Dbstudy"/>
	<updated>2026-11-06T19:34:52Z</updated>
	<subtitle>사용자 기여</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%A0%84%EC%B2%B4_%EB%AC%B8%EC%84%9C_%EC%A7%80%EB%8F%84&amp;diff=2057</id>
		<title>전체 문서 지도</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%A0%84%EC%B2%B4_%EB%AC%B8%EC%84%9C_%EC%A7%80%EB%8F%84&amp;diff=2057"/>
		<updated>2026-11-04T07:04:24Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 제목 번호 중복 제거, 문서 수 표기 수정&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DB STUDY · SITE MAP&lt;br /&gt;
|제목 = 전체 문서 지도&lt;br /&gt;
|설명 = 위키의 모든 학습 문서를 주제별로 정리한 지도입니다.&amp;lt;br/&amp;gt;무엇부터 읽을지 모르겠다면 위에서 아래로, 찾는 주제가 있다면 바로가기 칩을 눌러 이동하세요.&lt;br /&gt;
|색상 = 초록&lt;br /&gt;
|배지1 = 전체 문서 184개&lt;br /&gt;
|배지2 = 주제 11개&lt;br /&gt;
|배지3 = 분류된 학습 문서 168개&lt;br /&gt;
|배지4 = 정리 기준일 · 2026-11-04&lt;br /&gt;
}}&lt;br /&gt;
{{안내바|강조=주제 바로가기|내용=칩을 누르면 해당 주제로 이동합니다.|우측=[[대문|← 대문으로]]}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0 0 22px;&amp;quot;&amp;gt;{{칩|문구=입문 코스와 학습 과정|보조=10|문서=#입문 코스와 학습 과정|활성=예}}{{칩|문구=데이터 모델링과 설계|보조=9|문서=#데이터 모델링과 설계|활성=예}}{{칩|문구=Oracle 저장 구조와 아키텍처|보조=20|문서=#Oracle 저장 구조와 아키텍처|활성=예}}{{칩|문구=SQL 작성과 PL/SQL|보조=21|문서=#SQL 작성과 PL/SQL|활성=예}}{{칩|문구=SQL 실행 원리와 실행계획|보조=15|문서=#SQL 실행 원리와 실행계획|활성=예}}{{칩|문구=인덱스|보조=11|문서=#인덱스|활성=예}}{{칩|문구=조인과 서브쿼리|보조=20|문서=#조인과 서브쿼리|활성=예}}{{칩|문구=SQL 튜닝과 성능 진단|보조=21|문서=#SQL 튜닝과 성능 진단|활성=예}}{{칩|문구=Oracle 설치와 운영|보조=12|문서=#Oracle 설치와 운영|활성=예}}{{칩|문구=DBA 수행 방법론 (SI 프로젝트)|보조=20|문서=#DBA 수행 방법론 (SI 프로젝트)|활성=예}}{{칩|문구=PostgreSQL · MySQL · 기타 DBMS|보조=16|문서=#PostgreSQL · MySQL · 기타 DBMS|활성=예}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{섹션머리|제목=추천 학습 경로|부제=처음 시작한다면 이 순서로 읽어 보세요.|여백=8px 0 12px}}&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|최소너비 = 120px&lt;br /&gt;
|제목1 = [[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;① 모델링&amp;lt;/span&amp;gt;]] |설명1 = 데이터 구조 설계 |색상1 = 파랑&lt;br /&gt;
|제목2 = [[Oracle 입문|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;② Oracle 기초&amp;lt;/span&amp;gt;]] |설명2 = 아키텍처·SQL·트랜잭션 |색상2 = 빨강&lt;br /&gt;
|제목3 = [[SQL 실행원리 와 과정|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;③ 실행 원리&amp;lt;/span&amp;gt;]] |설명3 = 옵티마이저·통계 |색상3 = 주황&lt;br /&gt;
|제목4 = [[실행계획 읽기 실습|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;④ 실행계획&amp;lt;/span&amp;gt;]] |설명4 = 계획 읽고 병목 찾기 |색상4 = 갈색&lt;br /&gt;
|제목5 = [[인덱스 튜닝 심화|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑤ 인덱스&amp;lt;/span&amp;gt;]] |설명5 = 액세스 효율 |색상5 = 남색&lt;br /&gt;
|제목6 = [[조인 튜닝 심화|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑥ 조인&amp;lt;/span&amp;gt;]] |설명6 = 조인 방식·순서 |색상6 = 초록&lt;br /&gt;
|제목7 = [[AWR 리포트 분석|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑦ 성능 진단&amp;lt;/span&amp;gt;]] |설명7 = AWR·대기 이벤트 |색상7 = 보라&lt;br /&gt;
|제목8 = [[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑧ 실무 방법론&amp;lt;/span&amp;gt;]] |설명8 = SI 프로젝트 수행 |색상8 = 회색&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 입문 코스와 학습 과정 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #256448;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;01 · 코스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 10개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;처음 시작한다면 여기서부터. 단계별 커리큘럼과 교육 과정 모음&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#256448;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;입문 코스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MySQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MySQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#256448;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;교육 과정·커리큘럼&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle database 초급교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle database 초급교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 초보자 학습과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 초보자 학습과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Sql 학습 커리큘럼|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Sql 학습 커리큘럼&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 기초과정 교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 기초과정 교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL SQL 30일 학습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL SQL 30일 학습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 데이터 모델링과 설계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #2b7bb9;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#2b7bb9;&amp;quot;&amp;gt;02 · 설계&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 9개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;업무를 데이터 구조로 — 정규화, ERD, 물리 설계&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#2b7bb9;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;모델링&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 정규화 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 정규화 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 ERD작성 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 ERD작성 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ERD 작성 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ERD 작성 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQLD 데이터 모델링 기출 정리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQLD 데이터 모델링 기출 정리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#2b7bb9;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;물리 설계&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle DB 물리 설계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle DB 물리 설계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[성능을 고려한 설계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;성능을 고려한 설계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[명명규칙 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;명명규칙 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티셔닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티셔닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oracle 저장 구조와 아키텍처 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #6c3483;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#6c3483;&amp;quot;&amp;gt;03 · 구조&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;블록·행·컬럼부터 LOB, RAC 내부 구조까지&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;테이블·블록·컬럼&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[힙테이블(heap table)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;힙테이블(heap table)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 블럭의 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 블럭의 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼의 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼의 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼의 저장순서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼의 저장순서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼저장 방식 개선 (12c 업그레이드)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼저장 방식 개선 (12c 업그레이드)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[컬럼의 순서가 변경시 ROW의 물리적 구조변화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;컬럼의 순서가 변경시 ROW의 물리적 구조변화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[컬럼의 순서가 변경되면 ROW의 물리적 구조도 바뀌는건가?|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;컬럼의 순서가 변경되면 ROW의 물리적 구조도 바뀌는건가?&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE 테이블 컬럼|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE 테이블 컬럼&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블스페이스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블스페이스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[임시 테이블 (Temporary Tables)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;임시 테이블 (Temporary Tables)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[해시 버킷의 저장구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;해시 버킷의 저장구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;LOB&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE LOB|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE LOB&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 LOB 데이터 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 LOB 데이터 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Lob chunk size 최적화 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Lob chunk size 최적화 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Lob 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Lob 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 lob테이블 성능 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 lob테이블 성능 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[RAC환경 lob 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;RAC환경 lob 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;아키텍처·기능&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 GCS 와 GES|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 GCS 와 GES&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 flashback|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 flashback&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티션 테이블 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티션 테이블 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SQL 작성과 PL/SQL ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #16a085;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#16a085;&amp;quot;&amp;gt;04 · SQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 21개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;문법 읽는 법부터 좋은 SQL 작성 습관, 프로시저·함수까지&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;SQL 기초&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 기본|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 기본&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SELECT|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SELECT&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DDL DML DCL TCL|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DDL DML DCL TCL&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle syntax 읽는방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle syntax 읽는방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[BNF(Backus-Naur Form) 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;BNF(Backus-Naur Form) 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클SQL 과 안시SQL|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클SQL 과 안시SQL&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블/인덱스 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블/인덱스 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;SQL 작성 기법&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 작성 가이드|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 작성 가이드&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[효율적인 SQL 작성법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;효율적인 SQL 작성법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[최적의 SQL 작성법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;최적의 SQL 작성법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[CONNECT BY 절|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;CONNECT BY 절&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[원도우 함수|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;원도우 함수&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[정규표현식(regular expression)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;정규표현식(regular expression)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블 샘플링 (Table Sampling)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블 샘플링 (Table Sampling)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[특수문자|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;특수문자&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL SYS.ODCIVARCHAR2LIST이용 unionall 대체|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL SYS.ODCIVARCHAR2LIST이용 unionall 대체&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;PL/SQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PL/SQL 프로시저 / 함수 만드는 법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PL/SQL 프로시저 / 함수 만드는 법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[동적 SQL (Dynamic SQL)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;동적 SQL (Dynamic SQL)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[커서(Cursor) 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;커서(Cursor) 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[예외처리 고급 예시|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;예외처리 고급 예시&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 함수 생성/컴파일 시 권한 에러 조치|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 함수 생성/컴파일 시 권한 에러 조치&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SQL 실행 원리와 실행계획 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #d35400;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#d35400;&amp;quot;&amp;gt;05 · 옵티마이저&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 15개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;옵티마이저가 계획을 세우는 방식과 그것을 읽고 추적하는 방법&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;원리&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 실행원리 와 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 실행원리 와 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[옵티마이져|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;옵티마이져&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;카디널리티 와 셀렉티비티&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[통계정보 갱신|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;통계정보 갱신&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;실행계획&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행 계획|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행 계획&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행 계획을 해석하는 법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행 계획을 해석하는 법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행계획 읽기 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행계획 읽기 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[EXPLAIN PLAN|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;EXPLAIN PLAN&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBMS XPLAN 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[REAL PLAN 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;REAL PLAN 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 플랜 변경 추적 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 플랜 변경 추적 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 트레이스 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 트레이스 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;힌트&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 힌트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 힌트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 힌트 no merge|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 힌트 no merge&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[쿼리 블럭 qb name|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;쿼리 블럭 qb name&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 인덱스 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #1d4e7a;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#1d4e7a;&amp;quot;&amp;gt;06 · 인덱스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 11개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;B*Tree 구조, 클러스터링 팩터, 인덱스 설계와 튜닝&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#1d4e7a;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;구조·종류&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 아키텍처|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 아키텍처&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[B*Tree 인덱스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;B*Tree 인덱스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 인덱스 종류|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 인덱스 종류&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 클러스터링 팩터|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 클러스터링 팩터&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[클러스터링 팩터|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;클러스터링 팩터&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#1d4e7a;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설계·튜닝&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 설계 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 설계 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 튜닝 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 튜닝 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티션 인덱스 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티션 인덱스 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[앞% LIKE 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;앞% LIKE 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 조인과 서브쿼리 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #0b4d40;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#0b4d40;&amp;quot;&amp;gt;07 · 조인&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;NL·Hash·Merge 조인, 서브쿼리 변환과 조건절 Pushdown&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#0b4d40;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;조인 방식&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블 조인 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블 조인 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 조인 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 조인 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[NL 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;NL 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[HASH 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;HASH 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MERGE 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MERGE 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Hash join Probe 단계 처리과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Hash join Probe 단계 처리과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[HASH조인 성능저하 파이썬 예제|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;HASH조인 성능저하 파이썬 예제&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[카테시안 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;카테시안 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[세미조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;세미조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[안티조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;안티조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Rowid 를 이용한 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Rowid 를 이용한 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[조인 튜닝 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;조인 튜닝 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#0b4d40;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;서브쿼리·쿼리 변환&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 unnest|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 unnest&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 no unnest|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 no unnest&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 push subq|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 push subq&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[스칼라 서브쿼리 장단점|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;스칼라 서브쿼리 장단점&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[스칼라 인라인뷰 서브쿼리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;스칼라 인라인뷰 서브쿼리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;JPPD(Join Predicate PushDown,조인절 PUSHDOWN)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[View pushed predicate (조건절 PUSHDOWN)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;View pushed predicate (조건절 PUSHDOWN)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[계층형 쿼리 connect by 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;계층형 쿼리 connect by 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SQL 튜닝과 성능 진단 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #c0392b;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#c0392b;&amp;quot;&amp;gt;08 · 성능&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 21개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;튜닝 대상 찾기, AWR·ASH, 대기 이벤트, 대용량·병렬 처리&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;튜닝 가이드&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE SQL 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE SQL 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBA 성능 튜닝 가이드|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBA 성능 튜닝 가이드&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 튜닝 전문가가 알아야할 필수지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 튜닝 전문가가 알아야할 필수지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[성능 문제 식별 방법론과 튜닝 접근법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;성능 문제 식별 방법론과 튜닝 접근법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 Round Trips|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 Round Trips&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;대상 찾기·진단&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 대상 SQL 찾기|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 대상 SQL 찾기&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Awr을 이용한 sql 튜닝 대상 찾기|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Awr을 이용한 sql 튜닝 대상 찾기&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[AWR 리포트 분석|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;AWR 리포트 분석&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 성능 관리 프로그램|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 성능 관리 프로그램&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle wait event (대기 이벤트) 추적 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle wait event (대기 이벤트) 추적 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Enq: TX - allocate ITL entry vs enq: HW - contention|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Enq: TX - allocate ITL entry vs enq: HW - contention&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Enq:hw-contention|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Enq:hw-contention&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;동적 성능 뷰&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$SESSION|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$SESSION&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$ACTIVE SESSION HISTORY|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$ACTIVE SESSION HISTORY&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$SQL MONITOR|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$SQL MONITOR&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DB 모니터링 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DB 모니터링 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;대용량·병렬&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[대용량 데이터 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;대용량 데이터 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[병렬 쿼리 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;병렬 쿼리 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oracle 설치와 운영 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #5d6d7e;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#5d6d7e;&amp;quot;&amp;gt;09 · 운영&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 12개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;설치, ASM, RAC One Node, 공간 관리와 일상 점검&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#5d6d7e;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설치·구성&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 19c Docker 설치|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 19c Docker 설치&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[설치 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;설치 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ASM 디스크 볼륨 추가 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ASM 디스크 볼륨 추가 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE ASM AFD|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE ASM AFD&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle RAC One Node|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle RAC One Node&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[RAC One Node 서버 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;RAC One Node 서버 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#5d6d7e;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;공간·오브젝트 관리&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 테이블 사용공간 확인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 테이블 사용공간 확인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[세그먼트 (테이블+인덱스+LOB) 사이즈 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;세그먼트 (테이블+인덱스+LOB) 사이즈 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블/인덱스 사이즈 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블/인덱스 사이즈 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[아카이브로그 디스크 사용량 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;아카이브로그 디스크 사용량 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오브젝트 관리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오브젝트 관리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[시스템 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;시스템 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DBA 수행 방법론 (SI 프로젝트) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #7a3e0c;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#7a3e0c;&amp;quot;&amp;gt;10 · 방법론&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;공공·대기업 SI 프로젝트 단계별 수행 절차와 산출물 양식&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;수행 절차&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBA 수행 방법론 (공공/대기업 SI 프로젝트)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[단계별 수행 방법론|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;단계별 수행 방법론&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[분석 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;분석 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[설계 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;설계 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[구축 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;구축 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테스트 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테스트 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[전개 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;전개 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;분석 산출물&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[요구사항 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;요구사항 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 계획서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 계획서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 질의서 샘플|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 질의서 샘플&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[현행 시스템 분석서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;현행 시스템 분석서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설계·구축·테스트 산출물&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[아키텍처 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;아키텍처 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터베이스 설계서((표준/구조/용량/보안 /백업 복구 설계 등)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터베이스 설계서((표준/구조/용량/보안 /백업 복구 설계 등)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터베이스설계서-DB아키텍처-별첨1.DB상세설계내역.xlsx|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터베이스설계서-DB아키텍처-별첨1.DB상세설계내역.xlsx&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DB설치 계획서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DB설치 계획서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[명명규칙 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;명명규칙 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[가용성 테스트 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;가용성 테스트 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[복구 테스트 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;복구 테스트 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL · MySQL · 기타 DBMS ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #336791;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#336791;&amp;quot;&amp;gt;11 · 다른 DBMS&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 16개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;Oracle 외 데이터베이스와 벡터·검색 기술&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;PostgreSQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 개발자가 알아야힐 필수사항|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 개발자가 알아야힐 필수사항&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 설치 후 DBA 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 설치 후 DBA 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 튜닝 전문가가 알아야할 필수 지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 튜닝 전문가가 알아야할 필수 지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 기초과정 교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 기초과정 교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL SQL 30일 학습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL SQL 30일 학습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;MySQL · SQL Server · SQLite&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MySQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MySQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL Server|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL Server&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MS-SQL SERVER 테이블 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MS-SQL SERVER 테이블 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MS-SQL LOB테이블 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MS-SQL LOB테이블 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Sqlite 개발자가 알아야할 필수지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Sqlite 개발자가 알아야할 필수지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;검색·벡터 DB&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[그래프DB 와 벡터DB|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;그래프DB 와 벡터DB&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Chromadb 설치 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Chromadb 설치 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Chromadb 사용 예시|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Chromadb 사용 예시&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[역 인덱싱(Inverted Index)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;역 인덱싱(Inverted Index)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[전체 텍스트 검색 match|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;전체 텍스트 검색 match&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 새로 추가된 문서 ==&lt;br /&gt;
{{설명|제목=지도에 없는 새 문서 찾기|내용=새로 만들어진 문서는 [[특수:새문서|새 문서 목록]]과 [[특수:최근바뀜|최근 바뀜]]에서 확인할 수 있고, 아래 전체 문서 목록에도 자동으로 나타납니다.}}&lt;br /&gt;
&lt;br /&gt;
== 전체 문서 목록 (가나다순, 자동) ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;padding:12px 18px;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;모든 문서 펼쳐 보기&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:10px;&amp;quot;&amp;gt;&lt;br /&gt;
{{Special:AllPages|hideredirects=1}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 위키 운영 · 테스트 문서 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;padding:12px 18px;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;편집자용 문서 펼쳐 보기&#039;&#039;&#039; &amp;lt;span style=&amp;quot;font-size:12px;color:#6c7b72;&amp;quot;&amp;gt;(양식 샘플, 템플릿 시험 문서 등)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:10px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[대문]]&lt;br /&gt;
* [[Form:dbstudy]]&lt;br /&gt;
* [[Sql양식 샘플]]&lt;br /&gt;
* [[Uml 테스트]]&lt;br /&gt;
* [[디비 스터디 템플릿]]&lt;br /&gt;
* [[메뉴 구성 항목]]&lt;br /&gt;
* [[미디어위키 표 샘플]]&lt;br /&gt;
* [[책]]&lt;br /&gt;
* [[책책]]&lt;br /&gt;
* [[테스트]]&lt;br /&gt;
* [[테스트 템플릿만들기]]&lt;br /&gt;
* [[테스트2]]&lt;br /&gt;
* [[테스트3]]&lt;br /&gt;
* [[테스트SQL]]&lt;br /&gt;
* [[테스트폼1]]&lt;br /&gt;
* [[틀테스트]]&lt;br /&gt;
* [[특수:틀목록|틀 목록]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = 함께 만드는 지도&lt;br /&gt;
|제목 = 새 문서를 썼다면 지도에도 올려 주세요.&lt;br /&gt;
|내용 = 이 지도는 주제별로 직접 정리한 목록입니다. 새 문서를 만들었다면 알맞은 주제 칸에 링크를 추가해 주세요.&amp;lt;br/&amp;gt;문서에 &amp;lt;nowiki&amp;gt;[[분류:…]]&amp;lt;/nowiki&amp;gt;를 달아 두면 찾기가 훨씬 쉬워집니다.&lt;br /&gt;
|문서 = 특수:분류&lt;br /&gt;
|링크문구 = 전체 분류 보기 ↗&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[분류:위키 안내]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2056</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2056"/>
		<updated>2026-11-04T07:03:58Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 상단 메뉴에 문서 지도 링크 추가&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[전체 문서 지도|문서 지도]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[Oracle 입문|Oracle 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;인스턴스와 데이터베이스 구조, SQL과 트랜잭션, 사용자·권한, 기동·종료, RMAN 백업까지 — Oracle을 처음 배우는 분을 위한 코스입니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[Oracle 입문#3. 아키텍처|아키텍처]] · [[Oracle 입문#4. 기본 SQL과 데이터 타입|SQL과 데이터 타입]] · [[Oracle 입문#5. 트랜잭션, Undo와 Redo|Undo와 Redo]] · [[Oracle 입문#10. 백업과 복구|백업과 복구]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[Oracle 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 05 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A7%B5&amp;diff=2055</id>
		<title>사이트맵</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A7%B5&amp;diff=2055"/>
		<updated>2026-11-04T07:03:47Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 전체 문서 지도로 넘겨주기&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#넘겨주기 [[전체 문서 지도]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EC%A0%84%EC%B2%B4_%EB%AC%B8%EC%84%9C_%EC%A7%80%EB%8F%84&amp;diff=2054</id>
		<title>전체 문서 지도</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EC%A0%84%EC%B2%B4_%EB%AC%B8%EC%84%9C_%EC%A7%80%EB%8F%84&amp;diff=2054"/>
		<updated>2026-11-04T07:03:46Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 전체 문서 지도(사이트맵) 생성&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DB STUDY · SITE MAP&lt;br /&gt;
|제목 = 전체 문서 지도&lt;br /&gt;
|설명 = 위키의 모든 학습 문서를 주제별로 정리한 지도입니다.&amp;lt;br/&amp;gt;무엇부터 읽을지 모르겠다면 위에서 아래로, 찾는 주제가 있다면 바로가기 칩을 눌러 이동하세요.&lt;br /&gt;
|색상 = 초록&lt;br /&gt;
|배지1 = 문서 {{NUMBEROFARTICLES}}개&lt;br /&gt;
|배지2 = 주제 11개&lt;br /&gt;
|배지3 = 분류된 학습 문서 168개&lt;br /&gt;
|배지4 = 정리 기준일 · 2026-11-04&lt;br /&gt;
}}&lt;br /&gt;
{{안내바|강조=주제 바로가기|내용=칩을 누르면 해당 주제로 이동합니다.|우측=[[대문|← 대문으로]]}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0 0 22px;&amp;quot;&amp;gt;{{칩|문구=입문 코스와 학습 과정|보조=10|문서=#01 · 입문 코스와 학습 과정|활성=예}}{{칩|문구=데이터 모델링과 설계|보조=9|문서=#02 · 데이터 모델링과 설계|활성=예}}{{칩|문구=Oracle 저장 구조와 아키텍처|보조=20|문서=#03 · Oracle 저장 구조와 아키텍처|활성=예}}{{칩|문구=SQL 작성과 PL/SQL|보조=21|문서=#04 · SQL 작성과 PL/SQL|활성=예}}{{칩|문구=SQL 실행 원리와 실행계획|보조=15|문서=#05 · SQL 실행 원리와 실행계획|활성=예}}{{칩|문구=인덱스|보조=11|문서=#06 · 인덱스|활성=예}}{{칩|문구=조인과 서브쿼리|보조=20|문서=#07 · 조인과 서브쿼리|활성=예}}{{칩|문구=SQL 튜닝과 성능 진단|보조=21|문서=#08 · SQL 튜닝과 성능 진단|활성=예}}{{칩|문구=Oracle 설치와 운영|보조=12|문서=#09 · Oracle 설치와 운영|활성=예}}{{칩|문구=DBA 수행 방법론 (SI 프로젝트)|보조=20|문서=#10 · DBA 수행 방법론 (SI 프로젝트)|활성=예}}{{칩|문구=PostgreSQL · MySQL · 기타 DBMS|보조=16|문서=#11 · PostgreSQL · MySQL · 기타 DBMS|활성=예}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{섹션머리|제목=추천 학습 경로|부제=처음 시작한다면 이 순서로 읽어 보세요.|여백=8px 0 12px}}&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|최소너비 = 120px&lt;br /&gt;
|제목1 = [[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;① 모델링&amp;lt;/span&amp;gt;]] |설명1 = 데이터 구조 설계 |색상1 = 파랑&lt;br /&gt;
|제목2 = [[Oracle 입문|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;② Oracle 기초&amp;lt;/span&amp;gt;]] |설명2 = 아키텍처·SQL·트랜잭션 |색상2 = 빨강&lt;br /&gt;
|제목3 = [[SQL 실행원리 와 과정|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;③ 실행 원리&amp;lt;/span&amp;gt;]] |설명3 = 옵티마이저·통계 |색상3 = 주황&lt;br /&gt;
|제목4 = [[실행계획 읽기 실습|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;④ 실행계획&amp;lt;/span&amp;gt;]] |설명4 = 계획 읽고 병목 찾기 |색상4 = 갈색&lt;br /&gt;
|제목5 = [[인덱스 튜닝 심화|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑤ 인덱스&amp;lt;/span&amp;gt;]] |설명5 = 액세스 효율 |색상5 = 남색&lt;br /&gt;
|제목6 = [[조인 튜닝 심화|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑥ 조인&amp;lt;/span&amp;gt;]] |설명6 = 조인 방식·순서 |색상6 = 초록&lt;br /&gt;
|제목7 = [[AWR 리포트 분석|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑦ 성능 진단&amp;lt;/span&amp;gt;]] |설명7 = AWR·대기 이벤트 |색상7 = 보라&lt;br /&gt;
|제목8 = [[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|&amp;lt;span style=&amp;quot;color:#fff;&amp;quot;&amp;gt;⑧ 실무 방법론&amp;lt;/span&amp;gt;]] |설명8 = SI 프로젝트 수행 |색상8 = 회색&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 01 · 입문 코스와 학습 과정 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #256448;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;01 · 코스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 10개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;처음 시작한다면 여기서부터. 단계별 커리큘럼과 교육 과정 모음&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#256448;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;입문 코스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MySQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MySQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#256448;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;교육 과정·커리큘럼&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle database 초급교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle database 초급교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 초보자 학습과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 초보자 학습과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Sql 학습 커리큘럼|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Sql 학습 커리큘럼&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 기초과정 교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 기초과정 교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL SQL 30일 학습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL SQL 30일 학습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 02 · 데이터 모델링과 설계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #2b7bb9;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#2b7bb9;&amp;quot;&amp;gt;02 · 설계&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 9개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;업무를 데이터 구조로 — 정규화, ERD, 물리 설계&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#2b7bb9;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;모델링&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 정규화 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 정규화 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 모델링 ERD작성 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 모델링 ERD작성 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ERD 작성 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ERD 작성 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQLD 데이터 모델링 기출 정리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQLD 데이터 모델링 기출 정리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#2b7bb9;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;물리 설계&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle DB 물리 설계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle DB 물리 설계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[성능을 고려한 설계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;성능을 고려한 설계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[명명규칙 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;명명규칙 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티셔닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티셔닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 03 · Oracle 저장 구조와 아키텍처 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #6c3483;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#6c3483;&amp;quot;&amp;gt;03 · 구조&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;블록·행·컬럼부터 LOB, RAC 내부 구조까지&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;테이블·블록·컬럼&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;11&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[힙테이블(heap table)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;힙테이블(heap table)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터 블럭의 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터 블럭의 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼의 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼의 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼의 저장순서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼의 저장순서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 컬럼저장 방식 개선 (12c 업그레이드)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 컬럼저장 방식 개선 (12c 업그레이드)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[컬럼의 순서가 변경시 ROW의 물리적 구조변화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;컬럼의 순서가 변경시 ROW의 물리적 구조변화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[컬럼의 순서가 변경되면 ROW의 물리적 구조도 바뀌는건가?|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;컬럼의 순서가 변경되면 ROW의 물리적 구조도 바뀌는건가?&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE 테이블 컬럼|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE 테이블 컬럼&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블스페이스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블스페이스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[임시 테이블 (Temporary Tables)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;임시 테이블 (Temporary Tables)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[해시 버킷의 저장구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;해시 버킷의 저장구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;LOB&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE LOB|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE LOB&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 LOB 데이터 구조|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 LOB 데이터 구조&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Lob chunk size 최적화 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Lob chunk size 최적화 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Lob 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Lob 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 lob테이블 성능 테스트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 lob테이블 성능 테스트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[RAC환경 lob 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;RAC환경 lob 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#6c3483;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;아키텍처·기능&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 GCS 와 GES|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 GCS 와 GES&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 flashback|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 flashback&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티션 테이블 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티션 테이블 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 04 · SQL 작성과 PL/SQL ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #16a085;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#16a085;&amp;quot;&amp;gt;04 · SQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 21개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;문법 읽는 법부터 좋은 SQL 작성 습관, 프로시저·함수까지&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;SQL 기초&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 기본|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 기본&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SELECT|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SELECT&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DDL DML DCL TCL|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DDL DML DCL TCL&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle syntax 읽는방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle syntax 읽는방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[BNF(Backus-Naur Form) 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;BNF(Backus-Naur Form) 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클SQL 과 안시SQL|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클SQL 과 안시SQL&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블/인덱스 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블/인덱스 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;SQL 작성 기법&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;9&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 작성 가이드|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 작성 가이드&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[효율적인 SQL 작성법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;효율적인 SQL 작성법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[최적의 SQL 작성법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;최적의 SQL 작성법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[CONNECT BY 절|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;CONNECT BY 절&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[원도우 함수|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;원도우 함수&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[정규표현식(regular expression)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;정규표현식(regular expression)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블 샘플링 (Table Sampling)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블 샘플링 (Table Sampling)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[특수문자|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;특수문자&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL SYS.ODCIVARCHAR2LIST이용 unionall 대체|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL SYS.ODCIVARCHAR2LIST이용 unionall 대체&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#16a085;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;PL/SQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PL/SQL 프로시저 / 함수 만드는 법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PL/SQL 프로시저 / 함수 만드는 법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[동적 SQL (Dynamic SQL)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;동적 SQL (Dynamic SQL)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[커서(Cursor) 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;커서(Cursor) 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[예외처리 고급 예시|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;예외처리 고급 예시&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 함수 생성/컴파일 시 권한 에러 조치|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 함수 생성/컴파일 시 권한 에러 조치&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 05 · SQL 실행 원리와 실행계획 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #d35400;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#d35400;&amp;quot;&amp;gt;05 · 옵티마이저&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 15개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;옵티마이저가 계획을 세우는 방식과 그것을 읽고 추적하는 방법&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;원리&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 실행원리 와 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 실행원리 와 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[옵티마이져|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;옵티마이져&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;카디널리티 와 셀렉티비티&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[통계정보 갱신|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;통계정보 갱신&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;실행계획&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행 계획|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행 계획&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행 계획을 해석하는 법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행 계획을 해석하는 법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[실행계획 읽기 실습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;실행계획 읽기 실습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[EXPLAIN PLAN|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;EXPLAIN PLAN&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBMS XPLAN 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[REAL PLAN 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;REAL PLAN 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 플랜 변경 추적 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 플랜 변경 추적 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 트레이스 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 트레이스 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#d35400;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;힌트&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 힌트|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 힌트&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 힌트 no merge|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 힌트 no merge&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[쿼리 블럭 qb name|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;쿼리 블럭 qb name&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 06 · 인덱스 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #1d4e7a;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#1d4e7a;&amp;quot;&amp;gt;06 · 인덱스&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 11개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;B*Tree 구조, 클러스터링 팩터, 인덱스 설계와 튜닝&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#1d4e7a;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;구조·종류&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 아키텍처|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 아키텍처&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[B*Tree 인덱스|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;B*Tree 인덱스&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오라클 인덱스 종류|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오라클 인덱스 종류&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 클러스터링 팩터|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 클러스터링 팩터&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[클러스터링 팩터|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;클러스터링 팩터&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#1d4e7a;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설계·튜닝&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 설계 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 설계 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인덱스 튜닝 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인덱스 튜닝 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[파티션 인덱스 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;파티션 인덱스 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[앞% LIKE 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;앞% LIKE 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 07 · 조인과 서브쿼리 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #0b4d40;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#0b4d40;&amp;quot;&amp;gt;07 · 조인&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;NL·Hash·Merge 조인, 서브쿼리 변환과 조건절 Pushdown&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#0b4d40;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;조인 방식&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;12&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블 조인 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블 조인 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 조인 방식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 조인 방식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[NL 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;NL 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[HASH 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;HASH 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MERGE 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MERGE 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Hash join Probe 단계 처리과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Hash join Probe 단계 처리과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[HASH조인 성능저하 파이썬 예제|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;HASH조인 성능저하 파이썬 예제&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[카테시안 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;카테시안 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[세미조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;세미조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[안티조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;안티조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Rowid 를 이용한 조인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Rowid 를 이용한 조인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[조인 튜닝 심화|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;조인 튜닝 심화&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#0b4d40;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;서브쿼리·쿼리 변환&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 unnest|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 unnest&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 no unnest|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 no unnest&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[서브쿼리 push subq|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;서브쿼리 push subq&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[스칼라 서브쿼리 장단점|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;스칼라 서브쿼리 장단점&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[스칼라 인라인뷰 서브쿼리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;스칼라 인라인뷰 서브쿼리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;JPPD(Join Predicate PushDown,조인절 PUSHDOWN)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[View pushed predicate (조건절 PUSHDOWN)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;View pushed predicate (조건절 PUSHDOWN)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[계층형 쿼리 connect by 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;계층형 쿼리 connect by 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 08 · SQL 튜닝과 성능 진단 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #c0392b;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#c0392b;&amp;quot;&amp;gt;08 · 성능&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 21개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;튜닝 대상 찾기, AWR·ASH, 대기 이벤트, 대용량·병렬 처리&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;튜닝 가이드&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE SQL 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE SQL 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBA 성능 튜닝 가이드|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBA 성능 튜닝 가이드&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 튜닝 전문가가 알아야할 필수지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 튜닝 전문가가 알아야할 필수지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[성능 문제 식별 방법론과 튜닝 접근법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;성능 문제 식별 방법론과 튜닝 접근법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 Round Trips|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 Round Trips&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;대상 찾기·진단&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝 대상 SQL 찾기|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝 대상 SQL 찾기&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Awr을 이용한 sql 튜닝 대상 찾기|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Awr을 이용한 sql 튜닝 대상 찾기&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[AWR 리포트 분석|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;AWR 리포트 분석&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL 성능 관리 프로그램|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL 성능 관리 프로그램&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle wait event (대기 이벤트) 추적 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle wait event (대기 이벤트) 추적 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Enq: TX - allocate ITL entry vs enq: HW - contention|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Enq: TX - allocate ITL entry vs enq: HW - contention&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Enq:hw-contention|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Enq:hw-contention&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;동적 성능 뷰&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$SESSION|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$SESSION&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$ACTIVE SESSION HISTORY|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$ACTIVE SESSION HISTORY&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[V$SQL MONITOR|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;V$SQL MONITOR&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DB 모니터링 최적화 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DB 모니터링 최적화 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#c0392b;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;대용량·병렬&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;3&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[대용량 데이터 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;대용량 데이터 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[병렬 쿼리 튜닝|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;병렬 쿼리 튜닝&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 09 · Oracle 설치와 운영 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #5d6d7e;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#5d6d7e;&amp;quot;&amp;gt;09 · 운영&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 12개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;설치, ASM, RAC One Node, 공간 관리와 일상 점검&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#5d6d7e;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설치·구성&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 19c Docker 설치|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 19c Docker 설치&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[설치 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;설치 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ASM 디스크 볼륨 추가 방법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ASM 디스크 볼륨 추가 방법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[ORACLE ASM AFD|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;ORACLE ASM AFD&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle RAC One Node|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle RAC One Node&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[RAC One Node 서버 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;RAC One Node 서버 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#5d6d7e;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;공간·오브젝트 관리&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Oracle 테이블 사용공간 확인|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Oracle 테이블 사용공간 확인&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[세그먼트 (테이블+인덱스+LOB) 사이즈 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;세그먼트 (테이블+인덱스+LOB) 사이즈 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테이블/인덱스 사이즈 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테이블/인덱스 사이즈 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[아카이브로그 디스크 사용량 조회|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;아카이브로그 디스크 사용량 조회&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[오브젝트 관리|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;오브젝트 관리&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[시스템 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;시스템 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10 · DBA 수행 방법론 (SI 프로젝트) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #7a3e0c;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#7a3e0c;&amp;quot;&amp;gt;10 · 방법론&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 20개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;공공·대기업 SI 프로젝트 단계별 수행 절차와 산출물 양식&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;수행 절차&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;7&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DBA 수행 방법론 (공공/대기업 SI 프로젝트)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[단계별 수행 방법론|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;단계별 수행 방법론&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[분석 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;분석 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[설계 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;설계 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[구축 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;구축 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[테스트 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;테스트 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[전개 단계|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;전개 단계&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;분석 산출물&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[요구사항 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;요구사항 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 계획서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 계획서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 질의서 샘플|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 질의서 샘플&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[인터뷰 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;인터뷰 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[현행 시스템 분석서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;현행 시스템 분석서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#7a3e0c;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;설계·구축·테스트 산출물&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;8&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[아키텍처 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;아키텍처 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터베이스 설계서((표준/구조/용량/보안 /백업 복구 설계 등)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터베이스 설계서((표준/구조/용량/보안 /백업 복구 설계 등)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[데이터베이스설계서-DB아키텍처-별첨1.DB상세설계내역.xlsx|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;데이터베이스설계서-DB아키텍처-별첨1.DB상세설계내역.xlsx&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[DB설치 계획서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;DB설치 계획서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[명명규칙 정의서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;명명규칙 정의서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[가용성 테스트 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;가용성 테스트 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[복구 테스트 결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;복구 테스트 결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[튜닝결과서|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;튜닝결과서&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11 · PostgreSQL · MySQL · 기타 DBMS ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-top:4px solid #336791;border-radius:8px;background:#ffffff;padding:18px 22px;margin:8px 0 26px;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#336791;&amp;quot;&amp;gt;11 · 다른 DBMS&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;color:#6c7b72;background:#eef3eb;border-radius:999px;padding:2px 10px;&amp;quot;&amp;gt;문서 16개&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.7;color:#6c7b72;margin-top:4px;&amp;quot;&amp;gt;Oracle 외 데이터베이스와 벡터·검색 기술&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px 28px;margin-top:14px;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;PostgreSQL&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;6&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 개발자가 알아야힐 필수사항|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 개발자가 알아야힐 필수사항&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 설치 후 DBA 작업|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 설치 후 DBA 작업&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Postgresql 튜닝 전문가가 알아야할 필수 지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Postgresql 튜닝 전문가가 알아야할 필수 지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL 기초과정 교육 과정|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL 기초과정 교육 과정&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[PostgreSQL SQL 30일 학습|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;PostgreSQL SQL 30일 학습&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;MySQL · SQL Server · SQLite&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MySQL 입문|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MySQL 입문&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[SQL Server|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;SQL Server&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MS-SQL SERVER 테이블 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MS-SQL SERVER 테이블 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[MS-SQL LOB테이블 생성|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;MS-SQL LOB테이블 생성&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Sqlite 개발자가 알아야할 필수지식|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Sqlite 개발자가 알아야할 필수지식&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div style=&amp;quot;display:flex;justify-content:space-between;font-size:12px;font-weight:650;color:#336791;border-bottom:1px solid #dde4dc;padding-bottom:6px;margin-bottom:2px;&amp;quot;&amp;gt;&amp;lt;span&amp;gt;검색·벡터 DB&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight:500;color:#8b9c8c;&amp;quot;&amp;gt;5&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[그래프DB 와 벡터DB|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;그래프DB 와 벡터DB&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Chromadb 설치 사용법|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Chromadb 설치 사용법&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[Chromadb 사용 예시|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;Chromadb 사용 예시&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[역 인덱싱(Inverted Index)|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;역 인덱싱(Inverted Index)&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:13px;line-height:1.5;padding:5px 0;border-bottom:1px dashed #edf1ea;&amp;quot;&amp;gt;[[전체 텍스트 검색 match|&amp;lt;span style=&amp;quot;color:#20382e;&amp;quot;&amp;gt;전체 텍스트 검색 match&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 새로 추가된 문서 ==&lt;br /&gt;
{{설명|제목=지도에 없는 새 문서 찾기|내용=새로 만들어진 문서는 [[특수:새문서|새 문서 목록]]과 [[특수:최근바뀜|최근 바뀜]]에서 확인할 수 있고, 아래 전체 문서 목록에도 자동으로 나타납니다.}}&lt;br /&gt;
&lt;br /&gt;
== 전체 문서 목록 (가나다순, 자동) ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;padding:12px 18px;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;모든 문서 펼쳐 보기&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:10px;&amp;quot;&amp;gt;&lt;br /&gt;
{{Special:AllPages|hideredirects=1}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 위키 운영 · 테스트 문서 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;padding:12px 18px;background:#ffffff;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;편집자용 문서 펼쳐 보기&#039;&#039;&#039; &amp;lt;span style=&amp;quot;font-size:12px;color:#6c7b72;&amp;quot;&amp;gt;(양식 샘플, 템플릿 시험 문서 등)&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;margin-top:10px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[대문]]&lt;br /&gt;
* [[Form:dbstudy]]&lt;br /&gt;
* [[Sql양식 샘플]]&lt;br /&gt;
* [[Uml 테스트]]&lt;br /&gt;
* [[디비 스터디 템플릿]]&lt;br /&gt;
* [[메뉴 구성 항목]]&lt;br /&gt;
* [[미디어위키 표 샘플]]&lt;br /&gt;
* [[책]]&lt;br /&gt;
* [[책책]]&lt;br /&gt;
* [[테스트]]&lt;br /&gt;
* [[테스트 템플릿만들기]]&lt;br /&gt;
* [[테스트2]]&lt;br /&gt;
* [[테스트3]]&lt;br /&gt;
* [[테스트SQL]]&lt;br /&gt;
* [[테스트폼1]]&lt;br /&gt;
* [[틀테스트]]&lt;br /&gt;
* [[특수:틀목록|틀 목록]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = 함께 만드는 지도&lt;br /&gt;
|제목 = 새 문서를 썼다면 지도에도 올려 주세요.&lt;br /&gt;
|내용 = 이 지도는 주제별로 직접 정리한 목록입니다. 새 문서를 만들었다면 알맞은 주제 칸에 링크를 추가해 주세요.&amp;lt;br/&amp;gt;문서에 &amp;lt;nowiki&amp;gt;[[분류:…]]&amp;lt;/nowiki&amp;gt;를 달아 두면 찾기가 훨씬 쉬워집니다.&lt;br /&gt;
|문서 = 특수:분류&lt;br /&gt;
|링크문구 = 전체 분류 보기 ↗&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[분류:위키 안내]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2053</id>
		<title>Oracle 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2053"/>
		<updated>2026-11-04T06:55:43Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 9. 기동과 종료 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = ORACLE DATABASE · FOUNDATION COURSE&lt;br /&gt;
|제목 = Oracle 입문&lt;br /&gt;
|설명 = 엔터프라이즈 데이터베이스의 표준 — 인스턴스와 데이터베이스 구조부터 SQL, 트랜잭션, 사용자·권한, 백업·복구까지&amp;lt;br/&amp;gt;처음 Oracle을 배우는 사람과 다른 DBMS 경험자를 위한 단계별 가이드&lt;br /&gt;
|색상1 = #3d0b06&lt;br /&gt;
|색상2 = #8a2a1c&lt;br /&gt;
|색상3 = #c74634&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 10주&lt;br /&gt;
|배지3 = 기준 · Oracle 19c / 23ai&lt;br /&gt;
|배지4 = 연계 · SQLD / OCP&lt;br /&gt;
}}&lt;br /&gt;
{{단계양식&lt;br /&gt;
|제목1 = 개념 · 설치&lt;br /&gt;
|설명1 = Oracle의 특징, Free 버전 설치, SQL*Plus 접속&lt;br /&gt;
|제목2 = 아키텍처&lt;br /&gt;
|설명2 = 인스턴스(SGA·PGA·프로세스), 데이터베이스 파일, CDB/PDB&lt;br /&gt;
|제목3 = SQL · 트랜잭션&lt;br /&gt;
|설명3 = 데이터 타입, DDL·DML, Undo·Redo, 읽기 일관성&lt;br /&gt;
|제목4 = 운영 · 관리&lt;br /&gt;
|설명4 = 사용자·권한, 기동·종료, 백업·복구, 모니터링&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. Oracle Database란 ==&lt;br /&gt;
&#039;&#039;&#039;Oracle Database&#039;&#039;&#039;는 1979년 최초의 상용 SQL 기반 RDBMS로 출시된 이후, 금융·통신·공공·제조 등 &#039;&#039;&#039;대규모 기간 시스템&#039;&#039;&#039;에서 가장 널리 쓰이는 관계형 데이터베이스다. 안정성, 동시성 처리, 고가용성(RAC·Data Guard), 풍부한 관리 도구가 강점이다.&lt;br /&gt;
&lt;br /&gt;
{{요점|제목=한 줄 정의|내용=대용량·고동시성 업무를 위한 &#039;&#039;&#039;엔터프라이즈 표준 RDBMS&#039;&#039;&#039; — 강력한 &#039;&#039;&#039;읽기 일관성&#039;&#039;&#039;과 &#039;&#039;&#039;복구 능력&#039;&#039;&#039;이 핵심}}&lt;br /&gt;
&lt;br /&gt;
=== 1.1 주요 특징 ===&lt;br /&gt;
{{카드묶음|최소너비=230px|&lt;br /&gt;
{{학습카드|번호=CONSISTENCY|제목=읽기 일관성|설명=Undo를 이용해 읽기는 쓰기를 막지 않고, 쓰기도 읽기를 막지 않는다. 조회는 항상 시작 시점 기준의 일관된 데이터를 본다.}}&lt;br /&gt;
{{학습카드|번호=AVAILABILITY|제목=고가용성|설명=RAC(여러 서버가 하나의 DB를 공유), Data Guard(원격 대기 DB)로 장애에도 서비스를 유지한다.}}&lt;br /&gt;
{{학습카드|번호=RECOVERY|제목=강력한 복구|설명=Redo·Archive Log와 RMAN으로 특정 시점 복구, Flashback으로 실수 데이터 되돌리기가 가능하다.}}&lt;br /&gt;
{{학습카드|번호=MULTITENANT|제목=멀티테넌트|설명=하나의 컨테이너 DB(CDB) 안에 여러 플러거블 DB(PDB)를 두고 독립적으로 관리한다 (12c+).}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 에디션과 버전 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 내용&lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Edition (EE) || 모든 기능 + 옵션(Partitioning, RAC, Diagnostics/Tuning Pack 등은 별도 라이선스)&lt;br /&gt;
|-&lt;br /&gt;
| Standard Edition 2 (SE2) || 중소 규모용, 소켓 수 제한, 일부 기능 미지원&lt;br /&gt;
|-&lt;br /&gt;
| Free (구 Express Edition) || 학습·개발용 무료 버전 (CPU·메모리·저장 용량 제한)&lt;br /&gt;
|-&lt;br /&gt;
| 19c || 장기 지원(Long Term Release) 버전 — 현재 운영 환경에서 가장 많이 쓰인다&lt;br /&gt;
|-&lt;br /&gt;
| 23ai || 최신 장기 지원 버전 — JSON 관계형 이중성, 벡터 검색, &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; 타입, &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; without &amp;lt;code&amp;gt;FROM DUAL&amp;lt;/code&amp;gt; 등&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 다른 DBMS 경험자를 위한 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Oracle !! [[PostgreSQL 입문|PostgreSQL]] !! [[MySQL 입문|MySQL]]&lt;br /&gt;
|-&lt;br /&gt;
| 스키마 || &#039;&#039;&#039;사용자 = 스키마&#039;&#039;&#039; || DB 안의 별도 객체 || 데이터베이스 = 스키마&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 구조 (기본) || 힙 테이블 || 힙 테이블 || PK 클러스터드 (InnoDB)&lt;br /&gt;
|-&lt;br /&gt;
| MVCC 이전 버전 || Undo 테이블스페이스 || 테이블 안 (VACUUM) || Undo 로그&lt;br /&gt;
|-&lt;br /&gt;
| 기본 격리 수준 || READ COMMITTED || READ COMMITTED || REPEATABLE READ&lt;br /&gt;
|-&lt;br /&gt;
| 빈 문자열 || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = NULL || NULL 아님 || NULL 아님&lt;br /&gt;
|-&lt;br /&gt;
| DDL || 자동 커밋 || 롤백 가능 || 자동 커밋&lt;br /&gt;
|-&lt;br /&gt;
| 페이징 || &amp;lt;code&amp;gt;FETCH FIRST n ROWS ONLY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ROWNUM&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 설치와 접속 ==&lt;br /&gt;
=== 2.1 가장 빠른 방법 — Oracle Database Free (Docker) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name oracle-lab \&lt;br /&gt;
  -p 1521:1521 \&lt;br /&gt;
  -e ORACLE_PWD=Lab12345 \&lt;br /&gt;
  -v oradata:/opt/oracle/oradata \&lt;br /&gt;
  container-registry.oracle.com/database/free:latest&lt;br /&gt;
&lt;br /&gt;
docker logs -f oracle-lab          # &amp;quot;DATABASE IS READY TO USE!&amp;quot; 메시지가 나올 때까지 대기&lt;br /&gt;
&lt;br /&gt;
# 컨테이너 안에서 SYSDBA로 접속&lt;br /&gt;
docker exec -it oracle-lab sqlplus / as sysdba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=기본 접속 정보 (Free 이미지)|내용=리스너 포트 1521, CDB 서비스명 FREE, 기본 PDB 서비스명 &#039;&#039;&#039;FREEPDB1&#039;&#039;&#039;. 실습 테이블은 CDB가 아니라 &#039;&#039;&#039;PDB에 접속해서&#039;&#039;&#039; 만든다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.2 접속 방법 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# EZConnect (호스트:포트/서비스명)&lt;br /&gt;
sqlplus system/Lab12345@//localhost:1521/FREEPDB1&lt;br /&gt;
&lt;br /&gt;
# tnsnames.ora 별칭 사용&lt;br /&gt;
sqlplus scott/tiger@ORCLPDB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# $ORACLE_HOME/network/admin/tnsnames.ora&lt;br /&gt;
ORCLPDB =&lt;br /&gt;
  (DESCRIPTION =&lt;br /&gt;
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))&lt;br /&gt;
    (CONNECT_DATA = (SERVICE_NAME = orclpdb)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=GUI 도구|내용=무료 공식 도구인 SQL Developer, VS Code의 Oracle SQL Developer Extension이 있고, DBeaver, Toad, Orange 등도 많이 쓴다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.3 SQL*Plus 필수 명령 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 명령 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONN user/pw@서비스&amp;lt;/code&amp;gt; || 다른 사용자로 재접속&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW USER&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SHOW CON_NAME&amp;lt;/code&amp;gt; || 현재 사용자 / 현재 컨테이너(CDB·PDB)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALTER SESSION SET CONTAINER = FREEPDB1;&amp;lt;/code&amp;gt; || SYSDBA 세션에서 PDB로 전환&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DESC 테이블명&amp;lt;/code&amp;gt; || 테이블 구조&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET LINESIZE 200 PAGESIZE 100&amp;lt;/code&amp;gt; || 출력 폭·페이지 설정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;COL 컬럼명 FORMAT A30&amp;lt;/code&amp;gt; || 컬럼 출력 폭 지정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET TIMING ON&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SET AUTOTRACE ON&amp;lt;/code&amp;gt; || 실행 시간 / 실행계획·통계 표시&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@script.sql&amp;lt;/code&amp;gt; || 스크립트 실행&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SPOOL result.txt&amp;lt;/code&amp;gt; … &amp;lt;code&amp;gt;SPOOL OFF&amp;lt;/code&amp;gt; || 결과를 파일로 저장&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW PARAMETER 이름&amp;lt;/code&amp;gt; || 초기화 파라미터 확인&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 아키텍처 ==&lt;br /&gt;
=== 3.1 인스턴스와 데이터베이스 ===&lt;br /&gt;
{{핵심|제목=가장 먼저 구분할 두 개념|내용=&#039;&#039;&#039;인스턴스(Instance)&#039;&#039;&#039; = 메모리(SGA) + 백그라운드 프로세스, &#039;&#039;&#039;데이터베이스(Database)&#039;&#039;&#039; = 디스크의 파일(데이터 파일·컨트롤 파일·리두 로그). 인스턴스가 데이터베이스를 열어(OPEN) 사용한다. RAC에서는 여러 인스턴스가 하나의 데이터베이스를 공유한다.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────────────────── 인스턴스 ─────────────────────────────┐&lt;br /&gt;
 │  SGA (공유 메모리)                                                 │&lt;br /&gt;
 │  ┌──────────────┐ ┌────────────────────┐ ┌──────────────┐        │&lt;br /&gt;
 │  │ Shared Pool  │ │ Database Buffer    │ │ Redo Log     │        │&lt;br /&gt;
 │  │ (SQL·딕셔너리)│ │ Cache (데이터 블록) │ │ Buffer       │        │&lt;br /&gt;
 │  └──────────────┘ └────────────────────┘ └──────────────┘        │&lt;br /&gt;
 │  백그라운드 프로세스: PMON · SMON · DBWn · LGWR · CKPT · ARCn · MMON  │&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
   ▲ 서버 프로세스 (접속마다, PGA: 정렬·해시 작업 영역)&lt;br /&gt;
   │&lt;br /&gt;
 ┌──────────────────────────── 데이터베이스 (파일) ──────────────────┐&lt;br /&gt;
 │  Data Files (.dbf) · Control Files (.ctl) · Online Redo Log Files │&lt;br /&gt;
 │  (부가) Parameter File(spfile) · Password File · Archive Log Files│&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 주요 백그라운드 프로세스 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|최소너비 = 120px&lt;br /&gt;
|제목1 = DBWn |설명1 = 변경 블록을 데이터 파일에 기록&lt;br /&gt;
|제목2 = LGWR |설명2 = 리두 버퍼를 리두 로그에 기록&lt;br /&gt;
|제목3 = CKPT |설명3 = 체크포인트 정보 갱신&lt;br /&gt;
|제목4 = SMON |설명4 = 인스턴스 복구&lt;br /&gt;
|제목5 = PMON |설명5 = 실패 프로세스 정리&lt;br /&gt;
|제목6 = ARCn |설명6 = 리두 로그 아카이브&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 3.3 멀티테넌트 (CDB / PDB) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 CDB (컨테이너 데이터베이스)&lt;br /&gt;
  ├─ CDB$ROOT   ← 오라클 메타데이터, 공통 사용자(C##)&lt;br /&gt;
  ├─ PDB$SEED   ← 새 PDB를 만들 때 쓰는 템플릿 (읽기 전용)&lt;br /&gt;
  ├─ PDB1       ← 업무 DB (로컬 사용자·테이블)&lt;br /&gt;
  └─ PDB2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 업무 사용자와 테이블은 &#039;&#039;&#039;PDB 안에&#039;&#039;&#039; 만든다. 21c부터는 멀티테넌트 구조만 지원한다.&lt;br /&gt;
&lt;br /&gt;
=== 3.4 논리 저장 구조 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = 테이블스페이스 |설명1 = 데이터 파일의 논리 묶음&lt;br /&gt;
|제목2 = 세그먼트 |설명2 = 테이블·인덱스 하나&lt;br /&gt;
|제목3 = 익스텐트 |설명3 = 연속된 블록 묶음&lt;br /&gt;
|제목4 = 블록 |설명4 = I/O 최소 단위 (보통 8KB)&lt;br /&gt;
}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 테이블스페이스 !! 용도&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM / SYSAUX || 데이터 딕셔너리, AWR 등 오라클 내부용&lt;br /&gt;
|-&lt;br /&gt;
| UNDOTBS1 || 변경 전 이미지 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| TEMP || 정렬·해시 임시 작업 공간&lt;br /&gt;
|-&lt;br /&gt;
| USERS 및 업무용 || 사용자 테이블·인덱스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 4. 기본 SQL과 데이터 타입 ==&lt;br /&gt;
=== 4.1 주요 데이터 타입 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용도 !! 타입 !! 메모&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n)&amp;lt;/code&amp;gt; || 최대 4000바이트 (확장 시 32767), &amp;lt;code&amp;gt;n CHAR&amp;lt;/code&amp;gt;로 문자 수 지정 가능&lt;br /&gt;
|-&lt;br /&gt;
| 숫자 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || 정수·소수 모두. &amp;lt;code&amp;gt;NUMBER(10)&amp;lt;/code&amp;gt;은 정수&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &#039;&#039;&#039;시·분·초까지 포함&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일시 || &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP WITH TIME ZONE&amp;lt;/code&amp;gt; || 소수 초, 시간대&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt;은 사용하지 않음&lt;br /&gt;
|-&lt;br /&gt;
| 반정형 || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; (21c+) / &amp;lt;code&amp;gt;CLOB IS JSON&amp;lt;/code&amp;gt; (19c) ||&lt;br /&gt;
|-&lt;br /&gt;
| 참/거짓 || &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; (23ai+) || 이전 버전은 &amp;lt;code&amp;gt;CHAR(1)&amp;lt;/code&amp;gt; + CHECK&lt;br /&gt;
|}&lt;br /&gt;
{{중요|내용=Oracle은 &#039;&#039;&#039;빈 문자열(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)을 NULL로 취급&#039;&#039;&#039;한다. &amp;lt;code&amp;gt;WHERE col = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;는 항상 거짓이므로 &amp;lt;code&amp;gt;WHERE col IS NULL&amp;lt;/code&amp;gt;로 써야 한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 테이블 만들기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE customer (&lt;br /&gt;
    cust_id     NUMBER GENERATED ALWAYS AS IDENTITY,    -- 12c+ (이전에는 SEQUENCE + 트리거)&lt;br /&gt;
    cust_nm     VARCHAR2(100 CHAR) NOT NULL,&lt;br /&gt;
    email       VARCHAR2(200),&lt;br /&gt;
    grade_cd    VARCHAR2(10) DEFAULT &#039;NORMAL&#039; NOT NULL,&lt;br /&gt;
    created_at  DATE DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_customer PRIMARY KEY (cust_id),&lt;br /&gt;
    CONSTRAINT uk_customer_email UNIQUE (email)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    NUMBER GENERATED ALWAYS AS IDENTITY,&lt;br /&gt;
    cust_id     NUMBER NOT NULL,&lt;br /&gt;
    order_dt    DATE   NOT NULL,&lt;br /&gt;
    amount      NUMBER(12,2) NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_orders PRIMARY KEY (order_id),&lt;br /&gt;
    CONSTRAINT fk_orders_cust FOREIGN KEY (cust_id) REFERENCES customer (cust_id),&lt;br /&gt;
    CONSTRAINT ck_orders_amt CHECK (amount &amp;gt;= 0)&lt;br /&gt;
);&lt;br /&gt;
CREATE INDEX ix_orders_01 ON orders (cust_id, order_dt);   -- FK 컬럼 인덱스는 직접 만든다&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE customer IS &#039;고객&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 자주 쓰는 SQL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DUAL: 테이블 없이 식 계산 (23ai부터는 FROM DUAL 생략 가능)&lt;br /&gt;
SELECT SYSDATE, USER FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- 시퀀스&lt;br /&gt;
CREATE SEQUENCE sq_order_no START WITH 1 INCREMENT BY 1 CACHE 100;&lt;br /&gt;
SELECT sq_order_no.NEXTVAL FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- MERGE (UPSERT)&lt;br /&gt;
MERGE INTO customer t&lt;br /&gt;
USING (SELECT &#039;hong@example.com&#039; AS email, &#039;홍길동&#039; AS cust_nm FROM DUAL) s&lt;br /&gt;
   ON (t.email = s.email)&lt;br /&gt;
 WHEN MATCHED THEN UPDATE SET t.cust_nm = s.cust_nm&lt;br /&gt;
 WHEN NOT MATCHED THEN INSERT (cust_nm, email) VALUES (s.cust_nm, s.email);&lt;br /&gt;
&lt;br /&gt;
-- 페이징 (12c+)&lt;br /&gt;
SELECT * FROM orders ORDER BY order_dt DESC&lt;br /&gt;
OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 계층 조회&lt;br /&gt;
SELECT LEVEL, emp_name FROM emp&lt;br /&gt;
 START WITH mgr_id IS NULL&lt;br /&gt;
CONNECT BY PRIOR emp_id = mgr_id;&lt;br /&gt;
&lt;br /&gt;
-- 자주 쓰는 함수&lt;br /&gt;
SELECT NVL(email, &#039;-&#039;), DECODE(grade_cd, &#039;VIP&#039;, &#039;우수&#039;, &#039;일반&#039;),&lt;br /&gt;
       TO_CHAR(created_at, &#039;YYYY-MM-DD HH24:MI:SS&#039;)&lt;br /&gt;
  FROM customer;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 트랜잭션, Undo와 Redo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Undo !! Redo&lt;br /&gt;
|-&lt;br /&gt;
| 기록 내용 || &#039;&#039;&#039;변경 전&#039;&#039;&#039; 데이터 || &#039;&#039;&#039;변경 내역&#039;&#039;&#039; (변경 후 재현 정보)&lt;br /&gt;
|-&lt;br /&gt;
| 목적 || 롤백, &#039;&#039;&#039;읽기 일관성&#039;&#039;&#039;, Flashback || &#039;&#039;&#039;장애 복구&#039;&#039;&#039; (인스턴스·미디어 복구)&lt;br /&gt;
|-&lt;br /&gt;
| 저장 위치 || Undo 테이블스페이스 || Online Redo Log → (아카이브 모드) Archive Log&lt;br /&gt;
|-&lt;br /&gt;
| 관련 오류 || ORA-01555 snapshot too old || 리두 로그 스위치 대기, 아카이브 공간 부족&lt;br /&gt;
|}&lt;br /&gt;
{{요점|내용=COMMIT 시점에는 데이터 파일이 아니라 &#039;&#039;&#039;리두 로그만 디스크에 기록&#039;&#039;&#039;된다 (LGWR). 데이터 블록은 나중에 DBWn이 기록한다. 그래서 커밋은 빠르고, 장애가 나도 리두로 복구할 수 있다.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DML은 명시적으로 COMMIT / ROLLBACK&lt;br /&gt;
UPDATE orders SET amount = amount - 1000 WHERE order_id = 10;&lt;br /&gt;
SAVEPOINT sp1;&lt;br /&gt;
DELETE FROM orders WHERE order_id = 11;&lt;br /&gt;
ROLLBACK TO sp1;      -- DELETE만 취소&lt;br /&gt;
COMMIT;&lt;br /&gt;
&lt;br /&gt;
-- 주의: DDL(CREATE, ALTER, TRUNCATE 등)은 실행 전후로 자동 COMMIT 된다&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=&amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt;는 Undo를 남기고 롤백할 수 있지만, &amp;lt;code&amp;gt;TRUNCATE&amp;lt;/code&amp;gt;는 DDL이라 &#039;&#039;&#039;롤백할 수 없다&#039;&#039;&#039;. 운영 데이터 삭제 전에는 반드시 백업 또는 조건을 다시 확인한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Flashback — 실수 되돌리기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 10분 전 데이터 조회 (Undo 보존 범위 안에서)&lt;br /&gt;
SELECT * FROM orders AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL &#039;10&#039; MINUTE)&lt;br /&gt;
 WHERE order_id = 10;&lt;br /&gt;
&lt;br /&gt;
-- 실수로 DROP한 테이블 복원 (휴지통)&lt;br /&gt;
FLASHBACK TABLE orders TO BEFORE DROP;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 데이터 딕셔너리와 동적 성능 뷰 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 접두어 !! 범위 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;USER_&amp;lt;/code&amp;gt; || 내가 소유한 객체 || &amp;lt;code&amp;gt;USER_TABLES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_INDEXES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_CONSTRAINTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALL_&amp;lt;/code&amp;gt; || 내가 접근 가능한 객체 || &amp;lt;code&amp;gt;ALL_TAB_COLUMNS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DBA_&amp;lt;/code&amp;gt; || DB 전체 (DBA 권한) || &amp;lt;code&amp;gt;DBA_SEGMENTS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_DATA_FILES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CDB_&amp;lt;/code&amp;gt; || 모든 컨테이너 || &amp;lt;code&amp;gt;CDB_TABLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;V$&amp;lt;/code&amp;gt; || 인스턴스 실시간 상태 (메모리) || &amp;lt;code&amp;gt;V$SESSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$SQL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$INSTANCE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$DATABASE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GV$&amp;lt;/code&amp;gt; || RAC 전체 인스턴스 || &amp;lt;code&amp;gt;GV$SESSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 7. 인덱스와 실행계획 맛보기 ==&lt;br /&gt;
* 기본 인덱스는 &#039;&#039;&#039;B*Tree&#039;&#039;&#039; — 조건 컬럼, 조인 컬럼, 정렬 컬럼에 만든다.&lt;br /&gt;
* 결합 인덱스는 &#039;&#039;&#039;= 조건 컬럼을 앞에, 범위 조건 컬럼을 뒤에&#039;&#039;&#039; 둔다.&lt;br /&gt;
* 인덱스 컬럼을 가공하면(&amp;lt;code&amp;gt;TO_CHAR(col)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col + 1&amp;lt;/code&amp;gt;) 인덱스를 쓰지 못한다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM orders WHERE cust_id = 1001;&lt;br /&gt;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &#039;ALLSTATS LAST&#039;));&lt;br /&gt;
&lt;br /&gt;
-- 옵티마이저 통계 수집&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;ORDERS&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{서브|제목=다음 단계|내용=실행계획과 인덱스·조인 튜닝은 [[SQL 튜닝 입문]] → [[실행계획 읽기 실습]] → [[인덱스 튜닝 심화]]에서 자세히 다룬다.|제목아이콘=arrow_forward}}&lt;br /&gt;
&lt;br /&gt;
== 8. 사용자·권한 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- PDB에 접속한 상태에서&lt;br /&gt;
CREATE USER app_user IDENTIFIED BY &amp;quot;Change_me1&amp;quot;&lt;br /&gt;
  DEFAULT TABLESPACE users QUOTA 1G ON users;&lt;br /&gt;
&lt;br /&gt;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;   -- 시스템 권한&lt;br /&gt;
&lt;br /&gt;
CREATE ROLE app_read;&lt;br /&gt;
GRANT SELECT ON app_user.orders TO app_read;                                     -- 객체 권한&lt;br /&gt;
GRANT app_read TO report_user;&lt;br /&gt;
&lt;br /&gt;
-- 권한 확인&lt;br /&gt;
SELECT * FROM DBA_SYS_PRIVS WHERE grantee = &#039;APP_USER&#039;;&lt;br /&gt;
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = &#039;APP_READ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=스키마 = 사용자|내용=Oracle에서는 사용자를 만들면 같은 이름의 스키마가 생긴다. 다른 스키마의 테이블은 &amp;lt;code&amp;gt;app_user.orders&amp;lt;/code&amp;gt;처럼 소유자를 붙여 접근하거나 동의어(SYNONYM)를 만든다.}}&lt;br /&gt;
&lt;br /&gt;
== 9. 기동과 종료 ==&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = SHUTDOWN |설명1 = 인스턴스 없음&lt;br /&gt;
|제목2 = NOMOUNT |설명2 = 파라미터 파일 읽고 인스턴스 시작&lt;br /&gt;
|제목3 = MOUNT |설명3 = 컨트롤 파일 열기&lt;br /&gt;
|제목4 = OPEN |설명4 = 데이터 파일·리두 로그 열기&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
$&amp;gt; sqlplus / as sysdba;&lt;br /&gt;
-- SYSDBA로&lt;br /&gt;
STARTUP;                         -- NOMOUNT → MOUNT → OPEN&lt;br /&gt;
SHUTDOWN IMMEDIATE;              -- 진행 중 트랜잭션 롤백 후 정상 종료 (가장 많이 사용)&lt;br /&gt;
&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL OPEN;               -- 모든 PDB 열기&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL SAVE STATE;         -- 재기동 시 자동으로 열리도록 저장&lt;br /&gt;
&lt;br /&gt;
SELECT instance_name, status FROM v$instance;&lt;br /&gt;
SELECT name, open_mode, log_mode FROM v$database;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=Alert Log|내용=기동·종료, 오류(ORA-), 로그 스위치 등 DB의 중요한 사건이 기록되는 파일이다. 위치는 &amp;lt;code&amp;gt;SELECT value FROM v$diag_info WHERE name = &#039;Diag Trace&#039;;&amp;lt;/code&amp;gt;로 확인한다. 장애가 나면 가장 먼저 본다.}}&lt;br /&gt;
&lt;br /&gt;
== 10. 백업과 복구 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 방식 !! 도구 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 물리 백업 || &#039;&#039;&#039;RMAN&#039;&#039;&#039; (Recovery Manager) || 온라인 백업, 증분 백업, 블록 손상 검사, 시점 복구 — &#039;&#039;&#039;운영 표준&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 || &#039;&#039;&#039;Data Pump&#039;&#039;&#039; (&amp;lt;code&amp;gt;expdp&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;impdp&amp;lt;/code&amp;gt;) || 스키마·테이블 단위 이관, 버전 간 이동&lt;br /&gt;
|-&lt;br /&gt;
| 아카이브 로그 모드 || &amp;lt;code&amp;gt;ARCHIVELOG&amp;lt;/code&amp;gt; || 온라인 백업과 시점 복구의 전제 조건&lt;br /&gt;
|-&lt;br /&gt;
| 실수 복구 || Flashback Query / Table / Drop || Undo·휴지통으로 빠르게 되돌리기&lt;br /&gt;
|-&lt;br /&gt;
| 재해 대비 || Data Guard || 원격 대기 DB로 리두 전송&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# RMAN 전체 백업 (아카이브 로그 포함)&lt;br /&gt;
rman target /&lt;br /&gt;
RMAN&amp;gt; BACKUP DATABASE PLUS ARCHIVELOG;&lt;br /&gt;
RMAN&amp;gt; LIST BACKUP SUMMARY;&lt;br /&gt;
&lt;br /&gt;
# Data Pump 스키마 내보내기 / 가져오기&lt;br /&gt;
expdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp logfile=app_exp.log&lt;br /&gt;
impdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp remap_schema=APP_USER:APP_TEST&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. 모니터링 기본 쿼리 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 활성 세션과 대기 이벤트&lt;br /&gt;
SELECT sid, serial#, username, status, sql_id, event, seconds_in_wait&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE type = &#039;USER&#039; AND status = &#039;ACTIVE&#039;;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기 (블로킹 세션)&lt;br /&gt;
SELECT sid, blocking_session, event, sql_id&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE blocking_session IS NOT NULL;&lt;br /&gt;
&lt;br /&gt;
-- 테이블스페이스 사용률&lt;br /&gt;
SELECT tablespace_name, ROUND(used_percent, 1) AS used_pct&lt;br /&gt;
  FROM dba_tablespace_usage_metrics&lt;br /&gt;
 ORDER BY used_percent DESC;&lt;br /&gt;
&lt;br /&gt;
-- 크기가 큰 세그먼트&lt;br /&gt;
SELECT owner, segment_name, segment_type, ROUND(bytes/1024/1024) AS mb&lt;br /&gt;
  FROM dba_segments&lt;br /&gt;
 ORDER BY bytes DESC FETCH FIRST 10 ROWS ONLY;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 학습 커리큘럼 (10주) ==&lt;br /&gt;
{{안내바|강조=설치 → 아키텍처 → SQL → 트랜잭션 → 운영|내용=한 주에 이론 3시간 + 실습 3시간|우측=SQL 기초가 약하다면 4주차에 시간을 더 쓰세요.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot; | 주차 !! style=&amp;quot;width:12%;&amp;quot; | 단계 !! style=&amp;quot;width:22%;&amp;quot; | 주제 !! 세부 내용 !! style=&amp;quot;width:22%;&amp;quot; | 실습&lt;br /&gt;
|-&lt;br /&gt;
| 1 || rowspan=&amp;quot;2&amp;quot; | 기초 || Oracle 소개와 설치 || 역사·에디션·버전, Free 설치, SQL*Plus·SQL Developer, 접속 방식 || 실습 DB 구축, PDB 접속&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 아키텍처 ① || 인스턴스와 데이터베이스, SGA·PGA, 백그라운드 프로세스 || V$ 뷰로 구조 확인&lt;br /&gt;
|-&lt;br /&gt;
| 3 || rowspan=&amp;quot;2&amp;quot; | 구조 || 아키텍처 ② || CDB/PDB, 테이블스페이스·세그먼트·익스텐트·블록, 데이터 딕셔너리 || 테이블스페이스·사용자 생성&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 데이터 타입과 SQL || VARCHAR2·NUMBER·DATE, 제약조건, IDENTITY·시퀀스, 함수, MERGE || 쇼핑몰 테이블 설계 ([[데이터 모델링 입문]] 연계)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || rowspan=&amp;quot;2&amp;quot; | 트랜잭션 || 트랜잭션과 읽기 일관성 || COMMIT·ROLLBACK, Undo·Redo, 락, ORA-01555 || 두 세션으로 락·일관성 재현&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Flashback과 휴지통 || Flashback Query·Table·Drop, Undo 보존 || 실수 삭제 복구&lt;br /&gt;
|-&lt;br /&gt;
| 7 || rowspan=&amp;quot;2&amp;quot; | 성능 기초 || 인덱스 || B*Tree 구조, 결합 인덱스, 인덱스를 못 쓰는 경우 || 인덱스 유무 비교&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 실행계획과 통계 || DBMS_XPLAN, 옵티마이저 통계 ([[SQL 튜닝 입문]] 연계) || 실행계획 읽기&lt;br /&gt;
|-&lt;br /&gt;
| 9 || rowspan=&amp;quot;2&amp;quot; | 운영 || 사용자·권한·기동 || 시스템·객체 권한, 롤, 프로파일, STARTUP·SHUTDOWN, Alert Log || 읽기 전용 계정 설계&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 백업과 복구 || ARCHIVELOG, RMAN 백업·복구, Data Pump || RMAN 백업, 스키마 이관&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 입문자 체크리스트 ==&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = SELF CHECK&lt;br /&gt;
|제목 = 이 정도면 입문 완료&lt;br /&gt;
|내용 = □ SQL*Plus로 PDB에 접속하고 현재 사용자·컨테이너를 확인할 수 있다&amp;lt;br/&amp;gt;□ 인스턴스와 데이터베이스, SGA와 PGA의 차이를 설명할 수 있다&amp;lt;br/&amp;gt;□ 테이블스페이스 → 세그먼트 → 익스텐트 → 블록 구조를 설명할 수 있다&amp;lt;br/&amp;gt;□ Undo와 Redo의 역할 차이, DDL 자동 커밋을 설명할 수 있다&amp;lt;br/&amp;gt;□ 사용자를 만들고 시스템·객체 권한을 부여할 수 있다&amp;lt;br/&amp;gt;□ RMAN 백업과 Data Pump 이관을 한 번씩 해 보았다&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 14. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 (Instance) || SGA + 백그라운드 프로세스&lt;br /&gt;
|-&lt;br /&gt;
| SGA || 모든 세션이 공유하는 메모리 (버퍼 캐시, 공유 풀, 리두 버퍼)&lt;br /&gt;
|-&lt;br /&gt;
| PGA || 서버 프로세스 전용 메모리 (정렬·해시 작업)&lt;br /&gt;
|-&lt;br /&gt;
| CDB / PDB || 컨테이너 DB / 플러거블 DB&lt;br /&gt;
|-&lt;br /&gt;
| 테이블스페이스 || 데이터 파일을 묶는 논리 저장 단위&lt;br /&gt;
|-&lt;br /&gt;
| 세그먼트 || 저장 공간을 차지하는 객체 하나 (테이블, 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| Undo || 변경 전 데이터 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| Redo || 변경 내역 로그 (장애 복구)&lt;br /&gt;
|-&lt;br /&gt;
| SCN || 시스템 변경 번호, DB의 논리적 시각&lt;br /&gt;
|-&lt;br /&gt;
| ARCHIVELOG || 리두 로그를 보관하는 운영 모드&lt;br /&gt;
|-&lt;br /&gt;
| RMAN || Oracle 공식 백업·복구 도구&lt;br /&gt;
|-&lt;br /&gt;
| Data Pump || 논리 내보내기·가져오기 도구 (expdp/impdp)&lt;br /&gt;
|-&lt;br /&gt;
| 리스너 (Listener) || 클라이언트 접속 요청을 받아 서버 프로세스로 연결하는 프로세스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 15. 참고 자료 ==&lt;br /&gt;
* Oracle Database 19c Documentation — https://docs.oracle.com/en/database/oracle/oracle-database/19/&lt;br /&gt;
* Oracle Database Concepts (19c) — 아키텍처 학습의 기본서&lt;br /&gt;
* Oracle Database Free — https://www.oracle.com/database/free/&lt;br /&gt;
* Oracle Live SQL — 설치 없이 브라우저에서 SQL 실습&lt;br /&gt;
&lt;br /&gt;
{{관련글|이전글=[[데이터 모델링 입문]]|다음글=[[SQL 튜닝 입문]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2052</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2052"/>
		<updated>2026-11-04T06:53:48Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 입문 코스 순서 조정: 데이터 모델링 → SQL 튜닝 → Oracle → PostgreSQL → MySQL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[Oracle 입문|Oracle 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;인스턴스와 데이터베이스 구조, SQL과 트랜잭션, 사용자·권한, 기동·종료, RMAN 백업까지 — Oracle을 처음 배우는 분을 위한 코스입니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[Oracle 입문#3. 아키텍처|아키텍처]] · [[Oracle 입문#4. 기본 SQL과 데이터 타입|SQL과 데이터 타입]] · [[Oracle 입문#5. 트랜잭션, Undo와 Redo|Undo와 Redo]] · [[Oracle 입문#10. 백업과 복구|백업과 복구]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[Oracle 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 05 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2051</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2051"/>
		<updated>2026-11-04T06:52:46Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 입문 코스 순서 조정: Oracle 입문을 COURSE 01로&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[Oracle 입문|Oracle 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;인스턴스와 데이터베이스 구조, SQL과 트랜잭션, 사용자·권한, 기동·종료, RMAN 백업까지 — Oracle을 처음 배우는 분을 위한 코스입니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[Oracle 입문#3. 아키텍처|아키텍처]] · [[Oracle 입문#4. 기본 SQL과 데이터 타입|SQL과 데이터 타입]] · [[Oracle 입문#5. 트랜잭션, Undo와 Redo|Undo와 Redo]] · [[Oracle 입문#10. 백업과 복구|백업과 복구]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[Oracle 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 05 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2050</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2050"/>
		<updated>2026-11-04T06:51:41Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문에 Oracle 입문 코스 카드 추가&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 05 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[Oracle 입문|Oracle 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;인스턴스와 데이터베이스 구조, SQL과 트랜잭션, 사용자·권한, 기동·종료, RMAN 백업까지 — Oracle을 처음 배우는 분을 위한 코스입니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[Oracle 입문#3. 아키텍처|아키텍처]] · [[Oracle 입문#4. 기본 SQL과 데이터 타입|SQL과 데이터 타입]] · [[Oracle 입문#5. 트랜잭션, Undo와 Redo|Undo와 Redo]] · [[Oracle 입문#10. 백업과 복구|백업과 복구]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[Oracle 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2049</id>
		<title>Oracle 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2049"/>
		<updated>2026-11-04T06:51:40Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: Oracle 초보 입문자용 문서 생성&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = ORACLE DATABASE · FOUNDATION COURSE&lt;br /&gt;
|제목 = Oracle 입문&lt;br /&gt;
|설명 = 엔터프라이즈 데이터베이스의 표준 — 인스턴스와 데이터베이스 구조부터 SQL, 트랜잭션, 사용자·권한, 백업·복구까지&amp;lt;br/&amp;gt;처음 Oracle을 배우는 사람과 다른 DBMS 경험자를 위한 단계별 가이드&lt;br /&gt;
|색상1 = #3d0b06&lt;br /&gt;
|색상2 = #8a2a1c&lt;br /&gt;
|색상3 = #c74634&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 10주&lt;br /&gt;
|배지3 = 기준 · Oracle 19c / 23ai&lt;br /&gt;
|배지4 = 연계 · SQLD / OCP&lt;br /&gt;
}}&lt;br /&gt;
{{단계양식&lt;br /&gt;
|제목1 = 개념 · 설치&lt;br /&gt;
|설명1 = Oracle의 특징, Free 버전 설치, SQL*Plus 접속&lt;br /&gt;
|제목2 = 아키텍처&lt;br /&gt;
|설명2 = 인스턴스(SGA·PGA·프로세스), 데이터베이스 파일, CDB/PDB&lt;br /&gt;
|제목3 = SQL · 트랜잭션&lt;br /&gt;
|설명3 = 데이터 타입, DDL·DML, Undo·Redo, 읽기 일관성&lt;br /&gt;
|제목4 = 운영 · 관리&lt;br /&gt;
|설명4 = 사용자·권한, 기동·종료, 백업·복구, 모니터링&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. Oracle Database란 ==&lt;br /&gt;
&#039;&#039;&#039;Oracle Database&#039;&#039;&#039;는 1979년 최초의 상용 SQL 기반 RDBMS로 출시된 이후, 금융·통신·공공·제조 등 &#039;&#039;&#039;대규모 기간 시스템&#039;&#039;&#039;에서 가장 널리 쓰이는 관계형 데이터베이스다. 안정성, 동시성 처리, 고가용성(RAC·Data Guard), 풍부한 관리 도구가 강점이다.&lt;br /&gt;
&lt;br /&gt;
{{요점|제목=한 줄 정의|내용=대용량·고동시성 업무를 위한 &#039;&#039;&#039;엔터프라이즈 표준 RDBMS&#039;&#039;&#039; — 강력한 &#039;&#039;&#039;읽기 일관성&#039;&#039;&#039;과 &#039;&#039;&#039;복구 능력&#039;&#039;&#039;이 핵심}}&lt;br /&gt;
&lt;br /&gt;
=== 1.1 주요 특징 ===&lt;br /&gt;
{{카드묶음|최소너비=230px|&lt;br /&gt;
{{학습카드|번호=CONSISTENCY|제목=읽기 일관성|설명=Undo를 이용해 읽기는 쓰기를 막지 않고, 쓰기도 읽기를 막지 않는다. 조회는 항상 시작 시점 기준의 일관된 데이터를 본다.}}&lt;br /&gt;
{{학습카드|번호=AVAILABILITY|제목=고가용성|설명=RAC(여러 서버가 하나의 DB를 공유), Data Guard(원격 대기 DB)로 장애에도 서비스를 유지한다.}}&lt;br /&gt;
{{학습카드|번호=RECOVERY|제목=강력한 복구|설명=Redo·Archive Log와 RMAN으로 특정 시점 복구, Flashback으로 실수 데이터 되돌리기가 가능하다.}}&lt;br /&gt;
{{학습카드|번호=MULTITENANT|제목=멀티테넌트|설명=하나의 컨테이너 DB(CDB) 안에 여러 플러거블 DB(PDB)를 두고 독립적으로 관리한다 (12c+).}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 에디션과 버전 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 내용&lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Edition (EE) || 모든 기능 + 옵션(Partitioning, RAC, Diagnostics/Tuning Pack 등은 별도 라이선스)&lt;br /&gt;
|-&lt;br /&gt;
| Standard Edition 2 (SE2) || 중소 규모용, 소켓 수 제한, 일부 기능 미지원&lt;br /&gt;
|-&lt;br /&gt;
| Free (구 Express Edition) || 학습·개발용 무료 버전 (CPU·메모리·저장 용량 제한)&lt;br /&gt;
|-&lt;br /&gt;
| 19c || 장기 지원(Long Term Release) 버전 — 현재 운영 환경에서 가장 많이 쓰인다&lt;br /&gt;
|-&lt;br /&gt;
| 23ai || 최신 장기 지원 버전 — JSON 관계형 이중성, 벡터 검색, &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; 타입, &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; without &amp;lt;code&amp;gt;FROM DUAL&amp;lt;/code&amp;gt; 등&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 다른 DBMS 경험자를 위한 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Oracle !! [[PostgreSQL 입문|PostgreSQL]] !! [[MySQL 입문|MySQL]]&lt;br /&gt;
|-&lt;br /&gt;
| 스키마 || &#039;&#039;&#039;사용자 = 스키마&#039;&#039;&#039; || DB 안의 별도 객체 || 데이터베이스 = 스키마&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 구조 (기본) || 힙 테이블 || 힙 테이블 || PK 클러스터드 (InnoDB)&lt;br /&gt;
|-&lt;br /&gt;
| MVCC 이전 버전 || Undo 테이블스페이스 || 테이블 안 (VACUUM) || Undo 로그&lt;br /&gt;
|-&lt;br /&gt;
| 기본 격리 수준 || READ COMMITTED || READ COMMITTED || REPEATABLE READ&lt;br /&gt;
|-&lt;br /&gt;
| 빈 문자열 || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = NULL || NULL 아님 || NULL 아님&lt;br /&gt;
|-&lt;br /&gt;
| DDL || 자동 커밋 || 롤백 가능 || 자동 커밋&lt;br /&gt;
|-&lt;br /&gt;
| 페이징 || &amp;lt;code&amp;gt;FETCH FIRST n ROWS ONLY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ROWNUM&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 설치와 접속 ==&lt;br /&gt;
=== 2.1 가장 빠른 방법 — Oracle Database Free (Docker) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name oracle-lab \&lt;br /&gt;
  -p 1521:1521 \&lt;br /&gt;
  -e ORACLE_PWD=Lab12345 \&lt;br /&gt;
  -v oradata:/opt/oracle/oradata \&lt;br /&gt;
  container-registry.oracle.com/database/free:latest&lt;br /&gt;
&lt;br /&gt;
docker logs -f oracle-lab          # &amp;quot;DATABASE IS READY TO USE!&amp;quot; 메시지가 나올 때까지 대기&lt;br /&gt;
&lt;br /&gt;
# 컨테이너 안에서 SYSDBA로 접속&lt;br /&gt;
docker exec -it oracle-lab sqlplus / as sysdba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=기본 접속 정보 (Free 이미지)|내용=리스너 포트 1521, CDB 서비스명 FREE, 기본 PDB 서비스명 &#039;&#039;&#039;FREEPDB1&#039;&#039;&#039;. 실습 테이블은 CDB가 아니라 &#039;&#039;&#039;PDB에 접속해서&#039;&#039;&#039; 만든다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.2 접속 방법 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# EZConnect (호스트:포트/서비스명)&lt;br /&gt;
sqlplus system/Lab12345@//localhost:1521/FREEPDB1&lt;br /&gt;
&lt;br /&gt;
# tnsnames.ora 별칭 사용&lt;br /&gt;
sqlplus scott/tiger@ORCLPDB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# $ORACLE_HOME/network/admin/tnsnames.ora&lt;br /&gt;
ORCLPDB =&lt;br /&gt;
  (DESCRIPTION =&lt;br /&gt;
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))&lt;br /&gt;
    (CONNECT_DATA = (SERVICE_NAME = orclpdb)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=GUI 도구|내용=무료 공식 도구인 SQL Developer, VS Code의 Oracle SQL Developer Extension이 있고, DBeaver, Toad, Orange 등도 많이 쓴다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.3 SQL*Plus 필수 명령 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 명령 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONN user/pw@서비스&amp;lt;/code&amp;gt; || 다른 사용자로 재접속&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW USER&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SHOW CON_NAME&amp;lt;/code&amp;gt; || 현재 사용자 / 현재 컨테이너(CDB·PDB)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALTER SESSION SET CONTAINER = FREEPDB1;&amp;lt;/code&amp;gt; || SYSDBA 세션에서 PDB로 전환&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DESC 테이블명&amp;lt;/code&amp;gt; || 테이블 구조&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET LINESIZE 200 PAGESIZE 100&amp;lt;/code&amp;gt; || 출력 폭·페이지 설정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;COL 컬럼명 FORMAT A30&amp;lt;/code&amp;gt; || 컬럼 출력 폭 지정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET TIMING ON&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SET AUTOTRACE ON&amp;lt;/code&amp;gt; || 실행 시간 / 실행계획·통계 표시&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@script.sql&amp;lt;/code&amp;gt; || 스크립트 실행&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SPOOL result.txt&amp;lt;/code&amp;gt; … &amp;lt;code&amp;gt;SPOOL OFF&amp;lt;/code&amp;gt; || 결과를 파일로 저장&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW PARAMETER 이름&amp;lt;/code&amp;gt; || 초기화 파라미터 확인&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 아키텍처 ==&lt;br /&gt;
=== 3.1 인스턴스와 데이터베이스 ===&lt;br /&gt;
{{핵심|제목=가장 먼저 구분할 두 개념|내용=&#039;&#039;&#039;인스턴스(Instance)&#039;&#039;&#039; = 메모리(SGA) + 백그라운드 프로세스, &#039;&#039;&#039;데이터베이스(Database)&#039;&#039;&#039; = 디스크의 파일(데이터 파일·컨트롤 파일·리두 로그). 인스턴스가 데이터베이스를 열어(OPEN) 사용한다. RAC에서는 여러 인스턴스가 하나의 데이터베이스를 공유한다.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────────────────── 인스턴스 ─────────────────────────────┐&lt;br /&gt;
 │  SGA (공유 메모리)                                                 │&lt;br /&gt;
 │  ┌──────────────┐ ┌────────────────────┐ ┌──────────────┐        │&lt;br /&gt;
 │  │ Shared Pool  │ │ Database Buffer    │ │ Redo Log     │        │&lt;br /&gt;
 │  │ (SQL·딕셔너리)│ │ Cache (데이터 블록) │ │ Buffer       │        │&lt;br /&gt;
 │  └──────────────┘ └────────────────────┘ └──────────────┘        │&lt;br /&gt;
 │  백그라운드 프로세스: PMON · SMON · DBWn · LGWR · CKPT · ARCn · MMON  │&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
   ▲ 서버 프로세스 (접속마다, PGA: 정렬·해시 작업 영역)&lt;br /&gt;
   │&lt;br /&gt;
 ┌──────────────────────────── 데이터베이스 (파일) ──────────────────┐&lt;br /&gt;
 │  Data Files (.dbf) · Control Files (.ctl) · Online Redo Log Files │&lt;br /&gt;
 │  (부가) Parameter File(spfile) · Password File · Archive Log Files│&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 주요 백그라운드 프로세스 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|최소너비 = 120px&lt;br /&gt;
|제목1 = DBWn |설명1 = 변경 블록을 데이터 파일에 기록&lt;br /&gt;
|제목2 = LGWR |설명2 = 리두 버퍼를 리두 로그에 기록&lt;br /&gt;
|제목3 = CKPT |설명3 = 체크포인트 정보 갱신&lt;br /&gt;
|제목4 = SMON |설명4 = 인스턴스 복구&lt;br /&gt;
|제목5 = PMON |설명5 = 실패 프로세스 정리&lt;br /&gt;
|제목6 = ARCn |설명6 = 리두 로그 아카이브&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 3.3 멀티테넌트 (CDB / PDB) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 CDB (컨테이너 데이터베이스)&lt;br /&gt;
  ├─ CDB$ROOT   ← 오라클 메타데이터, 공통 사용자(C##)&lt;br /&gt;
  ├─ PDB$SEED   ← 새 PDB를 만들 때 쓰는 템플릿 (읽기 전용)&lt;br /&gt;
  ├─ PDB1       ← 업무 DB (로컬 사용자·테이블)&lt;br /&gt;
  └─ PDB2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 업무 사용자와 테이블은 &#039;&#039;&#039;PDB 안에&#039;&#039;&#039; 만든다. 21c부터는 멀티테넌트 구조만 지원한다.&lt;br /&gt;
&lt;br /&gt;
=== 3.4 논리 저장 구조 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = 테이블스페이스 |설명1 = 데이터 파일의 논리 묶음&lt;br /&gt;
|제목2 = 세그먼트 |설명2 = 테이블·인덱스 하나&lt;br /&gt;
|제목3 = 익스텐트 |설명3 = 연속된 블록 묶음&lt;br /&gt;
|제목4 = 블록 |설명4 = I/O 최소 단위 (보통 8KB)&lt;br /&gt;
}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 테이블스페이스 !! 용도&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM / SYSAUX || 데이터 딕셔너리, AWR 등 오라클 내부용&lt;br /&gt;
|-&lt;br /&gt;
| UNDOTBS1 || 변경 전 이미지 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| TEMP || 정렬·해시 임시 작업 공간&lt;br /&gt;
|-&lt;br /&gt;
| USERS 및 업무용 || 사용자 테이블·인덱스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 4. 기본 SQL과 데이터 타입 ==&lt;br /&gt;
=== 4.1 주요 데이터 타입 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용도 !! 타입 !! 메모&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n)&amp;lt;/code&amp;gt; || 최대 4000바이트 (확장 시 32767), &amp;lt;code&amp;gt;n CHAR&amp;lt;/code&amp;gt;로 문자 수 지정 가능&lt;br /&gt;
|-&lt;br /&gt;
| 숫자 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || 정수·소수 모두. &amp;lt;code&amp;gt;NUMBER(10)&amp;lt;/code&amp;gt;은 정수&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &#039;&#039;&#039;시·분·초까지 포함&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일시 || &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP WITH TIME ZONE&amp;lt;/code&amp;gt; || 소수 초, 시간대&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt;은 사용하지 않음&lt;br /&gt;
|-&lt;br /&gt;
| 반정형 || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; (21c+) / &amp;lt;code&amp;gt;CLOB IS JSON&amp;lt;/code&amp;gt; (19c) ||&lt;br /&gt;
|-&lt;br /&gt;
| 참/거짓 || &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; (23ai+) || 이전 버전은 &amp;lt;code&amp;gt;CHAR(1)&amp;lt;/code&amp;gt; + CHECK&lt;br /&gt;
|}&lt;br /&gt;
{{중요|내용=Oracle은 &#039;&#039;&#039;빈 문자열(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)을 NULL로 취급&#039;&#039;&#039;한다. &amp;lt;code&amp;gt;WHERE col = &amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;는 항상 거짓이므로 &amp;lt;code&amp;gt;WHERE col IS NULL&amp;lt;/code&amp;gt;로 써야 한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 테이블 만들기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE customer (&lt;br /&gt;
    cust_id     NUMBER GENERATED ALWAYS AS IDENTITY,    -- 12c+ (이전에는 SEQUENCE + 트리거)&lt;br /&gt;
    cust_nm     VARCHAR2(100 CHAR) NOT NULL,&lt;br /&gt;
    email       VARCHAR2(200),&lt;br /&gt;
    grade_cd    VARCHAR2(10) DEFAULT &#039;NORMAL&#039; NOT NULL,&lt;br /&gt;
    created_at  DATE DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_customer PRIMARY KEY (cust_id),&lt;br /&gt;
    CONSTRAINT uk_customer_email UNIQUE (email)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    NUMBER GENERATED ALWAYS AS IDENTITY,&lt;br /&gt;
    cust_id     NUMBER NOT NULL,&lt;br /&gt;
    order_dt    DATE   NOT NULL,&lt;br /&gt;
    amount      NUMBER(12,2) NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_orders PRIMARY KEY (order_id),&lt;br /&gt;
    CONSTRAINT fk_orders_cust FOREIGN KEY (cust_id) REFERENCES customer (cust_id),&lt;br /&gt;
    CONSTRAINT ck_orders_amt CHECK (amount &amp;gt;= 0)&lt;br /&gt;
);&lt;br /&gt;
CREATE INDEX ix_orders_01 ON orders (cust_id, order_dt);   -- FK 컬럼 인덱스는 직접 만든다&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE customer IS &#039;고객&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 자주 쓰는 SQL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DUAL: 테이블 없이 식 계산 (23ai부터는 FROM DUAL 생략 가능)&lt;br /&gt;
SELECT SYSDATE, USER FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- 시퀀스&lt;br /&gt;
CREATE SEQUENCE sq_order_no START WITH 1 INCREMENT BY 1 CACHE 100;&lt;br /&gt;
SELECT sq_order_no.NEXTVAL FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- MERGE (UPSERT)&lt;br /&gt;
MERGE INTO customer t&lt;br /&gt;
USING (SELECT &#039;hong@example.com&#039; AS email, &#039;홍길동&#039; AS cust_nm FROM DUAL) s&lt;br /&gt;
   ON (t.email = s.email)&lt;br /&gt;
 WHEN MATCHED THEN UPDATE SET t.cust_nm = s.cust_nm&lt;br /&gt;
 WHEN NOT MATCHED THEN INSERT (cust_nm, email) VALUES (s.cust_nm, s.email);&lt;br /&gt;
&lt;br /&gt;
-- 페이징 (12c+)&lt;br /&gt;
SELECT * FROM orders ORDER BY order_dt DESC&lt;br /&gt;
OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 계층 조회&lt;br /&gt;
SELECT LEVEL, emp_name FROM emp&lt;br /&gt;
 START WITH mgr_id IS NULL&lt;br /&gt;
CONNECT BY PRIOR emp_id = mgr_id;&lt;br /&gt;
&lt;br /&gt;
-- 자주 쓰는 함수&lt;br /&gt;
SELECT NVL(email, &#039;-&#039;), DECODE(grade_cd, &#039;VIP&#039;, &#039;우수&#039;, &#039;일반&#039;),&lt;br /&gt;
       TO_CHAR(created_at, &#039;YYYY-MM-DD HH24:MI:SS&#039;)&lt;br /&gt;
  FROM customer;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 트랜잭션, Undo와 Redo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Undo !! Redo&lt;br /&gt;
|-&lt;br /&gt;
| 기록 내용 || &#039;&#039;&#039;변경 전&#039;&#039;&#039; 데이터 || &#039;&#039;&#039;변경 내역&#039;&#039;&#039; (변경 후 재현 정보)&lt;br /&gt;
|-&lt;br /&gt;
| 목적 || 롤백, &#039;&#039;&#039;읽기 일관성&#039;&#039;&#039;, Flashback || &#039;&#039;&#039;장애 복구&#039;&#039;&#039; (인스턴스·미디어 복구)&lt;br /&gt;
|-&lt;br /&gt;
| 저장 위치 || Undo 테이블스페이스 || Online Redo Log → (아카이브 모드) Archive Log&lt;br /&gt;
|-&lt;br /&gt;
| 관련 오류 || ORA-01555 snapshot too old || 리두 로그 스위치 대기, 아카이브 공간 부족&lt;br /&gt;
|}&lt;br /&gt;
{{요점|내용=COMMIT 시점에는 데이터 파일이 아니라 &#039;&#039;&#039;리두 로그만 디스크에 기록&#039;&#039;&#039;된다 (LGWR). 데이터 블록은 나중에 DBWn이 기록한다. 그래서 커밋은 빠르고, 장애가 나도 리두로 복구할 수 있다.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DML은 명시적으로 COMMIT / ROLLBACK&lt;br /&gt;
UPDATE orders SET amount = amount - 1000 WHERE order_id = 10;&lt;br /&gt;
SAVEPOINT sp1;&lt;br /&gt;
DELETE FROM orders WHERE order_id = 11;&lt;br /&gt;
ROLLBACK TO sp1;      -- DELETE만 취소&lt;br /&gt;
COMMIT;&lt;br /&gt;
&lt;br /&gt;
-- 주의: DDL(CREATE, ALTER, TRUNCATE 등)은 실행 전후로 자동 COMMIT 된다&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=&amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt;는 Undo를 남기고 롤백할 수 있지만, &amp;lt;code&amp;gt;TRUNCATE&amp;lt;/code&amp;gt;는 DDL이라 &#039;&#039;&#039;롤백할 수 없다&#039;&#039;&#039;. 운영 데이터 삭제 전에는 반드시 백업 또는 조건을 다시 확인한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Flashback — 실수 되돌리기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 10분 전 데이터 조회 (Undo 보존 범위 안에서)&lt;br /&gt;
SELECT * FROM orders AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL &#039;10&#039; MINUTE)&lt;br /&gt;
 WHERE order_id = 10;&lt;br /&gt;
&lt;br /&gt;
-- 실수로 DROP한 테이블 복원 (휴지통)&lt;br /&gt;
FLASHBACK TABLE orders TO BEFORE DROP;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 데이터 딕셔너리와 동적 성능 뷰 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 접두어 !! 범위 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;USER_&amp;lt;/code&amp;gt; || 내가 소유한 객체 || &amp;lt;code&amp;gt;USER_TABLES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_INDEXES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_CONSTRAINTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALL_&amp;lt;/code&amp;gt; || 내가 접근 가능한 객체 || &amp;lt;code&amp;gt;ALL_TAB_COLUMNS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DBA_&amp;lt;/code&amp;gt; || DB 전체 (DBA 권한) || &amp;lt;code&amp;gt;DBA_SEGMENTS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_DATA_FILES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CDB_&amp;lt;/code&amp;gt; || 모든 컨테이너 || &amp;lt;code&amp;gt;CDB_TABLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;V$&amp;lt;/code&amp;gt; || 인스턴스 실시간 상태 (메모리) || &amp;lt;code&amp;gt;V$SESSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$SQL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$INSTANCE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$DATABASE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GV$&amp;lt;/code&amp;gt; || RAC 전체 인스턴스 || &amp;lt;code&amp;gt;GV$SESSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 7. 인덱스와 실행계획 맛보기 ==&lt;br /&gt;
* 기본 인덱스는 &#039;&#039;&#039;B*Tree&#039;&#039;&#039; — 조건 컬럼, 조인 컬럼, 정렬 컬럼에 만든다.&lt;br /&gt;
* 결합 인덱스는 &#039;&#039;&#039;= 조건 컬럼을 앞에, 범위 조건 컬럼을 뒤에&#039;&#039;&#039; 둔다.&lt;br /&gt;
* 인덱스 컬럼을 가공하면(&amp;lt;code&amp;gt;TO_CHAR(col)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col + 1&amp;lt;/code&amp;gt;) 인덱스를 쓰지 못한다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM orders WHERE cust_id = 1001;&lt;br /&gt;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &#039;ALLSTATS LAST&#039;));&lt;br /&gt;
&lt;br /&gt;
-- 옵티마이저 통계 수집&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;ORDERS&#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{서브|제목=다음 단계|내용=실행계획과 인덱스·조인 튜닝은 [[SQL 튜닝 입문]] → [[실행계획 읽기 실습]] → [[인덱스 튜닝 심화]]에서 자세히 다룬다.|제목아이콘=arrow_forward}}&lt;br /&gt;
&lt;br /&gt;
== 8. 사용자·권한 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- PDB에 접속한 상태에서&lt;br /&gt;
CREATE USER app_user IDENTIFIED BY &amp;quot;Change_me1&amp;quot;&lt;br /&gt;
  DEFAULT TABLESPACE users QUOTA 1G ON users;&lt;br /&gt;
&lt;br /&gt;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;   -- 시스템 권한&lt;br /&gt;
&lt;br /&gt;
CREATE ROLE app_read;&lt;br /&gt;
GRANT SELECT ON app_user.orders TO app_read;                                     -- 객체 권한&lt;br /&gt;
GRANT app_read TO report_user;&lt;br /&gt;
&lt;br /&gt;
-- 권한 확인&lt;br /&gt;
SELECT * FROM DBA_SYS_PRIVS WHERE grantee = &#039;APP_USER&#039;;&lt;br /&gt;
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = &#039;APP_READ&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=스키마 = 사용자|내용=Oracle에서는 사용자를 만들면 같은 이름의 스키마가 생긴다. 다른 스키마의 테이블은 &amp;lt;code&amp;gt;app_user.orders&amp;lt;/code&amp;gt;처럼 소유자를 붙여 접근하거나 동의어(SYNONYM)를 만든다.}}&lt;br /&gt;
&lt;br /&gt;
== 9. 기동과 종료 ==&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = SHUTDOWN |설명1 = 인스턴스 없음&lt;br /&gt;
|제목2 = NOMOUNT |설명2 = 파라미터 파일 읽고 인스턴스 시작&lt;br /&gt;
|제목3 = MOUNT |설명3 = 컨트롤 파일 열기&lt;br /&gt;
|제목4 = OPEN |설명4 = 데이터 파일·리두 로그 열기&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- SYSDBA로&lt;br /&gt;
STARTUP;                         -- NOMOUNT → MOUNT → OPEN&lt;br /&gt;
SHUTDOWN IMMEDIATE;              -- 진행 중 트랜잭션 롤백 후 정상 종료 (가장 많이 사용)&lt;br /&gt;
&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL OPEN;               -- 모든 PDB 열기&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL SAVE STATE;         -- 재기동 시 자동으로 열리도록 저장&lt;br /&gt;
&lt;br /&gt;
SELECT instance_name, status FROM v$instance;&lt;br /&gt;
SELECT name, open_mode, log_mode FROM v$database;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=Alert Log|내용=기동·종료, 오류(ORA-), 로그 스위치 등 DB의 중요한 사건이 기록되는 파일이다. 위치는 &amp;lt;code&amp;gt;SELECT value FROM v$diag_info WHERE name = &#039;Diag Trace&#039;;&amp;lt;/code&amp;gt;로 확인한다. 장애가 나면 가장 먼저 본다.}}&lt;br /&gt;
&lt;br /&gt;
== 10. 백업과 복구 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 방식 !! 도구 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 물리 백업 || &#039;&#039;&#039;RMAN&#039;&#039;&#039; (Recovery Manager) || 온라인 백업, 증분 백업, 블록 손상 검사, 시점 복구 — &#039;&#039;&#039;운영 표준&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 || &#039;&#039;&#039;Data Pump&#039;&#039;&#039; (&amp;lt;code&amp;gt;expdp&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;impdp&amp;lt;/code&amp;gt;) || 스키마·테이블 단위 이관, 버전 간 이동&lt;br /&gt;
|-&lt;br /&gt;
| 아카이브 로그 모드 || &amp;lt;code&amp;gt;ARCHIVELOG&amp;lt;/code&amp;gt; || 온라인 백업과 시점 복구의 전제 조건&lt;br /&gt;
|-&lt;br /&gt;
| 실수 복구 || Flashback Query / Table / Drop || Undo·휴지통으로 빠르게 되돌리기&lt;br /&gt;
|-&lt;br /&gt;
| 재해 대비 || Data Guard || 원격 대기 DB로 리두 전송&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# RMAN 전체 백업 (아카이브 로그 포함)&lt;br /&gt;
rman target /&lt;br /&gt;
RMAN&amp;gt; BACKUP DATABASE PLUS ARCHIVELOG;&lt;br /&gt;
RMAN&amp;gt; LIST BACKUP SUMMARY;&lt;br /&gt;
&lt;br /&gt;
# Data Pump 스키마 내보내기 / 가져오기&lt;br /&gt;
expdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp logfile=app_exp.log&lt;br /&gt;
impdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp remap_schema=APP_USER:APP_TEST&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. 모니터링 기본 쿼리 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 활성 세션과 대기 이벤트&lt;br /&gt;
SELECT sid, serial#, username, status, sql_id, event, seconds_in_wait&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE type = &#039;USER&#039; AND status = &#039;ACTIVE&#039;;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기 (블로킹 세션)&lt;br /&gt;
SELECT sid, blocking_session, event, sql_id&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE blocking_session IS NOT NULL;&lt;br /&gt;
&lt;br /&gt;
-- 테이블스페이스 사용률&lt;br /&gt;
SELECT tablespace_name, ROUND(used_percent, 1) AS used_pct&lt;br /&gt;
  FROM dba_tablespace_usage_metrics&lt;br /&gt;
 ORDER BY used_percent DESC;&lt;br /&gt;
&lt;br /&gt;
-- 크기가 큰 세그먼트&lt;br /&gt;
SELECT owner, segment_name, segment_type, ROUND(bytes/1024/1024) AS mb&lt;br /&gt;
  FROM dba_segments&lt;br /&gt;
 ORDER BY bytes DESC FETCH FIRST 10 ROWS ONLY;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 학습 커리큘럼 (10주) ==&lt;br /&gt;
{{안내바|강조=설치 → 아키텍처 → SQL → 트랜잭션 → 운영|내용=한 주에 이론 3시간 + 실습 3시간|우측=SQL 기초가 약하다면 4주차에 시간을 더 쓰세요.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot; | 주차 !! style=&amp;quot;width:12%;&amp;quot; | 단계 !! style=&amp;quot;width:22%;&amp;quot; | 주제 !! 세부 내용 !! style=&amp;quot;width:22%;&amp;quot; | 실습&lt;br /&gt;
|-&lt;br /&gt;
| 1 || rowspan=&amp;quot;2&amp;quot; | 기초 || Oracle 소개와 설치 || 역사·에디션·버전, Free 설치, SQL*Plus·SQL Developer, 접속 방식 || 실습 DB 구축, PDB 접속&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 아키텍처 ① || 인스턴스와 데이터베이스, SGA·PGA, 백그라운드 프로세스 || V$ 뷰로 구조 확인&lt;br /&gt;
|-&lt;br /&gt;
| 3 || rowspan=&amp;quot;2&amp;quot; | 구조 || 아키텍처 ② || CDB/PDB, 테이블스페이스·세그먼트·익스텐트·블록, 데이터 딕셔너리 || 테이블스페이스·사용자 생성&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 데이터 타입과 SQL || VARCHAR2·NUMBER·DATE, 제약조건, IDENTITY·시퀀스, 함수, MERGE || 쇼핑몰 테이블 설계 ([[데이터 모델링 입문]] 연계)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || rowspan=&amp;quot;2&amp;quot; | 트랜잭션 || 트랜잭션과 읽기 일관성 || COMMIT·ROLLBACK, Undo·Redo, 락, ORA-01555 || 두 세션으로 락·일관성 재현&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Flashback과 휴지통 || Flashback Query·Table·Drop, Undo 보존 || 실수 삭제 복구&lt;br /&gt;
|-&lt;br /&gt;
| 7 || rowspan=&amp;quot;2&amp;quot; | 성능 기초 || 인덱스 || B*Tree 구조, 결합 인덱스, 인덱스를 못 쓰는 경우 || 인덱스 유무 비교&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 실행계획과 통계 || DBMS_XPLAN, 옵티마이저 통계 ([[SQL 튜닝 입문]] 연계) || 실행계획 읽기&lt;br /&gt;
|-&lt;br /&gt;
| 9 || rowspan=&amp;quot;2&amp;quot; | 운영 || 사용자·권한·기동 || 시스템·객체 권한, 롤, 프로파일, STARTUP·SHUTDOWN, Alert Log || 읽기 전용 계정 설계&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 백업과 복구 || ARCHIVELOG, RMAN 백업·복구, Data Pump || RMAN 백업, 스키마 이관&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 입문자 체크리스트 ==&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = SELF CHECK&lt;br /&gt;
|제목 = 이 정도면 입문 완료&lt;br /&gt;
|내용 = □ SQL*Plus로 PDB에 접속하고 현재 사용자·컨테이너를 확인할 수 있다&amp;lt;br/&amp;gt;□ 인스턴스와 데이터베이스, SGA와 PGA의 차이를 설명할 수 있다&amp;lt;br/&amp;gt;□ 테이블스페이스 → 세그먼트 → 익스텐트 → 블록 구조를 설명할 수 있다&amp;lt;br/&amp;gt;□ Undo와 Redo의 역할 차이, DDL 자동 커밋을 설명할 수 있다&amp;lt;br/&amp;gt;□ 사용자를 만들고 시스템·객체 권한을 부여할 수 있다&amp;lt;br/&amp;gt;□ RMAN 백업과 Data Pump 이관을 한 번씩 해 보았다&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 14. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 (Instance) || SGA + 백그라운드 프로세스&lt;br /&gt;
|-&lt;br /&gt;
| SGA || 모든 세션이 공유하는 메모리 (버퍼 캐시, 공유 풀, 리두 버퍼)&lt;br /&gt;
|-&lt;br /&gt;
| PGA || 서버 프로세스 전용 메모리 (정렬·해시 작업)&lt;br /&gt;
|-&lt;br /&gt;
| CDB / PDB || 컨테이너 DB / 플러거블 DB&lt;br /&gt;
|-&lt;br /&gt;
| 테이블스페이스 || 데이터 파일을 묶는 논리 저장 단위&lt;br /&gt;
|-&lt;br /&gt;
| 세그먼트 || 저장 공간을 차지하는 객체 하나 (테이블, 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| Undo || 변경 전 데이터 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| Redo || 변경 내역 로그 (장애 복구)&lt;br /&gt;
|-&lt;br /&gt;
| SCN || 시스템 변경 번호, DB의 논리적 시각&lt;br /&gt;
|-&lt;br /&gt;
| ARCHIVELOG || 리두 로그를 보관하는 운영 모드&lt;br /&gt;
|-&lt;br /&gt;
| RMAN || Oracle 공식 백업·복구 도구&lt;br /&gt;
|-&lt;br /&gt;
| Data Pump || 논리 내보내기·가져오기 도구 (expdp/impdp)&lt;br /&gt;
|-&lt;br /&gt;
| 리스너 (Listener) || 클라이언트 접속 요청을 받아 서버 프로세스로 연결하는 프로세스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 15. 참고 자료 ==&lt;br /&gt;
* Oracle Database 19c Documentation — https://docs.oracle.com/en/database/oracle/oracle-database/19/&lt;br /&gt;
* Oracle Database Concepts (19c) — 아키텍처 학습의 기본서&lt;br /&gt;
* Oracle Database Free — https://www.oracle.com/database/free/&lt;br /&gt;
* Oracle Live SQL — 설치 없이 브라우저에서 SQL 실습&lt;br /&gt;
&lt;br /&gt;
{{관련글|이전글=[[데이터 모델링 입문]]|다음글=[[SQL 튜닝 입문]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2048</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2048"/>
		<updated>2026-11-04T06:48:39Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 입문 코스 카드 4열 배치&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2047</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2047"/>
		<updated>2026-11-04T06:48:23Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문에 MySQL 입문 코스 카드 추가, MySQL 칩 활성화&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 04 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[MySQL 입문|MySQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 접속부터 InnoDB 클러스터드 인덱스, EXPLAIN, 트랜잭션·락, 복제·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[MySQL 입문#2. 설치와 접속|설치와 접속]] · [[MySQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[MySQL 입문#5.2 클러스터드 인덱스 — 가장 중요한 개념|클러스터드 인덱스]] · [[MySQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[MySQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[MySQL 입문|MySQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=MySQL_%EC%9E%85%EB%AC%B8&amp;diff=2046</id>
		<title>MySQL 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=MySQL_%EC%9E%85%EB%AC%B8&amp;diff=2046"/>
		<updated>2026-11-04T06:48:22Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: MySQL 초보 입문자용 문서 생성&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = MYSQL · FOUNDATION COURSE&lt;br /&gt;
|제목 = MySQL 입문&lt;br /&gt;
|설명 = 웹 서비스에서 가장 많이 쓰이는 오픈소스 RDBMS — 설치와 접속부터 InnoDB 구조, 인덱스, 트랜잭션·락, 복제와 백업까지&amp;lt;br/&amp;gt;처음 시작하는 사람과 Oracle 사용자를 위한 단계별 가이드&lt;br /&gt;
|색상1 = #0b3c49&lt;br /&gt;
|색상2 = #00617a&lt;br /&gt;
|색상3 = #00758f&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 10주&lt;br /&gt;
|배지3 = 기준 · MySQL 8.0 / 8.4 LTS&lt;br /&gt;
|배지4 = 비교 · Oracle 19c&lt;br /&gt;
}}&lt;br /&gt;
{{단계양식&lt;br /&gt;
|제목1 = 개념 · 설치&lt;br /&gt;
|설명1 = MySQL의 특징, 설치와 mysql 클라이언트&lt;br /&gt;
|제목2 = SQL · 데이터 타입&lt;br /&gt;
|설명2 = DDL·DML, AUTO_INCREMENT, utf8mb4, JSON&lt;br /&gt;
|제목3 = InnoDB 구조&lt;br /&gt;
|설명3 = 클러스터드 인덱스, 버퍼 풀, Redo·Undo·Binlog&lt;br /&gt;
|제목4 = 성능 · 운영&lt;br /&gt;
|설명4 = 인덱스·EXPLAIN, 락, 권한, 백업·복제&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. MySQL이란 ==&lt;br /&gt;
&#039;&#039;&#039;MySQL&#039;&#039;&#039;은 1995년 스웨덴 MySQL AB가 공개한 &#039;&#039;&#039;오픈소스 관계형 데이터베이스&#039;&#039;&#039;로, 현재는 Oracle Corporation이 개발한다. 가볍고 빠르며 설치·운영이 쉬워 웹 서비스, 쇼핑몰, 게임, SaaS 등에서 가장 널리 쓰인다. 같은 뿌리에서 갈라진 &#039;&#039;&#039;MariaDB&#039;&#039;&#039;도 대부분 문법이 호환된다.&lt;br /&gt;
&lt;br /&gt;
{{요점|제목=한 줄 정의|내용=단순하고 빠른 읽기·쓰기에 강한, &#039;&#039;&#039;InnoDB 스토리지 엔진&#039;&#039;&#039; 기반의 대표적인 오픈소스 RDBMS}}&lt;br /&gt;
&lt;br /&gt;
=== 1.1 주요 특징 ===&lt;br /&gt;
{{카드묶음|최소너비=230px|&lt;br /&gt;
{{학습카드|번호=STORAGE ENGINE|제목=플러그인 스토리지 엔진|설명=SQL 계층과 저장 계층이 분리되어 있다. 기본이자 사실상 표준은 트랜잭션을 지원하는 InnoDB.}}&lt;br /&gt;
{{학습카드|번호=CLUSTERED|제목=PK 순서로 저장|설명=InnoDB 테이블은 기본키(PK) 순서로 정렬된 클러스터드 인덱스 구조다. PK 설계가 성능을 좌우한다.}}&lt;br /&gt;
{{학습카드|번호=REPLICATION|제목=손쉬운 복제|설명=Binlog 기반 소스-레플리카 복제, GTID, Group Replication / InnoDB Cluster로 확장과 고가용성을 구성한다.}}&lt;br /&gt;
{{학습카드|번호=EDITIONS|제목=에디션|설명=Community Edition(GPL, 무료)과 Enterprise Edition(상용, 백업·감사·방화벽 등 추가 기능).}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Oracle과 한눈에 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Oracle !! MySQL (InnoDB)&lt;br /&gt;
|-&lt;br /&gt;
| 라이선스 || 상용 || Community(GPL) / Enterprise(상용)&lt;br /&gt;
|-&lt;br /&gt;
| 프로세스 구조 || 백그라운드 프로세스 + 서버 프로세스 || &#039;&#039;&#039;단일 프로세스(mysqld) + 접속마다 스레드&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 저장 구조 || 힙 테이블 (기본), IOT 선택 || &#039;&#039;&#039;PK 기준 클러스터드 인덱스 (Oracle IOT와 유사)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Undo / MVCC || Undo 테이블스페이스 || Undo 로그 기반 MVCC (Oracle과 비슷한 방식)&lt;br /&gt;
|-&lt;br /&gt;
| 리두 로그 || Redo Log / Archive Log || InnoDB Redo Log + &#039;&#039;&#039;Binary Log(binlog)&#039;&#039;&#039; (복제·시점 복구용)&lt;br /&gt;
|-&lt;br /&gt;
| 논리 구조 || 스키마 = 사용자 || &#039;&#039;&#039;데이터베이스 = 스키마&#039;&#039;&#039; (사용자와 별개, DB 간 조인 가능)&lt;br /&gt;
|-&lt;br /&gt;
| 기본 격리 수준 || READ COMMITTED || &#039;&#039;&#039;REPEATABLE READ&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 트랜잭션 DDL || 자동 커밋 || 자동 커밋 (DDL은 롤백 불가)&lt;br /&gt;
|-&lt;br /&gt;
| 사용자 식별 || 사용자명 || &#039;&#039;&#039;&amp;lt;code&amp;gt;&#039;사용자&#039;@&#039;호스트&#039;&amp;lt;/code&amp;gt;&#039;&#039;&#039; 조합&lt;br /&gt;
|-&lt;br /&gt;
| 실행계획 확인 || DBMS_XPLAN || &#039;&#039;&#039;EXPLAIN&#039;&#039;&#039;, &#039;&#039;&#039;EXPLAIN ANALYZE&#039;&#039;&#039; (8.0.18+)&lt;br /&gt;
|-&lt;br /&gt;
| 고가용성 || RAC, Data Guard || 복제(Replication), InnoDB Cluster, MHA·Orchestrator 등&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 설치와 접속 ==&lt;br /&gt;
=== 2.1 가장 빠른 방법 — Docker ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name mysql-lab \&lt;br /&gt;
  -e MYSQL_ROOT_PASSWORD=lab1234 \&lt;br /&gt;
  -p 3306:3306 \&lt;br /&gt;
  -v mysqldata:/var/lib/mysql \&lt;br /&gt;
  mysql:8.4&lt;br /&gt;
&lt;br /&gt;
docker exec -it mysql-lab mysql -uroot -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Linux 패키지 설치 (Rocky/RHEL 계열 예) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# MySQL 공식 Yum 저장소 등록 후&lt;br /&gt;
sudo dnf install -y mysql-community-server&lt;br /&gt;
sudo systemctl enable --now mysqld&lt;br /&gt;
sudo grep &#039;temporary password&#039; /var/log/mysqld.log   # 초기 root 임시 비밀번호&lt;br /&gt;
mysql_secure_installation                            # 비밀번호 변경·익명 계정 제거&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=Windows / macOS|내용=MySQL Installer(Windows), DMG 패키지 또는 Homebrew(macOS)로 설치한다. GUI 도구로는 MySQL Workbench, DBeaver, HeidiSQL이 많이 쓰인다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.3 mysql 클라이언트 필수 명령 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 명령 !! 의미 !! Oracle에서 비슷한 것&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mysql -h 호스트 -P 3306 -u 사용자 -p&amp;lt;/code&amp;gt; || 접속 || &amp;lt;code&amp;gt;sqlplus user@tns&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW DATABASES;&amp;lt;/code&amp;gt; || 데이터베이스(스키마) 목록 || &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;USE dbname;&amp;lt;/code&amp;gt; || 기본 DB 전환 || &amp;lt;code&amp;gt;ALTER SESSION SET CURRENT_SCHEMA&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW TABLES;&amp;lt;/code&amp;gt; || 테이블 목록 || &amp;lt;code&amp;gt;USER_TABLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DESC 테이블명;&amp;lt;/code&amp;gt; || 컬럼 구조 || &amp;lt;code&amp;gt;DESC&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW CREATE TABLE 테이블명\G&amp;lt;/code&amp;gt; || 테이블 DDL 전체 (인덱스·엔진 포함) || &amp;lt;code&amp;gt;DBMS_METADATA.GET_DDL&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW INDEX FROM 테이블명;&amp;lt;/code&amp;gt; || 인덱스 목록 || &amp;lt;code&amp;gt;USER_INDEXES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW PROCESSLIST;&amp;lt;/code&amp;gt; || 접속 세션 목록 || &amp;lt;code&amp;gt;V$SESSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW VARIABLES LIKE &#039;innodb%&#039;;&amp;lt;/code&amp;gt; || 시스템 변수 || &amp;lt;code&amp;gt;SHOW PARAMETER&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\G&amp;lt;/code&amp;gt; (문장 끝) || 세로 출력 || —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;source file.sql&amp;lt;/code&amp;gt; || 스크립트 실행 || &amp;lt;code&amp;gt;@file.sql&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 논리 구조 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 MySQL 서버 (mysqld 인스턴스 1개, datadir)&lt;br /&gt;
  ├─ 데이터베이스(=스키마) mysql               ← 사용자·권한 등 시스템 정보&lt;br /&gt;
  ├─ information_schema / performance_schema / sys ← 메타데이터·성능 정보&lt;br /&gt;
  ├─ 데이터베이스 shop&lt;br /&gt;
  │    ├─ 테이블 (InnoDB: 테이블마다 shop/orders.ibd 파일)&lt;br /&gt;
  │    ├─ 뷰, 트리거, 저장 프로시저/함수, 이벤트&lt;br /&gt;
  └─ 데이터베이스 board&lt;br /&gt;
  (공통) 사용자 &#039;user&#039;@&#039;host&#039; · 권한&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=MySQL에서 &#039;&#039;&#039;DATABASE와 SCHEMA는 같은 말&#039;&#039;&#039;이다 (&amp;lt;code&amp;gt;CREATE SCHEMA&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;CREATE DATABASE&amp;lt;/code&amp;gt;). 같은 서버 안이라면 &amp;lt;code&amp;gt;shop.orders&amp;lt;/code&amp;gt;처럼 &#039;&#039;&#039;다른 데이터베이스의 테이블과 바로 조인&#039;&#039;&#039;할 수 있다.}}&lt;br /&gt;
&lt;br /&gt;
== 4. 기본 SQL과 데이터 타입 ==&lt;br /&gt;
=== 4.1 주요 데이터 타입 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용도 !! MySQL !! Oracle 대응 !! 메모&lt;br /&gt;
|-&lt;br /&gt;
| 정수 || &amp;lt;code&amp;gt;INT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BIGINT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TINYINT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER(10)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;UNSIGNED&amp;lt;/code&amp;gt; 지정 가능&lt;br /&gt;
|-&lt;br /&gt;
| 정밀 숫자 || &amp;lt;code&amp;gt;DECIMAL(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || 금액&lt;br /&gt;
|-&lt;br /&gt;
| 문자 || &amp;lt;code&amp;gt;VARCHAR(n)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TEXT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(n)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; || n은 &#039;&#039;&#039;문자 수&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || MySQL DATE는 시간 없음&lt;br /&gt;
|-&lt;br /&gt;
| 일시 || &amp;lt;code&amp;gt;DATETIME&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt; || TIMESTAMP는 UTC 변환 저장, 2038년 한계&lt;br /&gt;
|-&lt;br /&gt;
| 참/거짓 || &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; (= &amp;lt;code&amp;gt;TINYINT(1)&amp;lt;/code&amp;gt;) || (없음) ||&lt;br /&gt;
|-&lt;br /&gt;
| 반정형 || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; || 함수 기반 인덱스로 검색 가속&lt;br /&gt;
|-&lt;br /&gt;
| 열거 || &amp;lt;code&amp;gt;ENUM(&#039;A&#039;,&#039;B&#039;)&amp;lt;/code&amp;gt; || CHECK 제약 || 값 추가 시 ALTER 필요&lt;br /&gt;
|}&lt;br /&gt;
{{중요|내용=문자셋은 반드시 &#039;&#039;&#039;&amp;lt;code&amp;gt;utf8mb4&amp;lt;/code&amp;gt;&#039;&#039;&#039;를 사용한다. MySQL의 &amp;lt;code&amp;gt;utf8&amp;lt;/code&amp;gt;(= utf8mb3)은 한 글자 최대 3바이트라 이모지 등 4바이트 문자를 저장하지 못한다. MySQL 8.0부터 기본값은 &amp;lt;code&amp;gt;utf8mb4&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;utf8mb4_0900_ai_ci&amp;lt;/code&amp;gt;이다.}}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 테이블 만들기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE DATABASE shop DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
USE shop;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE customer (&lt;br /&gt;
    cust_id     BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,&lt;br /&gt;
    cust_nm     VARCHAR(100) NOT NULL,&lt;br /&gt;
    email       VARCHAR(200),&lt;br /&gt;
    grade_cd    VARCHAR(10)  NOT NULL DEFAULT &#039;NORMAL&#039;,&lt;br /&gt;
    attrs       JSON,&lt;br /&gt;
    created_at  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,&lt;br /&gt;
    PRIMARY KEY (cust_id),&lt;br /&gt;
    UNIQUE KEY uk_customer_email (email)&lt;br /&gt;
) ENGINE=InnoDB COMMENT=&#039;고객&#039;;&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,&lt;br /&gt;
    cust_id     BIGINT UNSIGNED NOT NULL,&lt;br /&gt;
    order_dt    DATE           NOT NULL,&lt;br /&gt;
    amount      DECIMAL(12,2)  NOT NULL,&lt;br /&gt;
    PRIMARY KEY (order_id),&lt;br /&gt;
    KEY ix_orders_cust (cust_id, order_dt),&lt;br /&gt;
    CONSTRAINT fk_orders_cust FOREIGN KEY (cust_id) REFERENCES customer (cust_id),&lt;br /&gt;
    CONSTRAINT ck_orders_amt CHECK (amount &amp;gt;= 0)          -- 8.0.16부터 CHECK 실제 적용&lt;br /&gt;
) ENGINE=InnoDB;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 자주 쓰는 SQL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 방금 생성된 AUTO_INCREMENT 값&lt;br /&gt;
INSERT INTO customer (cust_nm, email) VALUES (&#039;홍길동&#039;, &#039;hong@example.com&#039;);&lt;br /&gt;
SELECT LAST_INSERT_ID();&lt;br /&gt;
&lt;br /&gt;
-- UPSERT&lt;br /&gt;
INSERT INTO customer (cust_nm, email) VALUES (&#039;홍길동&#039;, &#039;hong@example.com&#039;)&lt;br /&gt;
ON DUPLICATE KEY UPDATE cust_nm = VALUES(cust_nm);&lt;br /&gt;
&lt;br /&gt;
-- 페이징&lt;br /&gt;
SELECT * FROM orders ORDER BY order_dt DESC LIMIT 40, 20;   -- 41번째부터 20건&lt;br /&gt;
&lt;br /&gt;
-- JSON 조회&lt;br /&gt;
SELECT cust_nm FROM customer WHERE attrs-&amp;gt;&amp;gt;&#039;$.channel&#039; = &#039;mobile&#039;;&lt;br /&gt;
&lt;br /&gt;
-- CTE·윈도우 함수 (8.0+)&lt;br /&gt;
WITH t AS (SELECT cust_id, SUM(amount) AS amt FROM orders GROUP BY cust_id)&lt;br /&gt;
SELECT cust_id, amt, RANK() OVER (ORDER BY amt DESC) AS rnk FROM t;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Oracle 사용자를 위한 문법 대응표 ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Oracle !! MySQL !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SELECT 1 FROM DUAL&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;SELECT 1&amp;lt;/code&amp;gt; || DUAL도 사용 가능&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NVL(a, b)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;IFNULL(a, b)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;COALESCE(a, b)&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SYSDATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NOW()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CURDATE()&amp;lt;/code&amp;gt; || MySQL &amp;lt;code&amp;gt;SYSDATE()&amp;lt;/code&amp;gt;는 호출 시각 (NOW는 문장 시작 시각)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ROWNUM &amp;lt;= 10&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT 10&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;seq.NEXTVAL&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;AUTO_INCREMENT&amp;lt;/code&amp;gt; || 시퀀스 객체 없음&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DECODE(a, 1, &#039;x&#039;, &#039;y&#039;)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;CASE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;IF(a = 1, &#039;x&#039;, &#039;y&#039;)&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TO_CHAR(dt, &#039;YYYY-MM-DD&#039;)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE_FORMAT(dt, &#039;%Y-%m-%d&#039;)&amp;lt;/code&amp;gt; || 포맷 문자가 다르다&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TO_DATE(&#039;20261104&#039;,&#039;YYYYMMDD&#039;)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;STR_TO_DATE(&#039;20261104&#039;, &#039;%Y%m%d&#039;)&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;amp;#124;&amp;amp;#124; b&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;CONCAT(a, b)&amp;lt;/code&amp;gt; || MySQL의 &amp;lt;code&amp;gt;&amp;amp;#124;&amp;amp;#124;&amp;lt;/code&amp;gt;는 기본적으로 &#039;&#039;&#039;논리 OR&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MERGE INTO&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;INSERT … ON DUPLICATE KEY UPDATE&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;WITH RECURSIVE&amp;lt;/code&amp;gt; (8.0+) ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MINUS&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;EXCEPT&amp;lt;/code&amp;gt; (8.0.31+) ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;FULL OUTER JOIN&amp;lt;/code&amp;gt; || 지원 안 함 → &amp;lt;code&amp;gt;LEFT JOIN … UNION … RIGHT JOIN&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = NULL || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≠ NULL ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 5. InnoDB 내부 구조 ==&lt;br /&gt;
=== 5.1 메모리와 로그 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 클라이언트 ──접속──▶ mysqld (하나의 프로세스) ──▶ 접속마다 스레드 1개&lt;br /&gt;
 ┌──────────── SQL 계층 ─────────────┐&lt;br /&gt;
 │ 파서 · 옵티마이저 · 실행기          │──▶ Binary Log (binlog: 복제·PITR용, 논리 변경 기록)&lt;br /&gt;
 └────────────────┬──────────────────┘&lt;br /&gt;
 ┌──────────── InnoDB 엔진 ──────────┐&lt;br /&gt;
 │ Buffer Pool (데이터·인덱스 페이지 캐시, 16KB) │&lt;br /&gt;
 │ Log Buffer ──▶ Redo Log (장애 복구용)        │&lt;br /&gt;
 │ Undo Log (MVCC 이전 버전, 롤백)              │&lt;br /&gt;
 │ Change Buffer · Adaptive Hash Index          │&lt;br /&gt;
 └───────────────────────────────────┘&lt;br /&gt;
 백그라운드 스레드: master · purge · page cleaner · I/O threads&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 변수 !! 역할 !! 출발점 (전용 서버 기준)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;innodb_buffer_pool_size&amp;lt;/code&amp;gt; || 버퍼 풀 크기 (가장 중요) || 메모리의 50~70%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;innodb_redo_log_capacity&amp;lt;/code&amp;gt; || Redo 로그 전체 크기 (8.0.30+) || 쓰기량에 맞춰 수 GB&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;innodb_flush_log_at_trx_commit&amp;lt;/code&amp;gt; || 커밋 시 Redo 디스크 반영 방식 || &#039;&#039;&#039;1&#039;&#039;&#039; (안전, 기본값)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sync_binlog&amp;lt;/code&amp;gt; || 커밋 시 binlog 동기화 || &#039;&#039;&#039;1&#039;&#039;&#039; (안전, 기본값)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;max_connections&amp;lt;/code&amp;gt; || 최대 접속 수 || 애플리케이션 커넥션 풀과 함께 설계&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;long_query_time&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;slow_query_log&amp;lt;/code&amp;gt; || 느린 쿼리 기록 기준 || 1초 등으로 켜 두기&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 클러스터드 인덱스 — 가장 중요한 개념 ===&lt;br /&gt;
{{핵심|제목=InnoDB 저장 구조의 핵심|내용=InnoDB 테이블의 데이터는 &#039;&#039;&#039;기본키(PK) 순서대로 B+Tree 리프에 저장&#039;&#039;&#039;된다 (클러스터드 인덱스). 보조 인덱스(Secondary Index)의 리프에는 ROWID가 아니라 &#039;&#039;&#039;PK 값&#039;&#039;&#039;이 들어 있어, 보조 인덱스로 찾은 뒤 PK로 한 번 더 찾아간다.}}&lt;br /&gt;
&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = 보조 인덱스 |설명1 = 조건으로 PK 값 찾기&lt;br /&gt;
|제목2 = PK 인덱스 |설명2 = PK로 다시 탐색&lt;br /&gt;
|제목3 = 데이터 행 |설명3 = 클러스터드 리프에서 읽기&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! PK 설계 원칙 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;짧은 값&#039;&#039;&#039; (BIGINT 등) || 모든 보조 인덱스에 PK가 복사되므로 PK가 길면 인덱스 전체가 커진다&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;증가하는 값&#039;&#039;&#039; (AUTO_INCREMENT) || 랜덤 값(UUID 문자열)은 중간 삽입으로 페이지 분할이 잦아진다&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;반드시 명시&#039;&#039;&#039; || PK가 없으면 InnoDB가 숨은 6바이트 행 ID를 만들어 쓴다&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;변경하지 않는 값&#039;&#039;&#039; || PK 변경은 행 이동 + 모든 보조 인덱스 갱신을 일으킨다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.3 Redo Log와 Binlog ===&lt;br /&gt;
* &#039;&#039;&#039;Redo Log&#039;&#039;&#039; — InnoDB 엔진의 장애 복구용 물리 로그 (Oracle Redo와 같은 역할).&lt;br /&gt;
* &#039;&#039;&#039;Binary Log&#039;&#039;&#039; — 서버 계층의 논리 변경 기록. &#039;&#039;&#039;복제&#039;&#039;&#039;와 &#039;&#039;&#039;시점 복구(PITR)&#039;&#039;&#039;에 쓰인다. 형식은 &amp;lt;code&amp;gt;ROW&amp;lt;/code&amp;gt;(기본, 권장).&lt;br /&gt;
* 두 로그는 내부 2단계 커밋으로 일관성을 맞춘다.&lt;br /&gt;
&lt;br /&gt;
== 6. 인덱스와 실행계획 ==&lt;br /&gt;
=== 6.1 인덱스 기본 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 클러스터드 인덱스 (테이블 자체) || &amp;lt;code&amp;gt;PRIMARY KEY (order_id)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조 인덱스 || 일반 B+Tree 인덱스 || &amp;lt;code&amp;gt;CREATE INDEX ix ON orders (cust_id, order_dt);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 중복 불가 보조 인덱스 || &amp;lt;code&amp;gt;UNIQUE KEY uk (email)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 커버링 인덱스 || 필요한 컬럼이 모두 인덱스에 있어 PK 재탐색 생략 || EXPLAIN Extra: &amp;lt;code&amp;gt;Using index&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 함수 기반 인덱스 || 식 결과를 인덱싱 (8.0.13+) || &amp;lt;code&amp;gt;CREATE INDEX ix ON customer ((lower(email)));&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FULLTEXT || 전문 검색 (ngram 파서로 한글 지원) || &amp;lt;code&amp;gt;FULLTEXT KEY ft (title) WITH PARSER ngram&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 내림차순 인덱스 || 8.0부터 DESC 실제 적용 || &amp;lt;code&amp;gt;(order_dt DESC)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{설명|제목=Online DDL|내용=&amp;lt;code&amp;gt;ALTER TABLE … ADD INDEX … , ALGORITHM=INPLACE, LOCK=NONE&amp;lt;/code&amp;gt;처럼 지정하면 대부분의 인덱스 추가를 운영 중 DML을 막지 않고 수행할 수 있다. 대용량 테이블은 gh-ost, pt-online-schema-change 같은 도구도 쓴다.}}&lt;br /&gt;
&lt;br /&gt;
=== 6.2 EXPLAIN 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
EXPLAIN&lt;br /&gt;
SELECT c.cust_nm, SUM(o.amount)&lt;br /&gt;
  FROM customer c JOIN orders o ON o.cust_id = c.cust_id&lt;br /&gt;
 WHERE o.order_dt &amp;gt;= CURDATE() - INTERVAL 30 DAY&lt;br /&gt;
 GROUP BY c.cust_nm;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 컬럼 !! 의미 !! 주의해서 볼 값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; || 접근 테이블과 실행 단위 || 위에서 아래 순서로 조인 (드라이빙 → 드리븐)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt;&#039;&#039;&#039; || 접근 방식 || 좋음 &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;eq_ref&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;ref&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;index&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;ALL&amp;lt;/code&amp;gt;(풀스캔) 나쁨&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;possible_keys&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; || 후보 인덱스 / 실제 사용 인덱스 || key가 NULL이면 인덱스 미사용&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;key_len&amp;lt;/code&amp;gt; || 사용한 인덱스 길이 || 결합 인덱스의 몇 번째 컬럼까지 썼는지&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rows&amp;lt;/code&amp;gt; || 예상 읽기 행 수 ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;filtered&amp;lt;/code&amp;gt; || 조건 통과 예상 비율(%) ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&amp;lt;code&amp;gt;Extra&amp;lt;/code&amp;gt;&#039;&#039;&#039; || 추가 정보 || &amp;lt;code&amp;gt;Using index&amp;lt;/code&amp;gt;(좋음), &amp;lt;code&amp;gt;Using filesort&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Using temporary&amp;lt;/code&amp;gt;(주의)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 실제 실행 시간·행 수까지 (8.0.18+) — Oracle의 ALLSTATS LAST와 비슷&lt;br /&gt;
EXPLAIN ANALYZE&lt;br /&gt;
SELECT * FROM orders WHERE cust_id = 1001 AND order_dt &amp;gt;= &#039;2026-10-01&#039;;&lt;br /&gt;
&lt;br /&gt;
-- 트리 형식 계획&lt;br /&gt;
EXPLAIN FORMAT=TREE SELECT ...;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{요점|내용=인덱스를 못 타는 패턴은 Oracle과 같다 — &#039;&#039;&#039;인덱스 컬럼 가공&#039;&#039;&#039;, &#039;&#039;&#039;묵시적 형변환&#039;&#039;&#039;(문자 컬럼에 숫자 비교), &#039;&#039;&#039;앞쪽 와일드카드 LIKE&#039;&#039;&#039;, &#039;&#039;&#039;결합 인덱스 선두 컬럼 누락&#039;&#039;&#039;. 통계는 &amp;lt;code&amp;gt;ANALYZE TABLE 테이블명;&amp;lt;/code&amp;gt;으로 갱신한다. → [[인덱스 튜닝 심화]]}}&lt;br /&gt;
&lt;br /&gt;
== 7. 트랜잭션과 락 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 격리 수준 !! 특징 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| READ UNCOMMITTED || 커밋 전 데이터도 읽음 || 사용하지 않음&lt;br /&gt;
|-&lt;br /&gt;
| READ COMMITTED || 커밋된 최신 데이터 읽기 || Oracle 기본값과 같음&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;REPEATABLE READ&#039;&#039;&#039; || 트랜잭션 시작 시점 스냅샷 유지 || &#039;&#039;&#039;MySQL 기본값&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| SERIALIZABLE || 읽기에도 공유 락 ||&lt;br /&gt;
|}&lt;br /&gt;
{{중요|내용=REPEATABLE READ에서 범위 조건 UPDATE·DELETE·&amp;lt;code&amp;gt;SELECT … FOR UPDATE&amp;lt;/code&amp;gt;는 행 사이 공간까지 잠그는 &#039;&#039;&#039;갭 락(Gap Lock) / 넥스트 키 락&#039;&#039;&#039;을 건다. 인덱스가 없는 컬럼으로 UPDATE하면 &#039;&#039;&#039;사실상 테이블 전체가 잠길 수 있으므로&#039;&#039;&#039; 조건 컬럼에 인덱스가 꼭 필요하다.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- autocommit 기본값은 ON. 여러 문장을 묶으려면 명시적으로 시작&lt;br /&gt;
START TRANSACTION;&lt;br /&gt;
UPDATE orders SET amount = amount - 1000 WHERE order_id = 10;&lt;br /&gt;
COMMIT;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기 확인 (8.0+)&lt;br /&gt;
SELECT * FROM sys.innodb_lock_waits\G&lt;br /&gt;
SELECT * FROM performance_schema.data_locks LIMIT 20;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. 사용자·권한 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 사용자는 &#039;이름&#039;@&#039;접속 호스트&#039; 조합으로 구분된다&lt;br /&gt;
CREATE USER &#039;app_user&#039;@&#039;10.0.0.%&#039; IDENTIFIED BY &#039;change_me&#039;;&lt;br /&gt;
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO &#039;app_user&#039;@&#039;10.0.0.%&#039;;&lt;br /&gt;
&lt;br /&gt;
-- 역할(Role) 사용 (8.0+)&lt;br /&gt;
CREATE ROLE &#039;app_read&#039;;&lt;br /&gt;
GRANT SELECT ON shop.* TO &#039;app_read&#039;;&lt;br /&gt;
GRANT &#039;app_read&#039; TO &#039;report_user&#039;@&#039;%&#039;;&lt;br /&gt;
SET DEFAULT ROLE ALL TO &#039;report_user&#039;@&#039;%&#039;;&lt;br /&gt;
&lt;br /&gt;
SHOW GRANTS FOR &#039;app_user&#039;@&#039;10.0.0.%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=인증 플러그인|내용=MySQL 8.0부터 기본 인증 방식은 &amp;lt;code&amp;gt;caching_sha2_password&amp;lt;/code&amp;gt;이다. 오래된 클라이언트 드라이버는 접속 오류가 날 수 있으므로 드라이버를 최신으로 맞춘다.}}&lt;br /&gt;
&lt;br /&gt;
== 9. 백업·복구·복제 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 방식 !! 도구 !! 특징 !! Oracle 대응&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 || &amp;lt;code&amp;gt;mysqldump&amp;lt;/code&amp;gt; || SQL 문으로 덤프, 소규모 DB에 적합 || Data Pump&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 (병렬) || MySQL Shell &amp;lt;code&amp;gt;util.dumpInstance()&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;loadDump()&amp;lt;/code&amp;gt; || 병렬·압축, 대용량에 유리 || Data Pump 병렬&lt;br /&gt;
|-&lt;br /&gt;
| 물리 백업 || Percona XtraBackup, MySQL Enterprise Backup || 운영 중 온라인 물리 백업 || RMAN&lt;br /&gt;
|-&lt;br /&gt;
| 시점 복구 || 백업 + &#039;&#039;&#039;binlog 재적용&#039;&#039;&#039; (&amp;lt;code&amp;gt;mysqlbinlog&amp;lt;/code&amp;gt;) || 원하는 시각·위치까지 복구 || RMAN + Archive Log&lt;br /&gt;
|-&lt;br /&gt;
| 복제 || 소스-레플리카 (binlog, GTID 권장) || 읽기 분산, 대기 서버 || Data Guard&lt;br /&gt;
|-&lt;br /&gt;
| 고가용성 || Group Replication / InnoDB Cluster || 자동 장애 조치 || RAC / Data Guard Broker&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# 일관된 논리 백업 (InnoDB, 운영 중 락 최소화)&lt;br /&gt;
mysqldump -uroot -p --single-transaction --routines --triggers --events \&lt;br /&gt;
          --source-data=2 shop &amp;gt; shop.sql&lt;br /&gt;
mysql -uroot -p shop_new &amp;lt; shop.sql&lt;br /&gt;
&lt;br /&gt;
# 시점 복구: 백업 이후 binlog를 특정 시각까지 재적용&lt;br /&gt;
mysqlbinlog --stop-datetime=&amp;quot;2026-11-04 10:29:59&amp;quot; binlog.000123 | mysql -uroot -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. 모니터링 기본 쿼리 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 실행 중인 세션 (Oracle V$SESSION)&lt;br /&gt;
SELECT id, user, host, db, command, time, state, LEFT(info, 60) AS query&lt;br /&gt;
  FROM information_schema.processlist&lt;br /&gt;
 WHERE command &amp;lt;&amp;gt; &#039;Sleep&#039;&lt;br /&gt;
 ORDER BY time DESC;&lt;br /&gt;
&lt;br /&gt;
-- 부하 상위 SQL (Oracle V$SQL) — sys 스키마 뷰&lt;br /&gt;
SELECT query, exec_count, total_latency, avg_latency, rows_examined_avg&lt;br /&gt;
  FROM sys.statement_analysis&lt;br /&gt;
 ORDER BY total_latency DESC&lt;br /&gt;
 LIMIT 10;&lt;br /&gt;
&lt;br /&gt;
-- 테이블 크기&lt;br /&gt;
SELECT table_schema, table_name,&lt;br /&gt;
       ROUND((data_length + index_length) / 1024 / 1024) AS size_mb&lt;br /&gt;
  FROM information_schema.tables&lt;br /&gt;
 ORDER BY data_length + index_length DESC&lt;br /&gt;
 LIMIT 10;&lt;br /&gt;
&lt;br /&gt;
-- 버퍼 풀 적중 관련 지표&lt;br /&gt;
SHOW GLOBAL STATUS LIKE &#039;Innodb_buffer_pool_read%&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. 학습 커리큘럼 (10주) ==&lt;br /&gt;
{{안내바|강조=설치 → SQL → InnoDB 구조 → 성능 → 운영|내용=한 주에 이론 3시간 + 실습 3시간|우측=Oracle 경험자는 5주차(클러스터드 인덱스)에 특히 집중하세요.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot; | 주차 !! style=&amp;quot;width:12%;&amp;quot; | 단계 !! style=&amp;quot;width:22%;&amp;quot; | 주제 !! 세부 내용 !! style=&amp;quot;width:22%;&amp;quot; | 실습&lt;br /&gt;
|-&lt;br /&gt;
| 1 || rowspan=&amp;quot;2&amp;quot; | 기초 || MySQL 소개와 설치 || 역사·에디션·MariaDB, Docker/패키지 설치, mysql 클라이언트, Workbench || 실습 서버 구축, 기본 명령&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 논리 구조와 기본 SQL || 데이터베이스=스키마, 시스템 DB, DDL/DML, autocommit || 샘플 DB 생성&lt;br /&gt;
|-&lt;br /&gt;
| 3 || rowspan=&amp;quot;2&amp;quot; | SQL || 데이터 타입과 문자셋 || 숫자·문자·날짜, AUTO_INCREMENT, JSON, utf8mb4와 콜레이션 || 쇼핑몰 테이블 설계&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 고급 SQL || CTE·WITH RECURSIVE, 윈도우 함수, UPSERT, Oracle 문법 차이 || Oracle SQL 10개 변환&lt;br /&gt;
|-&lt;br /&gt;
| 5 || rowspan=&amp;quot;2&amp;quot; | InnoDB || 저장 구조 || 클러스터드 인덱스, 보조 인덱스, 페이지·페이지 분할, PK 설계 || PK 종류별 INSERT 성능 비교&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 메모리와 로그 || 버퍼 풀, Redo·Undo·Binlog, MVCC, 주요 변수 || my.cnf 분석&lt;br /&gt;
|-&lt;br /&gt;
| 7 || rowspan=&amp;quot;2&amp;quot; | 성능 || 인덱스와 EXPLAIN || type·key·Extra 해석, 커버링 인덱스, EXPLAIN ANALYZE, 슬로 쿼리 로그 || 느린 SQL 3개 튜닝&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 트랜잭션과 락 || 격리 수준, 갭 락·넥스트 키 락, 데드락 분석, data_locks || 락 대기 재현·분석&lt;br /&gt;
|-&lt;br /&gt;
| 9 || rowspan=&amp;quot;2&amp;quot; | 운영 || 보안과 모니터링 || 사용자@호스트, 역할, performance_schema, sys 스키마 || 읽기 전용 계정 설계&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 백업·복구·복제 || mysqldump, MySQL Shell 덤프, XtraBackup, binlog PITR, GTID 복제 || 레플리카 구성 실습&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 12. 입문자 체크리스트 ==&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = SELF CHECK&lt;br /&gt;
|제목 = 이 정도면 입문 완료&lt;br /&gt;
|내용 = □ mysql 클라이언트로 접속해 DB·테이블 구조와 DDL을 확인할 수 있다&amp;lt;br/&amp;gt;□ utf8mb4로 데이터베이스와 테이블을 만들 수 있다&amp;lt;br/&amp;gt;□ InnoDB 클러스터드 인덱스와 보조 인덱스의 관계를 설명할 수 있다&amp;lt;br/&amp;gt;□ EXPLAIN의 type, key, Extra를 보고 인덱스 사용 여부를 판단할 수 있다&amp;lt;br/&amp;gt;□ REPEATABLE READ와 갭 락이 UPDATE에 주는 영향을 설명할 수 있다&amp;lt;br/&amp;gt;□ mysqldump로 백업하고 복원할 수 있다&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 13. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용어 !! 설명 !! Oracle 대응&lt;br /&gt;
|-&lt;br /&gt;
| 스토리지 엔진 || 실제 데이터 저장·트랜잭션을 담당하는 계층 (InnoDB) || (단일 엔진)&lt;br /&gt;
|-&lt;br /&gt;
| 클러스터드 인덱스 || PK 순서로 데이터를 저장하는 InnoDB 테이블 구조 || IOT&lt;br /&gt;
|-&lt;br /&gt;
| 보조 인덱스 || PK 값을 가리키는 일반 인덱스 || 인덱스 (ROWID 대신 PK)&lt;br /&gt;
|-&lt;br /&gt;
| 버퍼 풀 || 데이터·인덱스 페이지 캐시 || Buffer Cache&lt;br /&gt;
|-&lt;br /&gt;
| Redo Log || InnoDB 장애 복구용 로그 || Redo Log&lt;br /&gt;
|-&lt;br /&gt;
| Binlog || 복제·시점 복구용 논리 변경 로그 || Archive Log (용도상)&lt;br /&gt;
|-&lt;br /&gt;
| GTID || 전역 트랜잭션 ID, 복제 위치 관리 || SCN (용도상)&lt;br /&gt;
|-&lt;br /&gt;
| 갭 락 || 인덱스 레코드 사이 공간에 거는 락 || (없음)&lt;br /&gt;
|-&lt;br /&gt;
| 레플리카 || 복제 대상 서버 || Standby DB&lt;br /&gt;
|-&lt;br /&gt;
| performance_schema || 서버 성능 계측 정보 || V$ 동적 성능 뷰&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 14. 참고 자료 ==&lt;br /&gt;
* MySQL 8.4 Reference Manual — https://dev.mysql.com/doc/refman/8.4/en/&lt;br /&gt;
* MySQL 공식 다운로드 — https://dev.mysql.com/downloads/&lt;br /&gt;
* MySQL Shell 문서 — https://dev.mysql.com/doc/mysql-shell/8.4/en/&lt;br /&gt;
&lt;br /&gt;
{{관련글|이전글=[[PostgreSQL 입문]]|다음글=[[SQL 튜닝 입문]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:MySQL]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2045</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2045"/>
		<updated>2026-11-04T06:45:13Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 입문 코스 설명 문구 수정 (10~12주)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 10~12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;MySQL &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2044</id>
		<title>대문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;diff=2044"/>
		<updated>2026-11-04T06:44:58Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문에 PostgreSQL 입문 코스 카드 추가, PostgreSQL 칩 활성화&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-home&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-header&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-header-inner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-brand&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-brand-mark&amp;quot;&amp;gt;DB&amp;lt;/span&amp;gt;&amp;lt;div&amp;gt;&amp;lt;strong&amp;gt;[[대문|DB스터디.]]&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;함께 쌓는 데이터베이스 지식&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-nav&amp;quot; aria-label=&amp;quot;대문 메뉴&amp;quot;&amp;gt;[[#ds-learn|학습 가이드]][[#ds-courses|입문 코스]][[#ds-topics|주제별 문서]][[#ds-recent|최근 변경]]&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-edit&amp;quot;&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 위키 편집 ↗]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-wrap&amp;quot; id=&amp;quot;ds-top&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-hero&amp;quot; aria-labelledby=&amp;quot;ds-title&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;처음부터, 그리고 다시 기본으로&amp;lt;/span&amp;gt;&amp;lt;h1 id=&amp;quot;ds-title&amp;quot;&amp;gt;깊이 있는 이해는,&amp;lt;br /&amp;gt;&amp;lt;em&amp;gt;탄탄한 기본에서.&amp;lt;/em&amp;gt;&amp;lt;/h1&amp;gt;&amp;lt;p class=&amp;quot;ds-intro&amp;quot;&amp;gt;처음 DB를 배우는 분도, 기본을 다시 짚고 싶은 전문가도.&amp;lt;br /&amp;gt;개념을 이해하고, 직접 확인하며, 함께 지식을 쌓는 위키입니다.&amp;lt;/p&amp;gt;&amp;lt;div class=&amp;quot;ds-actions&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-btn ds-btn-primary&amp;quot; data-path=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-learn|처음 배우기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-btn&amp;quot; data-path=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-learn|기본기 다시 보기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;→&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-question&amp;quot; aria-labelledby=&amp;quot;ds-q&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-question-head&amp;quot;&amp;gt;&amp;lt;span&amp;gt;오늘의 기본 질문&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;01 / 선택도&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-q&amp;quot;&amp;gt;왜 인덱스가 있어도&amp;lt;br /&amp;gt;전체 테이블을 읽을까요?&amp;lt;/h2&amp;gt;&amp;lt;div class=&amp;quot;ds-diagram&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;적은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;인덱스 접근을 생각해보기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;div class=&amp;quot;ds-blocks&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-active&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;strong&amp;gt;많은 행을 찾을 때&amp;lt;/strong&amp;gt;&amp;lt;small&amp;gt;전체 스캔과 비용 비교하기&amp;lt;/small&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-question-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|카디널리티와 선택도에서 답 찾기 &amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-search-zone&amp;quot; aria-label=&amp;quot;문서 검색&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;ds-search-mount&amp;quot; class=&amp;quot;ds-search-row&amp;quot;&amp;gt;&amp;lt;span&amp;gt;[[특수:검색|궁금한 개념이나 SQL을 검색해 보세요 →]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-search-help&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-quick&amp;quot;&amp;gt;&amp;lt;span&amp;gt;바로 찾아보기&amp;lt;/span&amp;gt;[[인덱스 아키텍처|인덱스]][[테이블 조인 방식|조인]][[DBMS XPLAN 사용법|실행계획]]&amp;lt;/div&amp;gt;&amp;lt;span&amp;gt;{{NUMBEROFPAGES}}개 문서 · {{NUMBEROFUSERS}}명의 사용자와 함께&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-learn&amp;quot; aria-labelledby=&amp;quot;ds-learn-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-learn-title&amp;quot;&amp;gt;어디서 시작하면 좋을까요?&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;지금의 나에게 맞는 출발점을 선택하세요.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-tabs&amp;quot; role=&amp;quot;tablist&amp;quot; aria-label=&amp;quot;학습 경로&amp;quot;&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-beginner&amp;quot; aria-controls=&amp;quot;ds-panel-beginner&amp;quot; data-tab=&amp;quot;beginner&amp;quot;&amp;gt;[[#ds-panel-beginner|처음 배우는 분]]&amp;lt;/span&amp;gt;&amp;lt;span role=&amp;quot;tab&amp;quot; id=&amp;quot;ds-tab-expert&amp;quot; aria-controls=&amp;quot;ds-panel-expert&amp;quot; data-tab=&amp;quot;expert&amp;quot;&amp;gt;[[#ds-panel-expert|기본을 다시 보는 분]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-beginner&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-beginner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;테이블 → SQL → 조인 → 인덱스&amp;lt;/strong&amp;gt; · Oracle 문서로 시작하는 학습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;왼쪽부터 차근차근 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[힙테이블(heap table)|테이블부터 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 담는 테이블의 개념과 저장 방식을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[힙테이블(heap table)|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[효율적인 SQL 작성법|SQL 작성법 살펴보기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 다루는 SQL과 좋은 작성 습관을 배워봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[효율적인 SQL 작성법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인으로 연결하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;여러 테이블을 함께 읽는 조인의 원리를 알아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[오라클 인덱스 종류|인덱스 첫걸음]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;데이터를 찾는 인덱스의 종류와 특징을 살펴봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[오라클 인덱스 종류|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;ds-panel-expert&amp;quot; role=&amp;quot;tabpanel&amp;quot; aria-labelledby=&amp;quot;ds-tab-expert&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-guide&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;익숙한 기술에, 다시 ‘왜’를 묻기&amp;lt;/strong&amp;gt; · 경험을 원리와 연결하는 복습 순서&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;아는 개념도 새롭게 읽어보세요.&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;01&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[인덱스 아키텍처|인덱스의 원리부터]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;사용법보다 먼저, 인덱스의 구조와 접근 방식을 돌아봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[인덱스 아키텍처|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;02&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[카디널리티 와 셀렉티비티|선택도 다시 생각하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;카디널리티와 선택도가 비용 판단에 주는 의미를 짚습니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[카디널리티 와 셀렉티비티|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;03&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[DBMS XPLAN 사용법|실행계획으로 확인하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;예상했던 동작을 실행계획과 비교하며 이해를 점검합니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[DBMS XPLAN 사용법|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;04&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[테이블 조인 방식|조인의 선택 이해하기]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;NL, HASH, MERGE 조인의 원리를 다시 비교해 봅니다.&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[테이블 조인 방식|문서 읽기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-courses&amp;quot; aria-labelledby=&amp;quot;ds-courses-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-courses-title&amp;quot;&amp;gt;체계적으로 배우는 입문 코스&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;개념부터 실습까지, 12주 커리큘럼으로 한 단계씩 익힙니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 01 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[데이터 모델링 입문|데이터 모델링 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;엔터티·속성·관계·식별자부터 정규화, Oracle 물리 설계까지 — 업무를 데이터로 설계하는 방법을 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[정규화 심화]] · [[ERD 작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터 모델링 기출 정리]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[데이터 모델링 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 02 · 12주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[SQL 튜닝 입문|SQL 튜닝 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;SQL 처리 원리와 옵티마이저, 실행계획 읽기, 인덱스·조인 튜닝, AWR 진단까지 Oracle 기준으로 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[실행계획 읽기 실습]] · [[인덱스 튜닝 심화]] · [[조인 튜닝 심화]] · [[AWR 리포트 분석]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[SQL 튜닝 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-step&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-step-num&amp;quot;&amp;gt;COURSE 03 · 10주&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;[[PostgreSQL 입문|PostgreSQL 입문]]&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;설치와 psql부터 MVCC·VACUUM, 인덱스와 EXPLAIN, 권한·백업까지 — Oracle 사용자를 위한 비교와 함께 배웁니다.&amp;lt;/p&amp;gt;&amp;lt;p style=&amp;quot;font-size:13px;line-height:1.8;margin-top:6px;&amp;quot;&amp;gt;[[PostgreSQL 입문#2. 설치와 접속|설치와 psql]] · [[PostgreSQL 입문#4.4 Oracle 사용자를 위한 문법 대응표|Oracle 문법 대응표]] · [[PostgreSQL 입문#5.2 MVCC와 VACUUM — 가장 중요한 개념|MVCC와 VACUUM]] · [[PostgreSQL 입문#6.2 EXPLAIN 읽기|EXPLAIN 읽기]]&amp;lt;/p&amp;gt;&amp;lt;span class=&amp;quot;ds-step-link&amp;quot;&amp;gt;[[PostgreSQL 입문|코스 시작하기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-section&amp;quot; id=&amp;quot;ds-topics&amp;quot; aria-labelledby=&amp;quot;ds-topics-title&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-section-head&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2 id=&amp;quot;ds-topics-title&amp;quot;&amp;gt;관심 있는 주제부터 탐색하세요&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;하나의 개념에서 다음 개념으로, 지식을 연결합니다.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span class=&amp;quot;ds-text-link&amp;quot;&amp;gt;[[:분류:Oracle|Oracle 문서 모아보기 ↗]]&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic-grid&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;01 · 구조&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;데이터베이스의 안쪽&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;저장 구조부터 원리까지&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|힙 테이블&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[데이터 블럭의 구조|데이터 블록&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[오라클 컬럼의 구조|컬럼의 물리 구조&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;02 · SQL&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;SQL과 조인&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;쿼리가 동작하는 방식 이해하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[효율적인 SQL 작성법|효율적인 SQL 작성법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[테이블 조인 방식|조인 방식과 알고리즘&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[NL 조인|NL 조인&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;03 · 성능&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;인덱스와 실행계획&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;빠른 SQL의 이유를 찾아보기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[인덱스 아키텍처|인덱스 아키텍처&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[옵티마이져|옵티마이저&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBMS XPLAN 사용법|DBMS_XPLAN 사용법&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-topic&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;04 · 실무&amp;lt;/span&amp;gt;&amp;lt;h3&amp;gt;진단과 운영&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;기본 개념을 현장의 문제로 연결하기&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[SQL 트레이스 방법|SQL 트레이스&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 튜닝|병렬 쿼리 튜닝&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[DBA 수행 방법론 (공공/대기업 SI 프로젝트)|DBA 수행 방법론&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-platforms&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;기술별 둘러보기&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[:분류:Oracle|Oracle &amp;lt;small&amp;gt;문서 탐색 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip ds-chip-live&amp;quot;&amp;gt;[[PostgreSQL 입문|PostgreSQL &amp;lt;small&amp;gt;입문 가이드 ↗&amp;lt;/small&amp;gt;]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;MySQL &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;ds-chip&amp;quot;&amp;gt;Linux &amp;lt;small&amp;gt;준비 중&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;ds-bottom&amp;quot; id=&amp;quot;ds-recent&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&amp;lt;h2&amp;gt;최근 살펴볼 문서&amp;lt;/h2&amp;gt;&amp;lt;p class=&amp;quot;ds-section-sub&amp;quot;&amp;gt;2026년 10월 변경 기록에서 골라본 학습 문서입니다.&amp;lt;/p&amp;gt;&amp;lt;ul class=&amp;quot;ds-recent-list&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[JPPD(Join Predicate PushDown,조인절 PUSHDOWN)|&amp;lt;span&amp;gt;10.21&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;JPPD · 조인 조건절 푸시다운&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;수정&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[병렬 쿼리 I/O 확인|&amp;lt;span&amp;gt;10.06&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;병렬 쿼리 I/O 확인&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;[[힙테이블(heap table)|&amp;lt;span&amp;gt;10.01&amp;lt;/span&amp;gt;&amp;lt;strong&amp;gt;힙 테이블의 구조와 활용&amp;lt;/strong&amp;gt;&amp;lt;span class=&amp;quot;ds-tag&amp;quot;&amp;gt;새 문서&amp;lt;/span&amp;gt;&amp;lt;span aria-hidden=&amp;quot;true&amp;quot;&amp;gt;↗&amp;lt;/span&amp;gt;]]&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-note&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;ds-overline&amp;quot;&amp;gt;함께 만드는 위키&amp;lt;/span&amp;gt;&amp;lt;h2&amp;gt;배운 것을 나누면,&amp;lt;br /&amp;gt;기본은 더 단단해집니다.&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;틀린 설명을 고치고, 이해를 도운 예제를 더해주세요.&amp;lt;br /&amp;gt;초보자의 질문도 전문가의 경험도 좋은 시작입니다.&amp;lt;/p&amp;gt;[https://dbstudy.co.kr/w/index.php?title=%EB%8C%80%EB%AC%B8&amp;amp;action=edit 이 대문 편집에 참여하기 ↗]&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;ds-footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;ds-wrap ds-footer-inner&amp;quot;&amp;gt;&amp;lt;span&amp;gt;&amp;lt;strong&amp;gt;DB스터디.&amp;lt;/strong&amp;gt;전문가가 되고 싶다면, 기본에 충실하라.&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;처음 배우는 곳, 다시 돌아오는 곳 · Return to basics&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=PostgreSQL_%EC%9E%85%EB%AC%B8&amp;diff=2043</id>
		<title>PostgreSQL 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=PostgreSQL_%EC%9E%85%EB%AC%B8&amp;diff=2043"/>
		<updated>2026-11-04T06:43:53Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: PostgreSQL 초보 입문자용 문서 생성&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = POSTGRESQL · FOUNDATION COURSE&lt;br /&gt;
|제목 = PostgreSQL 입문&lt;br /&gt;
|설명 = 세계에서 가장 진보한 오픈소스 관계형 데이터베이스 — 설치와 psql부터 MVCC·VACUUM, 인덱스, 백업까지&amp;lt;br/&amp;gt;처음 시작하는 사람과 Oracle 사용자를 위한 단계별 가이드&lt;br /&gt;
|색상1 = #12324f&lt;br /&gt;
|색상2 = #1f5a8a&lt;br /&gt;
|색상3 = #336791&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 10주&lt;br /&gt;
|배지3 = 기준 · PostgreSQL 16 이상&lt;br /&gt;
|배지4 = 비교 · Oracle 19c&lt;br /&gt;
}}&lt;br /&gt;
{{단계양식&lt;br /&gt;
|제목1 = 개념 · 설치&lt;br /&gt;
|설명1 = PostgreSQL의 특징, 설치와 psql 접속&lt;br /&gt;
|제목2 = SQL · 데이터 타입&lt;br /&gt;
|설명2 = DDL·DML, IDENTITY, JSONB, 스키마&lt;br /&gt;
|제목3 = 내부 구조&lt;br /&gt;
|설명3 = 프로세스·메모리, MVCC와 VACUUM, WAL&lt;br /&gt;
|제목4 = 성능 · 운영&lt;br /&gt;
|설명4 = 인덱스, EXPLAIN, 권한, 백업·복구&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. PostgreSQL이란 ==&lt;br /&gt;
&#039;&#039;&#039;PostgreSQL&#039;&#039;&#039;(포스트그레스큐엘, 줄여서 Postgres)은 1986년 UC 버클리의 POSTGRES 프로젝트에서 시작된 &#039;&#039;&#039;오픈소스 객체-관계형 데이터베이스(ORDBMS)&#039;&#039;&#039;이다. 표준 SQL 준수도가 높고, 확장성(Extension)과 안정성이 뛰어나 스타트업부터 대기업·공공기관까지 널리 쓰인다.&lt;br /&gt;
&lt;br /&gt;
{{요점|제목=한 줄 정의|내용=라이선스 비용 없이 쓸 수 있는, &#039;&#039;&#039;표준 SQL&#039;&#039;&#039;과 &#039;&#039;&#039;확장성&#039;&#039;&#039;에 강한 엔터프라이즈급 오픈소스 RDBMS}}&lt;br /&gt;
&lt;br /&gt;
=== 1.1 주요 특징 ===&lt;br /&gt;
{{카드묶음|최소너비=230px|&lt;br /&gt;
{{학습카드|번호=OPEN SOURCE|제목=자유로운 라이선스|설명=PostgreSQL License(BSD 계열). 상용 제품에 포함·수정·배포가 자유롭다.}}&lt;br /&gt;
{{학습카드|번호=STANDARD|제목=높은 SQL 표준 준수|설명=CTE, 윈도우 함수, MERGE, 트랜잭션 DDL 등 표준 기능을 폭넓게 지원한다.}}&lt;br /&gt;
{{학습카드|번호=EXTENSIBLE|제목=확장 기능|설명=PostGIS(공간), pg_stat_statements(SQL 통계), pgvector(벡터) 등 Extension으로 기능을 추가한다.}}&lt;br /&gt;
{{학습카드|번호=MVCC|제목=다중 버전 동시성 제어|설명=읽기와 쓰기가 서로를 막지 않는다. 대신 VACUUM으로 오래된 버전을 정리해야 한다.}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 Oracle과 한눈에 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Oracle !! PostgreSQL&lt;br /&gt;
|-&lt;br /&gt;
| 라이선스 || 상용 (Edition·옵션별 비용) || 오픈소스 (무료)&lt;br /&gt;
|-&lt;br /&gt;
| 프로세스 구조 || 백그라운드 프로세스 + 서버 프로세스 (전용/공유 서버) || &#039;&#039;&#039;접속 1개 = 백엔드 프로세스 1개&#039;&#039;&#039; (커넥션 풀 권장)&lt;br /&gt;
|-&lt;br /&gt;
| 언두(Undo) 관리 || Undo 테이블스페이스에 이전 이미지 저장 || &#039;&#039;&#039;테이블 안에 이전 버전 행(튜플)을 함께 저장&#039;&#039;&#039; → VACUUM 필요&lt;br /&gt;
|-&lt;br /&gt;
| 리두 로그 || Redo Log / Archive Log || &#039;&#039;&#039;WAL&#039;&#039;&#039;(Write-Ahead Log) / WAL 아카이브&lt;br /&gt;
|-&lt;br /&gt;
| 논리 구조 || DB 1개(CDB/PDB) 안에 스키마 = 사용자 || 클러스터 → &#039;&#039;&#039;여러 데이터베이스&#039;&#039;&#039; → 스키마 (사용자와 스키마는 별개)&lt;br /&gt;
|-&lt;br /&gt;
| 트랜잭션 DDL || DDL 실행 시 자동 커밋 || &#039;&#039;&#039;DDL도 롤백 가능&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 빈 문자열 || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = NULL || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; ≠ NULL (서로 다른 값)&lt;br /&gt;
|-&lt;br /&gt;
| 절차형 언어 || PL/SQL || PL/pgSQL (+ PL/Python 등)&lt;br /&gt;
|-&lt;br /&gt;
| 실행계획 확인 || DBMS_XPLAN, AUTOTRACE || &#039;&#039;&#039;EXPLAIN (ANALYZE, BUFFERS)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 고가용성 || RAC, Data Guard || 스트리밍 복제(Streaming Replication), 논리 복제, Patroni 등 외부 도구&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 설치와 접속 ==&lt;br /&gt;
=== 2.1 가장 빠른 방법 — Docker ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name pg-lab \&lt;br /&gt;
  -e POSTGRES_PASSWORD=lab1234 \&lt;br /&gt;
  -p 5432:5432 \&lt;br /&gt;
  -v pgdata:/var/lib/postgresql/data \&lt;br /&gt;
  postgres:17&lt;br /&gt;
&lt;br /&gt;
docker exec -it pg-lab psql -U postgres&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2 Linux 패키지 설치 (Rocky/RHEL 계열 예) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# PostgreSQL 공식 저장소(PGDG) 등록 후&lt;br /&gt;
sudo dnf install -y postgresql17-server&lt;br /&gt;
sudo /usr/pgsql-17/bin/postgresql-17-setup initdb&lt;br /&gt;
sudo systemctl enable --now postgresql-17&lt;br /&gt;
sudo -iu postgres psql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=Windows / macOS|내용=EDB 설치 프로그램(Windows), Postgres.app 또는 Homebrew(macOS)를 사용하면 GUI로 간단히 설치할 수 있다. GUI 관리 도구로는 pgAdmin, DBeaver가 많이 쓰인다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.3 psql 필수 메타 명령 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 명령 !! 의미 !! Oracle에서 비슷한 것&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\l&amp;lt;/code&amp;gt; || 데이터베이스 목록 || &amp;lt;code&amp;gt;V$PDBS&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;show pdbs&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\c dbname&amp;lt;/code&amp;gt; || 다른 데이터베이스로 접속 전환 || &amp;lt;code&amp;gt;ALTER SESSION SET CONTAINER&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\dn&amp;lt;/code&amp;gt; || 스키마 목록 || &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\dt&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;\dt+&amp;lt;/code&amp;gt; || 테이블 목록 (+크기) || &amp;lt;code&amp;gt;USER_TABLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\d 테이블명&amp;lt;/code&amp;gt; || 테이블 구조 (컬럼·인덱스·제약) || &amp;lt;code&amp;gt;DESC&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\di&amp;lt;/code&amp;gt; || 인덱스 목록 || &amp;lt;code&amp;gt;USER_INDEXES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\du&amp;lt;/code&amp;gt; || 롤(사용자) 목록 || &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_ROLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\x&amp;lt;/code&amp;gt; || 세로 출력 전환 || —&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\timing&amp;lt;/code&amp;gt; || 실행 시간 표시 || &amp;lt;code&amp;gt;SET TIMING ON&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\i file.sql&amp;lt;/code&amp;gt; || 스크립트 실행 || &amp;lt;code&amp;gt;@file.sql&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\q&amp;lt;/code&amp;gt; || 종료 || &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 논리 구조 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 클러스터 (하나의 인스턴스, 하나의 데이터 디렉터리 PGDATA)&lt;br /&gt;
  ├─ 데이터베이스 postgres     ← 기본 접속용&lt;br /&gt;
  ├─ 데이터베이스 template1    ← CREATE DATABASE 시 복제 원본&lt;br /&gt;
  └─ 데이터베이스 appdb&lt;br /&gt;
       ├─ 스키마 public&lt;br /&gt;
       │    ├─ 테이블, 인덱스, 뷰, 시퀀스, 함수 …&lt;br /&gt;
       └─ 스키마 sales&lt;br /&gt;
  (공통) 롤(사용자) · 테이블스페이스 ← 클러스터 전체에서 공유&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=PostgreSQL에서 &#039;&#039;&#039;데이터베이스 간 직접 조인은 불가능&#039;&#039;&#039;하다 (dblink/postgres_fdw 확장 필요). 업무를 나눌 때는 보통 &#039;&#039;&#039;하나의 데이터베이스 안에 여러 스키마&#039;&#039;&#039;를 쓴다.}}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 search_path ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SHOW search_path;                 -- 기본: &amp;quot;$user&amp;quot;, public&lt;br /&gt;
SET search_path TO sales, public; -- 스키마 이름 없이 조회할 때 찾는 순서&lt;br /&gt;
ALTER ROLE app_user SET search_path TO sales, public;  -- 사용자 기본값 지정&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 기본 SQL과 데이터 타입 ==&lt;br /&gt;
=== 4.1 주요 데이터 타입 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용도 !! PostgreSQL !! Oracle 대응 !! 메모&lt;br /&gt;
|-&lt;br /&gt;
| 정수 || &amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bigint&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;smallint&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER(10)&amp;lt;/code&amp;gt; || 정수는 정수형을 쓰면 더 빠르고 작다&lt;br /&gt;
|-&lt;br /&gt;
| 정밀 숫자 || &amp;lt;code&amp;gt;numeric(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || 금액&lt;br /&gt;
|-&lt;br /&gt;
| 문자 || &amp;lt;code&amp;gt;varchar(n)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(n)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt;도 성능 차이 없음&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &#039;&#039;&#039;PostgreSQL date는 시간 없음&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일시 || &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;timestamptz&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt; || 시간대가 있으면 &amp;lt;code&amp;gt;timestamptz&amp;lt;/code&amp;gt; 권장&lt;br /&gt;
|-&lt;br /&gt;
| 참/거짓 || &amp;lt;code&amp;gt;boolean&amp;lt;/code&amp;gt; || (없음, CHAR(1) 등) ||&lt;br /&gt;
|-&lt;br /&gt;
| 반정형 || &amp;lt;code&amp;gt;jsonb&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; || 인덱스(GIN) 가능&lt;br /&gt;
|-&lt;br /&gt;
| 배열 || &amp;lt;code&amp;gt;integer[]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;text[]&amp;lt;/code&amp;gt; || (VARRAY) ||&lt;br /&gt;
|-&lt;br /&gt;
| 고유 ID || &amp;lt;code&amp;gt;uuid&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;RAW(16)&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 테이블 만들기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE customer (&lt;br /&gt;
    cust_id     bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br /&gt;
    cust_nm     varchar(100) NOT NULL,&lt;br /&gt;
    email       varchar(200) UNIQUE,&lt;br /&gt;
    grade_cd    varchar(10)  NOT NULL DEFAULT &#039;NORMAL&#039;,&lt;br /&gt;
    attrs       jsonb,&lt;br /&gt;
    created_at  timestamptz  NOT NULL DEFAULT now()&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br /&gt;
    cust_id     bigint NOT NULL REFERENCES customer (cust_id),&lt;br /&gt;
    order_dt    date   NOT NULL DEFAULT current_date,&lt;br /&gt;
    amount      numeric(12,2) NOT NULL CHECK (amount &amp;gt;= 0)&lt;br /&gt;
);&lt;br /&gt;
CREATE INDEX ix_orders_cust ON orders (cust_id, order_dt);   -- FK 컬럼 인덱스는 자동 생성되지 않는다&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE customer IS &#039;고객&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 자주 쓰는 SQL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- INSERT ... RETURNING : 생성된 키를 바로 받기&lt;br /&gt;
INSERT INTO customer (cust_nm, email) VALUES (&#039;홍길동&#039;, &#039;hong@example.com&#039;)&lt;br /&gt;
RETURNING cust_id;&lt;br /&gt;
&lt;br /&gt;
-- UPSERT&lt;br /&gt;
INSERT INTO customer (cust_nm, email) VALUES (&#039;홍길동&#039;, &#039;hong@example.com&#039;)&lt;br /&gt;
ON CONFLICT (email) DO UPDATE SET cust_nm = EXCLUDED.cust_nm;&lt;br /&gt;
&lt;br /&gt;
-- 페이징&lt;br /&gt;
SELECT * FROM orders ORDER BY order_dt DESC LIMIT 20 OFFSET 40;&lt;br /&gt;
&lt;br /&gt;
-- JSONB 조회&lt;br /&gt;
SELECT cust_nm FROM customer WHERE attrs -&amp;gt;&amp;gt; &#039;channel&#039; = &#039;mobile&#039;;&lt;br /&gt;
&lt;br /&gt;
-- 트랜잭션 DDL: 롤백하면 테이블 생성도 취소된다&lt;br /&gt;
BEGIN;&lt;br /&gt;
CREATE TABLE tmp_test (id int);&lt;br /&gt;
ROLLBACK;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Oracle 사용자를 위한 문법 대응표 ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Oracle !! PostgreSQL !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SELECT 1 FROM DUAL&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;SELECT 1&amp;lt;/code&amp;gt; || DUAL 불필요&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;NVL(a, b)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;COALESCE(a, b)&amp;lt;/code&amp;gt; || 표준 함수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SYSDATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;now()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;current_date&amp;lt;/code&amp;gt; || now()는 트랜잭션 시작 시각&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ROWNUM &amp;lt;= 10&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT 10&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;FETCH FIRST 10 ROWS ONLY&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;seq.NEXTVAL&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;nextval(&#039;seq&#039;)&amp;lt;/code&amp;gt; || 또는 IDENTITY 컬럼&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DECODE(a, 1, &#039;x&#039;, &#039;y&#039;)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;CASE a WHEN 1 THEN &#039;x&#039; ELSE &#039;y&#039; END&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;TO_DATE(&#039;20261104&#039;,&#039;YYYYMMDD&#039;)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;to_date(&#039;20261104&#039;,&#039;YYYYMMDD&#039;)&amp;lt;/code&amp;gt; || 결과는 date (시간 없음)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;a &amp;amp;#124;&amp;amp;#124; b&amp;lt;/code&amp;gt; (NULL 무시) || &amp;lt;code&amp;gt;a &amp;amp;#124;&amp;amp;#124; b&amp;lt;/code&amp;gt; (NULL이면 결과 NULL) || &amp;lt;code&amp;gt;concat(a, b)&amp;lt;/code&amp;gt;는 NULL 무시&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MERGE INTO&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;MERGE INTO&amp;lt;/code&amp;gt; (15+) / &amp;lt;code&amp;gt;ON CONFLICT&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;WITH RECURSIVE&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MINUS&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;EXCEPT&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| 동의어(SYNONYM) || 없음 (search_path, 뷰로 대체) ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 5. 내부 구조 ==&lt;br /&gt;
=== 5.1 프로세스와 메모리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 클라이언트 ──접속──▶ postmaster(주 프로세스) ──fork──▶ backend 프로세스 (접속마다 1개)&lt;br /&gt;
                                                         │ work_mem (정렬·해시)&lt;br /&gt;
 ┌──────────────── 공유 메모리 ────────────────┐         ▼&lt;br /&gt;
 │ shared_buffers (데이터 페이지 캐시, 8KB)    │◀──── 읽기/쓰기&lt;br /&gt;
 │ WAL buffers                                  │&lt;br /&gt;
 └──────────────────────────────────────────────┘&lt;br /&gt;
 백그라운드: checkpointer · background writer · WAL writer · autovacuum launcher/worker&lt;br /&gt;
             · stats · archiver(아카이브 사용 시) · walsender(복제 시)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 파라미터 !! 역할 !! 출발점 (전용 서버 기준)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;shared_buffers&amp;lt;/code&amp;gt; || 공유 버퍼 캐시 || 메모리의 약 25%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;effective_cache_size&amp;lt;/code&amp;gt; || OS 캐시 포함 가용 캐시 추정치 (옵티마이저 참고값) || 메모리의 50~75%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;work_mem&amp;lt;/code&amp;gt; || 정렬·해시 작업당 메모리 (세션·노드별로 여러 개 사용 가능) || 4MB~64MB에서 시작해 조정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;maintenance_work_mem&amp;lt;/code&amp;gt; || VACUUM, CREATE INDEX용 || 256MB~1GB&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;max_connections&amp;lt;/code&amp;gt; || 최대 접속 수 || 너무 크게 잡지 말고 &#039;&#039;&#039;PgBouncer&#039;&#039;&#039; 같은 커넥션 풀 사용&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 MVCC와 VACUUM — 가장 중요한 개념 ===&lt;br /&gt;
{{핵심|제목=PostgreSQL MVCC의 핵심|내용=UPDATE는 기존 행을 고치지 않고 &#039;&#039;&#039;새 버전 행을 추가&#039;&#039;&#039;하고, 이전 행은 &amp;quot;죽은 튜플(dead tuple)&amp;quot;로 남긴다. DELETE도 표시만 한다. 이 죽은 튜플을 치우는 작업이 &#039;&#039;&#039;VACUUM&#039;&#039;&#039;이다.}}&lt;br /&gt;
&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = INSERT |설명1 = 새 튜플 생성&lt;br /&gt;
|제목2 = UPDATE |설명2 = 새 버전 추가 + 옛 버전 dead&lt;br /&gt;
|제목3 = DELETE |설명3 = dead 표시&lt;br /&gt;
|제목4 = VACUUM |설명4 = dead 공간 재사용 가능 처리&lt;br /&gt;
|제목5 = FREEZE |설명5 = 트랜잭션 ID 순환 방지&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 작업 !! 하는 일 !! 잠금&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VACUUM&amp;lt;/code&amp;gt; || 죽은 튜플 공간을 재사용 가능하게 표시, 가시성 맵 갱신 || 일반 DML과 동시 수행 가능&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VACUUM (ANALYZE)&amp;lt;/code&amp;gt; || + 옵티마이저 통계 갱신 || 동시 수행 가능&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VACUUM FULL&amp;lt;/code&amp;gt; || 테이블을 새로 써서 &#039;&#039;&#039;OS에 공간 반환&#039;&#039;&#039; || &#039;&#039;&#039;배타 잠금&#039;&#039;&#039; — 운영 중 사용 주의&lt;br /&gt;
|-&lt;br /&gt;
| autovacuum || 변경량 기준으로 자동 실행 || &#039;&#039;&#039;끄지 말 것&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 죽은 튜플이 많은 테이블 확인&lt;br /&gt;
SELECT relname, n_live_tup, n_dead_tup, last_autovacuum, last_autoanalyze&lt;br /&gt;
  FROM pg_stat_user_tables&lt;br /&gt;
 ORDER BY n_dead_tup DESC&lt;br /&gt;
 LIMIT 10;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=오래 열려 있는 트랜잭션(예: 커밋하지 않은 세션, idle in transaction)이 있으면 VACUUM이 죽은 튜플을 치우지 못해 &#039;&#039;&#039;테이블이 계속 커진다(bloat)&#039;&#039;&#039;. 애플리케이션에서 트랜잭션을 짧게 유지하는 것이 중요하다.}}&lt;br /&gt;
&lt;br /&gt;
=== 5.3 WAL과 체크포인트 ===&lt;br /&gt;
* 모든 변경은 데이터 파일보다 먼저 &#039;&#039;&#039;WAL&#039;&#039;&#039;에 기록된다 (Oracle의 Redo와 같은 역할).&lt;br /&gt;
* &#039;&#039;&#039;체크포인트&#039;&#039;&#039;가 공유 버퍼의 변경 페이지를 디스크에 반영한다 (&amp;lt;code&amp;gt;checkpoint_timeout&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_wal_size&amp;lt;/code&amp;gt;).&lt;br /&gt;
* WAL을 보관(&amp;lt;code&amp;gt;archive_mode&amp;lt;/code&amp;gt;)하면 &#039;&#039;&#039;시점 복구(PITR)&#039;&#039;&#039;와 복제의 기반이 된다.&lt;br /&gt;
&lt;br /&gt;
== 6. 인덱스와 실행계획 ==&lt;br /&gt;
=== 6.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;B-tree&#039;&#039;&#039; (기본) || =, 범위, 정렬 || &amp;lt;code&amp;gt;CREATE INDEX ix ON orders (order_dt);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GIN&#039;&#039;&#039; || JSONB, 배열, 전문 검색 || &amp;lt;code&amp;gt;CREATE INDEX ix ON customer USING gin (attrs);&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GiST&#039;&#039;&#039; || 공간(PostGIS), 범위 타입, 근접 검색 || &amp;lt;code&amp;gt;USING gist (geom)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BRIN&#039;&#039;&#039; || 물리적 순서와 값이 비례하는 초대용량 로그·시계열 || &amp;lt;code&amp;gt;USING brin (created_at)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Hash || = 조건만 || 드물게 사용&lt;br /&gt;
|-&lt;br /&gt;
| 부분 인덱스 || 일부 행만 인덱싱 || &amp;lt;code&amp;gt;... WHERE status = &#039;ERROR&#039;;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 표현식 인덱스 || 함수 결과 || &amp;lt;code&amp;gt;... (lower(email));&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 커버링 || 테이블 방문 없이 결과 || &amp;lt;code&amp;gt;... (cust_id) INCLUDE (amount);&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{{설명|제목=운영 중 인덱스 생성|내용=&amp;lt;code&amp;gt;CREATE INDEX CONCURRENTLY&amp;lt;/code&amp;gt;를 쓰면 테이블 쓰기를 막지 않고 인덱스를 만든다 (트랜잭션 블록 안에서는 사용 불가).}}&lt;br /&gt;
&lt;br /&gt;
=== 6.2 EXPLAIN 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
EXPLAIN (ANALYZE, BUFFERS)&lt;br /&gt;
SELECT c.cust_nm, sum(o.amount)&lt;br /&gt;
  FROM customer c JOIN orders o ON o.cust_id = c.cust_id&lt;br /&gt;
 WHERE o.order_dt &amp;gt;= current_date - 30&lt;br /&gt;
 GROUP BY c.cust_nm;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
HashAggregate  (cost=1250.3..1262.8 rows=1000 width=40) (actual time=12.4..12.9 rows=980 loops=1)&lt;br /&gt;
  Buffers: shared hit=845&lt;br /&gt;
  -&amp;gt;  Hash Join  (cost=32.5..1200.1 rows=10040 width=18) (actual time=0.6..9.8 rows=9876 loops=1)&lt;br /&gt;
        Hash Cond: (o.cust_id = c.cust_id)&lt;br /&gt;
        -&amp;gt;  Index Scan using ix_orders_dt on orders o  (... rows=10040) (actual ... rows=9876 loops=1)&lt;br /&gt;
              Index Cond: (order_dt &amp;gt;= (CURRENT_DATE - 30))&lt;br /&gt;
        -&amp;gt;  Hash  (... rows=1000) (actual ... rows=1000 loops=1)&lt;br /&gt;
              -&amp;gt;  Seq Scan on customer c  (... rows=1000) (actual ... rows=1000 loops=1)&lt;br /&gt;
Planning Time: 0.3 ms&lt;br /&gt;
Execution Time: 13.2 ms&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 항목 !! 의미 !! Oracle 대응&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cost=시작..전체&amp;lt;/code&amp;gt; || 옵티마이저 예상 비용 || Cost&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;rows&amp;lt;/code&amp;gt; (앞) / &amp;lt;code&amp;gt;actual rows&amp;lt;/code&amp;gt; || 예상 행 수 / 실제 행 수 || E-Rows / A-Rows&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;loops&amp;lt;/code&amp;gt; || 해당 노드 반복 횟수 (actual rows는 1회 평균) || Starts&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Buffers: shared hit / read&amp;lt;/code&amp;gt; || 캐시 적중 / 디스크 읽기 블록 수 || Buffers / Reads&lt;br /&gt;
|-&lt;br /&gt;
| Seq Scan / Index Scan / Index Only Scan / Bitmap Heap Scan || 테이블 접근 방식 || Full Scan / Index Range Scan 등&lt;br /&gt;
|-&lt;br /&gt;
| Nested Loop / Hash Join / Merge Join || 조인 방식 || NL / Hash / Sort Merge&lt;br /&gt;
|}&lt;br /&gt;
{{요점|내용=읽는 법은 Oracle과 같다. &#039;&#039;&#039;안쪽(들여쓰기 깊은 곳)부터&#039;&#039;&#039; 읽고, &#039;&#039;&#039;예상 rows와 actual rows가 크게 다른 노드&#039;&#039;&#039;를 찾는다. 통계가 오래됐다면 &amp;lt;code&amp;gt;ANALYZE 테이블명;&amp;lt;/code&amp;gt;으로 갱신한다. → [[실행계획 읽기 실습]]}}&lt;br /&gt;
&lt;br /&gt;
== 7. 사용자·권한·접속 제어 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 롤 = 사용자 + 그룹 (LOGIN 속성이 있으면 사용자)&lt;br /&gt;
CREATE ROLE app_user LOGIN PASSWORD &#039;change_me&#039;;&lt;br /&gt;
CREATE ROLE app_read;                       -- 권한 묶음용 그룹 롤&lt;br /&gt;
&lt;br /&gt;
CREATE SCHEMA sales AUTHORIZATION app_user;&lt;br /&gt;
GRANT USAGE  ON SCHEMA sales TO app_read;&lt;br /&gt;
GRANT SELECT ON ALL TABLES IN SCHEMA sales TO app_read;&lt;br /&gt;
ALTER DEFAULT PRIVILEGES IN SCHEMA sales GRANT SELECT ON TABLES TO app_read;  -- 앞으로 만들 테이블까지&lt;br /&gt;
GRANT app_read TO report_user;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pg_hba.conf&#039;&#039;&#039; — 어떤 호스트·사용자·DB에 어떤 인증 방식을 허용할지 정하는 파일 (Oracle의 sqlnet.ora 접속 제어와 비슷)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# TYPE  DATABASE  USER      ADDRESS          METHOD&lt;br /&gt;
local   all       postgres                   peer&lt;br /&gt;
host    appdb     app_user  10.0.0.0/24      scram-sha-256&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=설정 반영|내용=pg_hba.conf, 대부분의 postgresql.conf 변경은 &amp;lt;code&amp;gt;SELECT pg_reload_conf();&amp;lt;/code&amp;gt;로 반영된다. &amp;lt;code&amp;gt;shared_buffers&amp;lt;/code&amp;gt;처럼 재시작이 필요한 파라미터는 &amp;lt;code&amp;gt;pg_settings.context = &#039;postmaster&#039;&amp;lt;/code&amp;gt;로 확인한다.}}&lt;br /&gt;
&lt;br /&gt;
== 8. 백업과 복구 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 방식 !! 도구 !! 특징 !! Oracle 대응&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 || &amp;lt;code&amp;gt;pg_dump&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;pg_dumpall&amp;lt;/code&amp;gt; || DB·스키마·테이블 단위, 버전 간 이관 가능 || Data Pump (expdp/impdp)&lt;br /&gt;
|-&lt;br /&gt;
| 논리 복원 || &amp;lt;code&amp;gt;pg_restore&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;psql&amp;lt;/code&amp;gt; || 병렬 복원(&amp;lt;code&amp;gt;-j&amp;lt;/code&amp;gt;) 가능 ||&lt;br /&gt;
|-&lt;br /&gt;
| 물리 백업 || &amp;lt;code&amp;gt;pg_basebackup&amp;lt;/code&amp;gt; || 클러스터 전체 온라인 복사 || RMAN 백업&lt;br /&gt;
|-&lt;br /&gt;
| 시점 복구 || 베이스 백업 + WAL 아카이브 || 원하는 시각으로 복구 (PITR) || RMAN + Archive Log&lt;br /&gt;
|-&lt;br /&gt;
| 운영 도구 || pgBackRest, Barman || 증분·압축·보관 정책 관리 || RMAN Catalog&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pg_dump -U postgres -d appdb -Fc -f appdb.dump        # 사용자 정의 형식(압축)&lt;br /&gt;
pg_restore -U postgres -d appdb_new -j 4 appdb.dump   # 4개 병렬 복원&lt;br /&gt;
pg_basebackup -U replicator -D /backup/base -Ft -z -P # 물리 베이스 백업&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. 모니터링 기본 쿼리 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 현재 세션과 대기 상태 (Oracle V$SESSION)&lt;br /&gt;
SELECT pid, usename, state, wait_event_type, wait_event,&lt;br /&gt;
       now() - xact_start AS xact_age, left(query, 60) AS query&lt;br /&gt;
  FROM pg_stat_activity&lt;br /&gt;
 WHERE state &amp;lt;&amp;gt; &#039;idle&#039;&lt;br /&gt;
 ORDER BY xact_age DESC NULLS LAST;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기 원인 세션 찾기&lt;br /&gt;
SELECT pid, pg_blocking_pids(pid) AS blocked_by, left(query, 60)&lt;br /&gt;
  FROM pg_stat_activity&lt;br /&gt;
 WHERE cardinality(pg_blocking_pids(pid)) &amp;gt; 0;&lt;br /&gt;
&lt;br /&gt;
-- 부하 상위 SQL (pg_stat_statements 확장 필요, Oracle V$SQL)&lt;br /&gt;
SELECT calls, round(total_exec_time) AS total_ms, round(mean_exec_time, 2) AS mean_ms,&lt;br /&gt;
       shared_blks_hit + shared_blks_read AS blks, left(query, 60)&lt;br /&gt;
  FROM pg_stat_statements&lt;br /&gt;
 ORDER BY total_exec_time DESC&lt;br /&gt;
 LIMIT 10;&lt;br /&gt;
&lt;br /&gt;
-- 테이블·인덱스 크기&lt;br /&gt;
SELECT relname, pg_size_pretty(pg_total_relation_size(relid)) AS total&lt;br /&gt;
  FROM pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 10;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (10주) ==&lt;br /&gt;
{{안내바|강조=설치 → SQL → 내부 구조 → 성능 → 운영|내용=한 주에 이론 3시간 + 실습 3시간|우측=Oracle 경험자는 1~2주차를 빠르게 넘어가도 좋습니다.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot; | 주차 !! style=&amp;quot;width:12%;&amp;quot; | 단계 !! style=&amp;quot;width:22%;&amp;quot; | 주제 !! 세부 내용 !! style=&amp;quot;width:22%;&amp;quot; | 실습&lt;br /&gt;
|-&lt;br /&gt;
| 1 || rowspan=&amp;quot;2&amp;quot; | 기초 || PostgreSQL 소개와 설치 || 역사·특징·라이선스, Docker/패키지 설치, psql, pgAdmin/DBeaver || 실습 서버 구축, psql 메타 명령&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 논리 구조와 기본 SQL || 클러스터·DB·스키마, search_path, DDL/DML, 트랜잭션 DDL || 샘플 스키마 생성&lt;br /&gt;
|-&lt;br /&gt;
| 3 || rowspan=&amp;quot;2&amp;quot; | SQL || 데이터 타입과 제약조건 || 숫자·문자·날짜, IDENTITY·시퀀스, JSONB, 배열, 제약조건 || 쇼핑몰 테이블 설계&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 고급 SQL || CTE·WITH RECURSIVE, 윈도우 함수, UPSERT, RETURNING, Oracle 문법 차이 || Oracle SQL 10개 변환&lt;br /&gt;
|-&lt;br /&gt;
| 5 || rowspan=&amp;quot;2&amp;quot; | 내부 구조 || 아키텍처 || 프로세스·공유 메모리, WAL, 체크포인트, 주요 파라미터 || postgresql.conf 분석&lt;br /&gt;
|-&lt;br /&gt;
| 6 || MVCC와 VACUUM || 튜플 버전, dead tuple, autovacuum, bloat, 트랜잭션 ID 순환 || UPDATE 반복 후 bloat 관찰&lt;br /&gt;
|-&lt;br /&gt;
| 7 || rowspan=&amp;quot;2&amp;quot; | 성능 || 인덱스 || B-tree·GIN·BRIN·부분·표현식·커버링, CONCURRENTLY || JSONB GIN 인덱스 효과 비교&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 실행계획과 통계 || EXPLAIN (ANALYZE, BUFFERS), 조인 방식, ANALYZE, pg_stat_statements || 느린 SQL 3개 튜닝&lt;br /&gt;
|-&lt;br /&gt;
| 9 || rowspan=&amp;quot;2&amp;quot; | 운영 || 보안과 모니터링 || 롤·권한, pg_hba.conf, pg_stat_activity, 락 분석 || 읽기 전용 계정 설계&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 백업·복구·복제 || pg_dump/pg_restore, pg_basebackup, PITR, 스트리밍 복제 개요 || 특정 시점 복구 실습&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 11. 입문자 체크리스트 ==&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = SELF CHECK&lt;br /&gt;
|제목 = 이 정도면 입문 완료&lt;br /&gt;
|내용 = □ psql로 접속해 DB·스키마·테이블 구조를 확인할 수 있다&amp;lt;br/&amp;gt;□ 클러스터 · 데이터베이스 · 스키마 · 롤의 관계를 설명할 수 있다&amp;lt;br/&amp;gt;□ IDENTITY, JSONB, timestamptz를 사용한 테이블을 만들 수 있다&amp;lt;br/&amp;gt;□ MVCC에서 UPDATE가 dead tuple을 남기는 이유와 VACUUM의 역할을 설명할 수 있다&amp;lt;br/&amp;gt;□ EXPLAIN (ANALYZE, BUFFERS)로 예상 행 수와 실제 행 수를 비교할 수 있다&amp;lt;br/&amp;gt;□ pg_dump로 백업하고 pg_restore로 복원할 수 있다&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용어 !! 설명 !! Oracle 대응&lt;br /&gt;
|-&lt;br /&gt;
| 클러스터 (Cluster) || 하나의 PostgreSQL 인스턴스가 관리하는 데이터베이스 모음 || 인스턴스 + DB&lt;br /&gt;
|-&lt;br /&gt;
| 튜플 (Tuple) || 테이블의 행 한 버전 || 행&lt;br /&gt;
|-&lt;br /&gt;
| 페이지 (Page) || 저장 단위 (기본 8KB) || 블록&lt;br /&gt;
|-&lt;br /&gt;
| WAL || 변경 선기록 로그 || Redo Log&lt;br /&gt;
|-&lt;br /&gt;
| VACUUM || 죽은 튜플 정리 || (Undo 자동 관리)&lt;br /&gt;
|-&lt;br /&gt;
| Bloat || 죽은 튜플로 인한 테이블·인덱스 비대화 || 단편화&lt;br /&gt;
|-&lt;br /&gt;
| 롤 (Role) || 사용자와 그룹을 통합한 권한 주체 || User / Role&lt;br /&gt;
|-&lt;br /&gt;
| 확장 (Extension) || 기능 추가 모듈 (CREATE EXTENSION) || 옵션 / 패키지&lt;br /&gt;
|-&lt;br /&gt;
| TOAST || 큰 값(약 2KB 초과)을 별도 저장하는 구조 || LOB 세그먼트&lt;br /&gt;
|-&lt;br /&gt;
| pg_hba.conf || 클라이언트 인증 설정 파일 || sqlnet.ora 접속 제어&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* PostgreSQL 공식 문서 — https://www.postgresql.org/docs/&lt;br /&gt;
* PostgreSQL 공식 튜토리얼 (Documentation Part I. Tutorial)&lt;br /&gt;
* 한국 PostgreSQL 사용자 모임 — https://postgresql.kr/&lt;br /&gt;
&lt;br /&gt;
{{관련글|이전글=[[데이터 모델링 입문]]|다음글=[[SQL 튜닝 입문]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:PostgreSQL]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2042</id>
		<title>Oracle DB 물리 설계</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2042"/>
		<updated>2026-11-04T05:30:54Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 8. 물리 설계 리뷰 체크리스트 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;DATA MODELING · STEP 4 PHYSICAL DESIGN&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;Oracle 물리 설계&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;논리 모델을 운영 가능한 Oracle 스키마로 — 데이터타입, 제약조건, 인덱스, 파티셔닝, 용량 산정&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;기준 · Oracle 19c&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 10주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;난이도 · 중급&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. 물리 설계의 범위 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 영역 !! 결정 사항&lt;br /&gt;
|-&lt;br /&gt;
| 객체 || 테이블, 컬럼, 데이터타입, 제약조건, 시퀀스, 뷰&lt;br /&gt;
|-&lt;br /&gt;
| 접근 경로 || 인덱스 종류·컬럼 순서, IOT, 클러스터&lt;br /&gt;
|-&lt;br /&gt;
| 저장 구조 || 테이블스페이스, 파티셔닝, 압축, PCTFREE&lt;br /&gt;
|-&lt;br /&gt;
| 운영 || 용량 산정, 보존·삭제 정책, 통계 수집, 백업 단위&lt;br /&gt;
|-&lt;br /&gt;
| 표준 || 명명 규칙, 표준 단어·도메인 사전, COMMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터타입 선택 ==&lt;br /&gt;
=== 2.1 주요 데이터타입 가이드 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 용도 !! 권장 !! 비권장 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n CHAR)&amp;lt;/code&amp;gt; 또는 &amp;lt;code&amp;gt;VARCHAR2(n BYTE)&amp;lt;/code&amp;gt; 표준 통일 || &amp;lt;code&amp;gt;CHAR(n)&amp;lt;/code&amp;gt; || CHAR는 공백 패딩으로 비교 오류·공간 낭비&lt;br /&gt;
|-&lt;br /&gt;
| 정수·금액 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt; (정밀도 없음), &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; || 도메인 검증, 금액 반올림 오류 방지&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(8)&amp;lt;/code&amp;gt; &#039;YYYYMMDD&#039; || 범위 조건·파티션 프루닝·날짜 연산 정확성&lt;br /&gt;
|-&lt;br /&gt;
| 일시 (초 이하) || &amp;lt;code&amp;gt;TIMESTAMP(6)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; + 별도 밀리초 컬럼 || 정밀도 내장&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 텍스트 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt; || LONG은 사용 중단(deprecated)&lt;br /&gt;
|-&lt;br /&gt;
| 바이너리 || &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG RAW&amp;lt;/code&amp;gt; || 동일&lt;br /&gt;
|-&lt;br /&gt;
| 여부 플래그 || &amp;lt;code&amp;gt;VARCHAR2(1)&amp;lt;/code&amp;gt; + CHECK (&#039;Y&#039;,&#039;N&#039;) || 제약 없는 문자 || 도메인 무결성&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #c0392b;background:#fdf1ef;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;묵시적 형변환 주의&#039;&#039;&#039; — 조인·조건 컬럼의 타입이 다르면 Oracle은 한쪽에 &amp;lt;code&amp;gt;TO_NUMBER&amp;lt;/code&amp;gt; 등을 적용하여 &#039;&#039;&#039;인덱스를 사용하지 못한다&#039;&#039;&#039;. 표준 도메인 사전으로 &amp;quot;같은 의미 = 같은 타입·길이&amp;quot;를 강제한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 나쁜 예: CUST_NO가 VARCHAR2인데 숫자로 비교 → 인덱스 미사용 (FILTER: TO_NUMBER(&amp;quot;CUST_NO&amp;quot;)=1001)&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = 1001;&lt;br /&gt;
&lt;br /&gt;
-- 좋은 예&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = &#039;1001&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 제약조건 설계 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 제약 !! 역할 !! 설계 포인트&lt;br /&gt;
|-&lt;br /&gt;
| NOT NULL || 필수 속성 || 옵티마이저가 NOT NULL을 알면 더 좋은 실행계획 (예: COUNT(*)에 인덱스 사용)&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 주식별자 || 인덱스를 별도 생성 후 &amp;lt;code&amp;gt;USING INDEX&amp;lt;/code&amp;gt;로 지정하면 테이블스페이스·로컬 여부 제어 가능&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 보조식별자 || 인조 PK 사용 시 본질식별자에 필수&lt;br /&gt;
|-&lt;br /&gt;
| FOREIGN KEY || 참조 무결성 || &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, &amp;lt;code&amp;gt;ON DELETE&amp;lt;/code&amp;gt; 정책 명시&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || 도메인 규칙 || 코드값·범위 검증, 단순 규칙만 (복잡한 규칙은 애플리케이션)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 FK 인덱스가 중요한 이유 ===&lt;br /&gt;
* 부모 행 DELETE 또는 PK UPDATE 시 자식 FK 컬럼에 인덱스가 없으면 Oracle은 &#039;&#039;&#039;자식 테이블 전체에 TM Lock(Share)&#039;&#039;&#039;을 건다 → 동시성 저하, 경합 발생&lt;br /&gt;
* 부모-자식 조인 시 NL 조인의 내부 테이블 접근 경로&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 인덱스 없는 FK 찾기 (단일 컬럼 FK 기준 간이 점검)&lt;br /&gt;
SELECT c.owner, c.table_name, c.constraint_name, cc.column_name&lt;br /&gt;
  FROM dba_constraints  c&lt;br /&gt;
  JOIN dba_cons_columns cc&lt;br /&gt;
    ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name&lt;br /&gt;
 WHERE c.constraint_type = &#039;R&#039;&lt;br /&gt;
   AND c.owner = :schema&lt;br /&gt;
   AND NOT EXISTS (&lt;br /&gt;
         SELECT 1&lt;br /&gt;
           FROM dba_ind_columns ic&lt;br /&gt;
          WHERE ic.table_owner     = c.owner&lt;br /&gt;
            AND ic.table_name      = c.table_name&lt;br /&gt;
            AND ic.column_name     = cc.column_name&lt;br /&gt;
            AND ic.column_position = cc.position )&lt;br /&gt;
 ORDER BY c.table_name;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 대량 적재 시 제약 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM DISABLE CONSTRAINT FK_ORDER_ITEM_PROD;&lt;br /&gt;
-- ... 대량 적재 ...&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE NOVALIDATE CONSTRAINT FK_ORDER_ITEM_PROD;  -- 신규 DML만 검증&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE VALIDATE   CONSTRAINT FK_ORDER_ITEM_PROD;  -- 기존 데이터까지 검증&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 인덱스 설계 ==&lt;br /&gt;
=== 4.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 주의&lt;br /&gt;
|-&lt;br /&gt;
| B*Tree || OLTP 일반 조회, 고유·고선택도 컬럼 || 기본&lt;br /&gt;
|-&lt;br /&gt;
| 결합 인덱스 || 여러 조건 동시 사용 || 컬럼 순서가 성능을 결정&lt;br /&gt;
|-&lt;br /&gt;
| Function-Based || &amp;lt;code&amp;gt;UPPER(EMAIL)&amp;lt;/code&amp;gt;, CASE 식 조건 || 쿼리 식과 정확히 일치해야 사용&lt;br /&gt;
|-&lt;br /&gt;
| Bitmap || DW, 저선택도 컬럼, 읽기 위주 || &#039;&#039;&#039;OLTP 금지&#039;&#039;&#039; — DML 시 심각한 락 경합&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Key || 시퀀스 PK 우측 블록 경합(RAC) 완화 || 범위 검색 불가&lt;br /&gt;
|-&lt;br /&gt;
| IOT (Index-Organized Table) || PK로만 접근하는 좁은 테이블, 코드성 || 2차 인덱스 비용 증가&lt;br /&gt;
|-&lt;br /&gt;
| Local / Global (파티션) || Local: 파티션 관리 용이 / Global: 파티션 키 외 조건 || Global은 파티션 DROP 시 &amp;lt;code&amp;gt;UPDATE INDEXES&amp;lt;/code&amp;gt; 필요&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 결합 인덱스 컬럼 순서 원칙 ===&lt;br /&gt;
# &#039;&#039;&#039;항상 사용되는&#039;&#039;&#039; 조건 컬럼을 앞에&lt;br /&gt;
# &#039;&#039;&#039;= 조건&#039;&#039;&#039; 컬럼을 앞에, &#039;&#039;&#039;범위(BETWEEN, LIKE, &amp;gt;)&#039;&#039;&#039; 조건 컬럼을 뒤에&lt;br /&gt;
# 정렬(ORDER BY)·그룹핑 컬럼을 고려해 SORT 연산 제거&lt;br /&gt;
# 선택도는 위 원칙 다음으로 고려 (선택도만으로 순서를 정하지 않는다)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 조회 패턴: WHERE CUST_NO = :b1 AND ORDER_DT BETWEEN :b2 AND :b3 ORDER BY ORDER_DT DESC&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;   -- = 조건 → 범위 조건 순&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 RAC 환경 고려 ===&lt;br /&gt;
* 시퀀스 기반 PK는 인덱스 우측 블록에 삽입이 집중 → &#039;&#039;&#039;gc buffer busy&#039;&#039;&#039;, &#039;&#039;&#039;enq: TX - index contention&#039;&#039;&#039; 발생 가능&lt;br /&gt;
* 대안: &amp;lt;code&amp;gt;CACHE&amp;lt;/code&amp;gt; 크게 + &amp;lt;code&amp;gt;NOORDER&amp;lt;/code&amp;gt; 시퀀스, &#039;&#039;&#039;Scalable Sequence&#039;&#039;&#039;(18c+ &amp;lt;code&amp;gt;SCALE&amp;lt;/code&amp;gt;), Hash 파티션 인덱스, Reverse Key 인덱스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE SEQUENCE SQ_ORDER_NO CACHE 1000 NOORDER SCALE EXTEND;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 파티셔닝 ==&lt;br /&gt;
=== 5.1 파티션 방식 선택 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 방식 !! 기준 !! 대표 용도&lt;br /&gt;
|-&lt;br /&gt;
| Range / Interval || 값의 범위 (주로 날짜) || 주문·이력·로그 — 기간 조회, 보존 기간 경과분 DROP&lt;br /&gt;
|-&lt;br /&gt;
| List || 이산 값 || 지역, 법인, 상태 코드별 분리&lt;br /&gt;
|-&lt;br /&gt;
| Hash || 해시 분산 || 경합 분산, 파티션 와이즈 조인&lt;br /&gt;
|-&lt;br /&gt;
| Composite || Range-Hash, Range-List 등 || 기간 관리 + 분산 동시 필요&lt;br /&gt;
|-&lt;br /&gt;
| Reference || 부모 테이블 파티션 상속 || 주문(Range) → 주문상세 (파티션 키 컬럼 중복 없이)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 예제 — 주문 / 주문상세 Reference 파티션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ORDER_DT      DATE         NOT NULL,&lt;br /&gt;
    CUST_NO       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ITEM_SEQ      NUMBER(5)    NOT NULL,&lt;br /&gt;
    PROD_CD       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    ORDER_QTY     NUMBER(7)    NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO) REFERENCES TB_ORDER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY REFERENCE (FK_ORDER_ITEM_ORDER);&lt;br /&gt;
&lt;br /&gt;
-- 보존 기간 경과 파티션 정리 (자식 → 부모 순, 인덱스 유지)&lt;br /&gt;
ALTER TABLE TB_ORDER DROP PARTITION FOR (DATE &#039;2026-01-15&#039;) UPDATE GLOBAL INDEXES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;파티션 키 선정 기준&#039;&#039;&#039; — ① 대부분의 핵심 SQL 조건에 등장하는가 (프루닝) ② 데이터 삭제·보존 단위와 일치하는가 ③ 값이 변경되지 않는가 (변경 시 &amp;lt;code&amp;gt;ENABLE ROW MOVEMENT&amp;lt;/code&amp;gt; 필요, 행 이동 비용)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 용량 산정 ==&lt;br /&gt;
=== 6.1 산정 절차 ===&lt;br /&gt;
# 평균 행 길이(Average Row Length) 계산 — 컬럼별 평균 바이트 합 + 행 헤더(약 3~5바이트)&lt;br /&gt;
# 블록당 행 수 = (블록크기 − 블록 헤더) × (1 − PCTFREE/100) ÷ 평균 행 길이&lt;br /&gt;
# 필요 블록 수 = 예상 건수 ÷ 블록당 행 수&lt;br /&gt;
# 인덱스 용량 = (키 길이 + ROWID 약 6~10바이트) × 건수 × 1.2~1.5 (여유)&lt;br /&gt;
&lt;br /&gt;
=== 6.2 계산 예시 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 값&lt;br /&gt;
|-&lt;br /&gt;
| 평균 행 길이 || 120 Byte&lt;br /&gt;
|-&lt;br /&gt;
| 블록 크기 / PCTFREE || 8 KB / 10%&lt;br /&gt;
|-&lt;br /&gt;
| 블록당 행 수 || (8,192 − 약 100) × 0.9 ÷ 120 ≈ &#039;&#039;&#039;60행&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일 증가 / 보존 기간 || 50만 건 / 3년 (약 5.5억 건)&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 용량 || 5.5억 ÷ 60 × 8 KB ≈ &#039;&#039;&#039;약 70 GB&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 샘플 데이터 적재 후 실측 기반 보정&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;TB_ORDER&#039;);&lt;br /&gt;
SELECT table_name, num_rows, avg_row_len, blocks FROM user_tables WHERE table_name = &#039;TB_ORDER&#039;;&lt;br /&gt;
&lt;br /&gt;
-- DBMS_SPACE로 예상 용량 계산&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_used  NUMBER;  l_alloc NUMBER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SPACE.CREATE_TABLE_COST(&#039;USERS&#039;, 120, 550000000, 10, l_used, l_alloc);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&#039;used=&#039; || ROUND(l_used/1024/1024/1024,1) || &#039;GB, alloc=&#039; || ROUND(l_alloc/1024/1024/1024,1) || &#039;GB&#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 명명 규칙 (예시 표준) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 객체 !! 규칙 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 영문 약어 || TB_ORDER_ITEM&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 원본 + &amp;lt;code&amp;gt;_HIS&amp;lt;/code&amp;gt; || TB_CUSTOMER_HIS&lt;br /&gt;
|-&lt;br /&gt;
| PK / UK / FK || &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;테이블 / &amp;lt;code&amp;gt;UK_&amp;lt;/code&amp;gt;테이블_n / &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;자식_부모 || FK_ORDER_ITEM_ORDER&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || &amp;lt;code&amp;gt;CK_&amp;lt;/code&amp;gt;테이블_컬럼 || CK_ORDER_STAT&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt;테이블_nn / 유니크 &amp;lt;code&amp;gt;UX_&amp;lt;/code&amp;gt; || IX_ORDER_01&lt;br /&gt;
|-&lt;br /&gt;
| 시퀀스 || &amp;lt;code&amp;gt;SQ_&amp;lt;/code&amp;gt;컬럼 || SQ_ORDER_NO&lt;br /&gt;
|-&lt;br /&gt;
| 컬럼 접미어 || &amp;lt;code&amp;gt;_NO&amp;lt;/code&amp;gt; 번호, &amp;lt;code&amp;gt;_CD&amp;lt;/code&amp;gt; 코드, &amp;lt;code&amp;gt;_NM&amp;lt;/code&amp;gt; 명, &amp;lt;code&amp;gt;_DT&amp;lt;/code&amp;gt; 일자, &amp;lt;code&amp;gt;_YN&amp;lt;/code&amp;gt; 여부, &amp;lt;code&amp;gt;_AMT&amp;lt;/code&amp;gt; 금액, &amp;lt;code&amp;gt;_QTY&amp;lt;/code&amp;gt; 수량 || ORDER_STAT_CD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 설계 리뷰 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 배포 전 점검 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* □ 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt;가 등록되었는가&lt;br /&gt;
* □ 같은 의미의 컬럼이 모든 테이블에서 동일한 타입·길이인가&lt;br /&gt;
* □ 필수 컬럼에 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;이 지정되었는가&lt;br /&gt;
* □ 인조 PK 테이블의 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
* □ FK 컬럼에 인덱스가 있는가 (없다면 사유가 문서화되었는가)&lt;br /&gt;
* □ 인덱스가 핵심 SQL 기준으로 설계되었고 중복(선두 컬럼 포함 관계) 인덱스는 없는가&lt;br /&gt;
* □ 대용량 테이블의 파티션 키·보존 정책·삭제 방식이 정의되었는가&lt;br /&gt;
* □ RAC 환경에서 시퀀스 CACHE/NOORDER, 핫 블록 대책이 검토되었는가&lt;br /&gt;
* □ 테이블스페이스, 용량 산정, 통계 수집 정책이 정의되었는가&lt;br /&gt;
* □ DDL이 형상관리(Git 등)에 등록되었는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;이전&#039;&#039;&#039; ← [[ERD 작성 실습]] · [[데이터 모델링 정규화 심화|정규화 심화]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;처음으로&#039;&#039;&#039; → [[데이터 모델링 입문]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;시험 대비&#039;&#039;&#039; → [[SQLD 데이터 모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:물리 설계]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2041</id>
		<title>Oracle DB 물리 설계</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2041"/>
		<updated>2026-11-04T05:30:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 7. 명명 규칙 (예시 표준) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;DATA MODELING · STEP 4 PHYSICAL DESIGN&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;Oracle 물리 설계&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;논리 모델을 운영 가능한 Oracle 스키마로 — 데이터타입, 제약조건, 인덱스, 파티셔닝, 용량 산정&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;기준 · Oracle 19c&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 10주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;난이도 · 중급&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. 물리 설계의 범위 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 영역 !! 결정 사항&lt;br /&gt;
|-&lt;br /&gt;
| 객체 || 테이블, 컬럼, 데이터타입, 제약조건, 시퀀스, 뷰&lt;br /&gt;
|-&lt;br /&gt;
| 접근 경로 || 인덱스 종류·컬럼 순서, IOT, 클러스터&lt;br /&gt;
|-&lt;br /&gt;
| 저장 구조 || 테이블스페이스, 파티셔닝, 압축, PCTFREE&lt;br /&gt;
|-&lt;br /&gt;
| 운영 || 용량 산정, 보존·삭제 정책, 통계 수집, 백업 단위&lt;br /&gt;
|-&lt;br /&gt;
| 표준 || 명명 규칙, 표준 단어·도메인 사전, COMMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터타입 선택 ==&lt;br /&gt;
=== 2.1 주요 데이터타입 가이드 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 용도 !! 권장 !! 비권장 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n CHAR)&amp;lt;/code&amp;gt; 또는 &amp;lt;code&amp;gt;VARCHAR2(n BYTE)&amp;lt;/code&amp;gt; 표준 통일 || &amp;lt;code&amp;gt;CHAR(n)&amp;lt;/code&amp;gt; || CHAR는 공백 패딩으로 비교 오류·공간 낭비&lt;br /&gt;
|-&lt;br /&gt;
| 정수·금액 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt; (정밀도 없음), &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; || 도메인 검증, 금액 반올림 오류 방지&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(8)&amp;lt;/code&amp;gt; &#039;YYYYMMDD&#039; || 범위 조건·파티션 프루닝·날짜 연산 정확성&lt;br /&gt;
|-&lt;br /&gt;
| 일시 (초 이하) || &amp;lt;code&amp;gt;TIMESTAMP(6)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; + 별도 밀리초 컬럼 || 정밀도 내장&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 텍스트 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt; || LONG은 사용 중단(deprecated)&lt;br /&gt;
|-&lt;br /&gt;
| 바이너리 || &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG RAW&amp;lt;/code&amp;gt; || 동일&lt;br /&gt;
|-&lt;br /&gt;
| 여부 플래그 || &amp;lt;code&amp;gt;VARCHAR2(1)&amp;lt;/code&amp;gt; + CHECK (&#039;Y&#039;,&#039;N&#039;) || 제약 없는 문자 || 도메인 무결성&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #c0392b;background:#fdf1ef;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;묵시적 형변환 주의&#039;&#039;&#039; — 조인·조건 컬럼의 타입이 다르면 Oracle은 한쪽에 &amp;lt;code&amp;gt;TO_NUMBER&amp;lt;/code&amp;gt; 등을 적용하여 &#039;&#039;&#039;인덱스를 사용하지 못한다&#039;&#039;&#039;. 표준 도메인 사전으로 &amp;quot;같은 의미 = 같은 타입·길이&amp;quot;를 강제한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 나쁜 예: CUST_NO가 VARCHAR2인데 숫자로 비교 → 인덱스 미사용 (FILTER: TO_NUMBER(&amp;quot;CUST_NO&amp;quot;)=1001)&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = 1001;&lt;br /&gt;
&lt;br /&gt;
-- 좋은 예&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = &#039;1001&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 제약조건 설계 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 제약 !! 역할 !! 설계 포인트&lt;br /&gt;
|-&lt;br /&gt;
| NOT NULL || 필수 속성 || 옵티마이저가 NOT NULL을 알면 더 좋은 실행계획 (예: COUNT(*)에 인덱스 사용)&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 주식별자 || 인덱스를 별도 생성 후 &amp;lt;code&amp;gt;USING INDEX&amp;lt;/code&amp;gt;로 지정하면 테이블스페이스·로컬 여부 제어 가능&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 보조식별자 || 인조 PK 사용 시 본질식별자에 필수&lt;br /&gt;
|-&lt;br /&gt;
| FOREIGN KEY || 참조 무결성 || &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, &amp;lt;code&amp;gt;ON DELETE&amp;lt;/code&amp;gt; 정책 명시&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || 도메인 규칙 || 코드값·범위 검증, 단순 규칙만 (복잡한 규칙은 애플리케이션)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 FK 인덱스가 중요한 이유 ===&lt;br /&gt;
* 부모 행 DELETE 또는 PK UPDATE 시 자식 FK 컬럼에 인덱스가 없으면 Oracle은 &#039;&#039;&#039;자식 테이블 전체에 TM Lock(Share)&#039;&#039;&#039;을 건다 → 동시성 저하, 경합 발생&lt;br /&gt;
* 부모-자식 조인 시 NL 조인의 내부 테이블 접근 경로&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 인덱스 없는 FK 찾기 (단일 컬럼 FK 기준 간이 점검)&lt;br /&gt;
SELECT c.owner, c.table_name, c.constraint_name, cc.column_name&lt;br /&gt;
  FROM dba_constraints  c&lt;br /&gt;
  JOIN dba_cons_columns cc&lt;br /&gt;
    ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name&lt;br /&gt;
 WHERE c.constraint_type = &#039;R&#039;&lt;br /&gt;
   AND c.owner = :schema&lt;br /&gt;
   AND NOT EXISTS (&lt;br /&gt;
         SELECT 1&lt;br /&gt;
           FROM dba_ind_columns ic&lt;br /&gt;
          WHERE ic.table_owner     = c.owner&lt;br /&gt;
            AND ic.table_name      = c.table_name&lt;br /&gt;
            AND ic.column_name     = cc.column_name&lt;br /&gt;
            AND ic.column_position = cc.position )&lt;br /&gt;
 ORDER BY c.table_name;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 대량 적재 시 제약 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM DISABLE CONSTRAINT FK_ORDER_ITEM_PROD;&lt;br /&gt;
-- ... 대량 적재 ...&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE NOVALIDATE CONSTRAINT FK_ORDER_ITEM_PROD;  -- 신규 DML만 검증&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE VALIDATE   CONSTRAINT FK_ORDER_ITEM_PROD;  -- 기존 데이터까지 검증&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 인덱스 설계 ==&lt;br /&gt;
=== 4.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 주의&lt;br /&gt;
|-&lt;br /&gt;
| B*Tree || OLTP 일반 조회, 고유·고선택도 컬럼 || 기본&lt;br /&gt;
|-&lt;br /&gt;
| 결합 인덱스 || 여러 조건 동시 사용 || 컬럼 순서가 성능을 결정&lt;br /&gt;
|-&lt;br /&gt;
| Function-Based || &amp;lt;code&amp;gt;UPPER(EMAIL)&amp;lt;/code&amp;gt;, CASE 식 조건 || 쿼리 식과 정확히 일치해야 사용&lt;br /&gt;
|-&lt;br /&gt;
| Bitmap || DW, 저선택도 컬럼, 읽기 위주 || &#039;&#039;&#039;OLTP 금지&#039;&#039;&#039; — DML 시 심각한 락 경합&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Key || 시퀀스 PK 우측 블록 경합(RAC) 완화 || 범위 검색 불가&lt;br /&gt;
|-&lt;br /&gt;
| IOT (Index-Organized Table) || PK로만 접근하는 좁은 테이블, 코드성 || 2차 인덱스 비용 증가&lt;br /&gt;
|-&lt;br /&gt;
| Local / Global (파티션) || Local: 파티션 관리 용이 / Global: 파티션 키 외 조건 || Global은 파티션 DROP 시 &amp;lt;code&amp;gt;UPDATE INDEXES&amp;lt;/code&amp;gt; 필요&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 결합 인덱스 컬럼 순서 원칙 ===&lt;br /&gt;
# &#039;&#039;&#039;항상 사용되는&#039;&#039;&#039; 조건 컬럼을 앞에&lt;br /&gt;
# &#039;&#039;&#039;= 조건&#039;&#039;&#039; 컬럼을 앞에, &#039;&#039;&#039;범위(BETWEEN, LIKE, &amp;gt;)&#039;&#039;&#039; 조건 컬럼을 뒤에&lt;br /&gt;
# 정렬(ORDER BY)·그룹핑 컬럼을 고려해 SORT 연산 제거&lt;br /&gt;
# 선택도는 위 원칙 다음으로 고려 (선택도만으로 순서를 정하지 않는다)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 조회 패턴: WHERE CUST_NO = :b1 AND ORDER_DT BETWEEN :b2 AND :b3 ORDER BY ORDER_DT DESC&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;   -- = 조건 → 범위 조건 순&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 RAC 환경 고려 ===&lt;br /&gt;
* 시퀀스 기반 PK는 인덱스 우측 블록에 삽입이 집중 → &#039;&#039;&#039;gc buffer busy&#039;&#039;&#039;, &#039;&#039;&#039;enq: TX - index contention&#039;&#039;&#039; 발생 가능&lt;br /&gt;
* 대안: &amp;lt;code&amp;gt;CACHE&amp;lt;/code&amp;gt; 크게 + &amp;lt;code&amp;gt;NOORDER&amp;lt;/code&amp;gt; 시퀀스, &#039;&#039;&#039;Scalable Sequence&#039;&#039;&#039;(18c+ &amp;lt;code&amp;gt;SCALE&amp;lt;/code&amp;gt;), Hash 파티션 인덱스, Reverse Key 인덱스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE SEQUENCE SQ_ORDER_NO CACHE 1000 NOORDER SCALE EXTEND;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 파티셔닝 ==&lt;br /&gt;
=== 5.1 파티션 방식 선택 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 방식 !! 기준 !! 대표 용도&lt;br /&gt;
|-&lt;br /&gt;
| Range / Interval || 값의 범위 (주로 날짜) || 주문·이력·로그 — 기간 조회, 보존 기간 경과분 DROP&lt;br /&gt;
|-&lt;br /&gt;
| List || 이산 값 || 지역, 법인, 상태 코드별 분리&lt;br /&gt;
|-&lt;br /&gt;
| Hash || 해시 분산 || 경합 분산, 파티션 와이즈 조인&lt;br /&gt;
|-&lt;br /&gt;
| Composite || Range-Hash, Range-List 등 || 기간 관리 + 분산 동시 필요&lt;br /&gt;
|-&lt;br /&gt;
| Reference || 부모 테이블 파티션 상속 || 주문(Range) → 주문상세 (파티션 키 컬럼 중복 없이)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 예제 — 주문 / 주문상세 Reference 파티션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ORDER_DT      DATE         NOT NULL,&lt;br /&gt;
    CUST_NO       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ITEM_SEQ      NUMBER(5)    NOT NULL,&lt;br /&gt;
    PROD_CD       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    ORDER_QTY     NUMBER(7)    NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO) REFERENCES TB_ORDER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY REFERENCE (FK_ORDER_ITEM_ORDER);&lt;br /&gt;
&lt;br /&gt;
-- 보존 기간 경과 파티션 정리 (자식 → 부모 순, 인덱스 유지)&lt;br /&gt;
ALTER TABLE TB_ORDER DROP PARTITION FOR (DATE &#039;2026-01-15&#039;) UPDATE GLOBAL INDEXES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;파티션 키 선정 기준&#039;&#039;&#039; — ① 대부분의 핵심 SQL 조건에 등장하는가 (프루닝) ② 데이터 삭제·보존 단위와 일치하는가 ③ 값이 변경되지 않는가 (변경 시 &amp;lt;code&amp;gt;ENABLE ROW MOVEMENT&amp;lt;/code&amp;gt; 필요, 행 이동 비용)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 용량 산정 ==&lt;br /&gt;
=== 6.1 산정 절차 ===&lt;br /&gt;
# 평균 행 길이(Average Row Length) 계산 — 컬럼별 평균 바이트 합 + 행 헤더(약 3~5바이트)&lt;br /&gt;
# 블록당 행 수 = (블록크기 − 블록 헤더) × (1 − PCTFREE/100) ÷ 평균 행 길이&lt;br /&gt;
# 필요 블록 수 = 예상 건수 ÷ 블록당 행 수&lt;br /&gt;
# 인덱스 용량 = (키 길이 + ROWID 약 6~10바이트) × 건수 × 1.2~1.5 (여유)&lt;br /&gt;
&lt;br /&gt;
=== 6.2 계산 예시 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 값&lt;br /&gt;
|-&lt;br /&gt;
| 평균 행 길이 || 120 Byte&lt;br /&gt;
|-&lt;br /&gt;
| 블록 크기 / PCTFREE || 8 KB / 10%&lt;br /&gt;
|-&lt;br /&gt;
| 블록당 행 수 || (8,192 − 약 100) × 0.9 ÷ 120 ≈ &#039;&#039;&#039;60행&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일 증가 / 보존 기간 || 50만 건 / 3년 (약 5.5억 건)&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 용량 || 5.5억 ÷ 60 × 8 KB ≈ &#039;&#039;&#039;약 70 GB&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 샘플 데이터 적재 후 실측 기반 보정&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;TB_ORDER&#039;);&lt;br /&gt;
SELECT table_name, num_rows, avg_row_len, blocks FROM user_tables WHERE table_name = &#039;TB_ORDER&#039;;&lt;br /&gt;
&lt;br /&gt;
-- DBMS_SPACE로 예상 용량 계산&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_used  NUMBER;  l_alloc NUMBER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SPACE.CREATE_TABLE_COST(&#039;USERS&#039;, 120, 550000000, 10, l_used, l_alloc);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&#039;used=&#039; || ROUND(l_used/1024/1024/1024,1) || &#039;GB, alloc=&#039; || ROUND(l_alloc/1024/1024/1024,1) || &#039;GB&#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 명명 규칙 (예시 표준) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 객체 !! 규칙 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 영문 약어 || TB_ORDER_ITEM&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 원본 + &amp;lt;code&amp;gt;_HIS&amp;lt;/code&amp;gt; || TB_CUSTOMER_HIS&lt;br /&gt;
|-&lt;br /&gt;
| PK / UK / FK || &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;테이블 / &amp;lt;code&amp;gt;UK_&amp;lt;/code&amp;gt;테이블_n / &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;자식_부모 || FK_ORDER_ITEM_ORDER&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || &amp;lt;code&amp;gt;CK_&amp;lt;/code&amp;gt;테이블_컬럼 || CK_ORDER_STAT&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt;테이블_nn / 유니크 &amp;lt;code&amp;gt;UX_&amp;lt;/code&amp;gt; || IX_ORDER_01&lt;br /&gt;
|-&lt;br /&gt;
| 시퀀스 || &amp;lt;code&amp;gt;SQ_&amp;lt;/code&amp;gt;컬럼 || SQ_ORDER_NO&lt;br /&gt;
|-&lt;br /&gt;
| 컬럼 접미어 || &amp;lt;code&amp;gt;_NO&amp;lt;/code&amp;gt; 번호, &amp;lt;code&amp;gt;_CD&amp;lt;/code&amp;gt; 코드, &amp;lt;code&amp;gt;_NM&amp;lt;/code&amp;gt; 명, &amp;lt;code&amp;gt;_DT&amp;lt;/code&amp;gt; 일자, &amp;lt;code&amp;gt;_YN&amp;lt;/code&amp;gt; 여부, &amp;lt;code&amp;gt;_AMT&amp;lt;/code&amp;gt; 금액, &amp;lt;code&amp;gt;_QTY&amp;lt;/code&amp;gt; 수량 || ORDER_STAT_CD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 설계 리뷰 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 배포 전 점검 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* □ 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt;가 등록되었는가&lt;br /&gt;
* □ 같은 의미의 컬럼이 모든 테이블에서 동일한 타입·길이인가&lt;br /&gt;
* □ 필수 컬럼에 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;이 지정되었는가&lt;br /&gt;
* □ 인조 PK 테이블의 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
* □ FK 컬럼에 인덱스가 있는가 (없다면 사유가 문서화되었는가)&lt;br /&gt;
* □ 인덱스가 핵심 SQL 기준으로 설계되었고 중복(선두 컬럼 포함 관계) 인덱스는 없는가&lt;br /&gt;
* □ 대용량 테이블의 파티션 키·보존 정책·삭제 방식이 정의되었는가&lt;br /&gt;
* □ RAC 환경에서 시퀀스 CACHE/NOORDER, 핫 블록 대책이 검토되었는가&lt;br /&gt;
* □ 테이블스페이스, 용량 산정, 통계 수집 정책이 정의되었는가&lt;br /&gt;
* □ DDL이 형상관리(Git 등)에 등록되었는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;이전&#039;&#039;&#039; ← [[ERD 작성 실습]] · [[정규화 심화]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;처음으로&#039;&#039;&#039; → [[데이터 모델링 입문]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;시험 대비&#039;&#039;&#039; → [[SQLD 데이터 모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:물리 설계]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2040</id>
		<title>Oracle DB 물리 설계</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2040"/>
		<updated>2026-11-04T05:30:16Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 5.1 파티션 방식 선택 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;DATA MODELING · STEP 4 PHYSICAL DESIGN&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;Oracle 물리 설계&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;논리 모델을 운영 가능한 Oracle 스키마로 — 데이터타입, 제약조건, 인덱스, 파티셔닝, 용량 산정&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;기준 · Oracle 19c&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 10주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;난이도 · 중급&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. 물리 설계의 범위 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 영역 !! 결정 사항&lt;br /&gt;
|-&lt;br /&gt;
| 객체 || 테이블, 컬럼, 데이터타입, 제약조건, 시퀀스, 뷰&lt;br /&gt;
|-&lt;br /&gt;
| 접근 경로 || 인덱스 종류·컬럼 순서, IOT, 클러스터&lt;br /&gt;
|-&lt;br /&gt;
| 저장 구조 || 테이블스페이스, 파티셔닝, 압축, PCTFREE&lt;br /&gt;
|-&lt;br /&gt;
| 운영 || 용량 산정, 보존·삭제 정책, 통계 수집, 백업 단위&lt;br /&gt;
|-&lt;br /&gt;
| 표준 || 명명 규칙, 표준 단어·도메인 사전, COMMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터타입 선택 ==&lt;br /&gt;
=== 2.1 주요 데이터타입 가이드 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 용도 !! 권장 !! 비권장 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n CHAR)&amp;lt;/code&amp;gt; 또는 &amp;lt;code&amp;gt;VARCHAR2(n BYTE)&amp;lt;/code&amp;gt; 표준 통일 || &amp;lt;code&amp;gt;CHAR(n)&amp;lt;/code&amp;gt; || CHAR는 공백 패딩으로 비교 오류·공간 낭비&lt;br /&gt;
|-&lt;br /&gt;
| 정수·금액 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt; (정밀도 없음), &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; || 도메인 검증, 금액 반올림 오류 방지&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(8)&amp;lt;/code&amp;gt; &#039;YYYYMMDD&#039; || 범위 조건·파티션 프루닝·날짜 연산 정확성&lt;br /&gt;
|-&lt;br /&gt;
| 일시 (초 이하) || &amp;lt;code&amp;gt;TIMESTAMP(6)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; + 별도 밀리초 컬럼 || 정밀도 내장&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 텍스트 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt; || LONG은 사용 중단(deprecated)&lt;br /&gt;
|-&lt;br /&gt;
| 바이너리 || &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG RAW&amp;lt;/code&amp;gt; || 동일&lt;br /&gt;
|-&lt;br /&gt;
| 여부 플래그 || &amp;lt;code&amp;gt;VARCHAR2(1)&amp;lt;/code&amp;gt; + CHECK (&#039;Y&#039;,&#039;N&#039;) || 제약 없는 문자 || 도메인 무결성&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #c0392b;background:#fdf1ef;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;묵시적 형변환 주의&#039;&#039;&#039; — 조인·조건 컬럼의 타입이 다르면 Oracle은 한쪽에 &amp;lt;code&amp;gt;TO_NUMBER&amp;lt;/code&amp;gt; 등을 적용하여 &#039;&#039;&#039;인덱스를 사용하지 못한다&#039;&#039;&#039;. 표준 도메인 사전으로 &amp;quot;같은 의미 = 같은 타입·길이&amp;quot;를 강제한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 나쁜 예: CUST_NO가 VARCHAR2인데 숫자로 비교 → 인덱스 미사용 (FILTER: TO_NUMBER(&amp;quot;CUST_NO&amp;quot;)=1001)&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = 1001;&lt;br /&gt;
&lt;br /&gt;
-- 좋은 예&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = &#039;1001&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 제약조건 설계 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 제약 !! 역할 !! 설계 포인트&lt;br /&gt;
|-&lt;br /&gt;
| NOT NULL || 필수 속성 || 옵티마이저가 NOT NULL을 알면 더 좋은 실행계획 (예: COUNT(*)에 인덱스 사용)&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 주식별자 || 인덱스를 별도 생성 후 &amp;lt;code&amp;gt;USING INDEX&amp;lt;/code&amp;gt;로 지정하면 테이블스페이스·로컬 여부 제어 가능&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 보조식별자 || 인조 PK 사용 시 본질식별자에 필수&lt;br /&gt;
|-&lt;br /&gt;
| FOREIGN KEY || 참조 무결성 || &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, &amp;lt;code&amp;gt;ON DELETE&amp;lt;/code&amp;gt; 정책 명시&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || 도메인 규칙 || 코드값·범위 검증, 단순 규칙만 (복잡한 규칙은 애플리케이션)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 FK 인덱스가 중요한 이유 ===&lt;br /&gt;
* 부모 행 DELETE 또는 PK UPDATE 시 자식 FK 컬럼에 인덱스가 없으면 Oracle은 &#039;&#039;&#039;자식 테이블 전체에 TM Lock(Share)&#039;&#039;&#039;을 건다 → 동시성 저하, 경합 발생&lt;br /&gt;
* 부모-자식 조인 시 NL 조인의 내부 테이블 접근 경로&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 인덱스 없는 FK 찾기 (단일 컬럼 FK 기준 간이 점검)&lt;br /&gt;
SELECT c.owner, c.table_name, c.constraint_name, cc.column_name&lt;br /&gt;
  FROM dba_constraints  c&lt;br /&gt;
  JOIN dba_cons_columns cc&lt;br /&gt;
    ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name&lt;br /&gt;
 WHERE c.constraint_type = &#039;R&#039;&lt;br /&gt;
   AND c.owner = :schema&lt;br /&gt;
   AND NOT EXISTS (&lt;br /&gt;
         SELECT 1&lt;br /&gt;
           FROM dba_ind_columns ic&lt;br /&gt;
          WHERE ic.table_owner     = c.owner&lt;br /&gt;
            AND ic.table_name      = c.table_name&lt;br /&gt;
            AND ic.column_name     = cc.column_name&lt;br /&gt;
            AND ic.column_position = cc.position )&lt;br /&gt;
 ORDER BY c.table_name;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 대량 적재 시 제약 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM DISABLE CONSTRAINT FK_ORDER_ITEM_PROD;&lt;br /&gt;
-- ... 대량 적재 ...&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE NOVALIDATE CONSTRAINT FK_ORDER_ITEM_PROD;  -- 신규 DML만 검증&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE VALIDATE   CONSTRAINT FK_ORDER_ITEM_PROD;  -- 기존 데이터까지 검증&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 인덱스 설계 ==&lt;br /&gt;
=== 4.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 주의&lt;br /&gt;
|-&lt;br /&gt;
| B*Tree || OLTP 일반 조회, 고유·고선택도 컬럼 || 기본&lt;br /&gt;
|-&lt;br /&gt;
| 결합 인덱스 || 여러 조건 동시 사용 || 컬럼 순서가 성능을 결정&lt;br /&gt;
|-&lt;br /&gt;
| Function-Based || &amp;lt;code&amp;gt;UPPER(EMAIL)&amp;lt;/code&amp;gt;, CASE 식 조건 || 쿼리 식과 정확히 일치해야 사용&lt;br /&gt;
|-&lt;br /&gt;
| Bitmap || DW, 저선택도 컬럼, 읽기 위주 || &#039;&#039;&#039;OLTP 금지&#039;&#039;&#039; — DML 시 심각한 락 경합&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Key || 시퀀스 PK 우측 블록 경합(RAC) 완화 || 범위 검색 불가&lt;br /&gt;
|-&lt;br /&gt;
| IOT (Index-Organized Table) || PK로만 접근하는 좁은 테이블, 코드성 || 2차 인덱스 비용 증가&lt;br /&gt;
|-&lt;br /&gt;
| Local / Global (파티션) || Local: 파티션 관리 용이 / Global: 파티션 키 외 조건 || Global은 파티션 DROP 시 &amp;lt;code&amp;gt;UPDATE INDEXES&amp;lt;/code&amp;gt; 필요&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 결합 인덱스 컬럼 순서 원칙 ===&lt;br /&gt;
# &#039;&#039;&#039;항상 사용되는&#039;&#039;&#039; 조건 컬럼을 앞에&lt;br /&gt;
# &#039;&#039;&#039;= 조건&#039;&#039;&#039; 컬럼을 앞에, &#039;&#039;&#039;범위(BETWEEN, LIKE, &amp;gt;)&#039;&#039;&#039; 조건 컬럼을 뒤에&lt;br /&gt;
# 정렬(ORDER BY)·그룹핑 컬럼을 고려해 SORT 연산 제거&lt;br /&gt;
# 선택도는 위 원칙 다음으로 고려 (선택도만으로 순서를 정하지 않는다)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 조회 패턴: WHERE CUST_NO = :b1 AND ORDER_DT BETWEEN :b2 AND :b3 ORDER BY ORDER_DT DESC&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;   -- = 조건 → 범위 조건 순&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 RAC 환경 고려 ===&lt;br /&gt;
* 시퀀스 기반 PK는 인덱스 우측 블록에 삽입이 집중 → &#039;&#039;&#039;gc buffer busy&#039;&#039;&#039;, &#039;&#039;&#039;enq: TX - index contention&#039;&#039;&#039; 발생 가능&lt;br /&gt;
* 대안: &amp;lt;code&amp;gt;CACHE&amp;lt;/code&amp;gt; 크게 + &amp;lt;code&amp;gt;NOORDER&amp;lt;/code&amp;gt; 시퀀스, &#039;&#039;&#039;Scalable Sequence&#039;&#039;&#039;(18c+ &amp;lt;code&amp;gt;SCALE&amp;lt;/code&amp;gt;), Hash 파티션 인덱스, Reverse Key 인덱스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE SEQUENCE SQ_ORDER_NO CACHE 1000 NOORDER SCALE EXTEND;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 파티셔닝 ==&lt;br /&gt;
=== 5.1 파티션 방식 선택 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 방식 !! 기준 !! 대표 용도&lt;br /&gt;
|-&lt;br /&gt;
| Range / Interval || 값의 범위 (주로 날짜) || 주문·이력·로그 — 기간 조회, 보존 기간 경과분 DROP&lt;br /&gt;
|-&lt;br /&gt;
| List || 이산 값 || 지역, 법인, 상태 코드별 분리&lt;br /&gt;
|-&lt;br /&gt;
| Hash || 해시 분산 || 경합 분산, 파티션 와이즈 조인&lt;br /&gt;
|-&lt;br /&gt;
| Composite || Range-Hash, Range-List 등 || 기간 관리 + 분산 동시 필요&lt;br /&gt;
|-&lt;br /&gt;
| Reference || 부모 테이블 파티션 상속 || 주문(Range) → 주문상세 (파티션 키 컬럼 중복 없이)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 예제 — 주문 / 주문상세 Reference 파티션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ORDER_DT      DATE         NOT NULL,&lt;br /&gt;
    CUST_NO       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ITEM_SEQ      NUMBER(5)    NOT NULL,&lt;br /&gt;
    PROD_CD       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    ORDER_QTY     NUMBER(7)    NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO) REFERENCES TB_ORDER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY REFERENCE (FK_ORDER_ITEM_ORDER);&lt;br /&gt;
&lt;br /&gt;
-- 보존 기간 경과 파티션 정리 (자식 → 부모 순, 인덱스 유지)&lt;br /&gt;
ALTER TABLE TB_ORDER DROP PARTITION FOR (DATE &#039;2026-01-15&#039;) UPDATE GLOBAL INDEXES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;파티션 키 선정 기준&#039;&#039;&#039; — ① 대부분의 핵심 SQL 조건에 등장하는가 (프루닝) ② 데이터 삭제·보존 단위와 일치하는가 ③ 값이 변경되지 않는가 (변경 시 &amp;lt;code&amp;gt;ENABLE ROW MOVEMENT&amp;lt;/code&amp;gt; 필요, 행 이동 비용)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 용량 산정 ==&lt;br /&gt;
=== 6.1 산정 절차 ===&lt;br /&gt;
# 평균 행 길이(Average Row Length) 계산 — 컬럼별 평균 바이트 합 + 행 헤더(약 3~5바이트)&lt;br /&gt;
# 블록당 행 수 = (블록크기 − 블록 헤더) × (1 − PCTFREE/100) ÷ 평균 행 길이&lt;br /&gt;
# 필요 블록 수 = 예상 건수 ÷ 블록당 행 수&lt;br /&gt;
# 인덱스 용량 = (키 길이 + ROWID 약 6~10바이트) × 건수 × 1.2~1.5 (여유)&lt;br /&gt;
&lt;br /&gt;
=== 6.2 계산 예시 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 값&lt;br /&gt;
|-&lt;br /&gt;
| 평균 행 길이 || 120 Byte&lt;br /&gt;
|-&lt;br /&gt;
| 블록 크기 / PCTFREE || 8 KB / 10%&lt;br /&gt;
|-&lt;br /&gt;
| 블록당 행 수 || (8,192 − 약 100) × 0.9 ÷ 120 ≈ &#039;&#039;&#039;60행&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일 증가 / 보존 기간 || 50만 건 / 3년 (약 5.5억 건)&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 용량 || 5.5억 ÷ 60 × 8 KB ≈ &#039;&#039;&#039;약 70 GB&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 샘플 데이터 적재 후 실측 기반 보정&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;TB_ORDER&#039;);&lt;br /&gt;
SELECT table_name, num_rows, avg_row_len, blocks FROM user_tables WHERE table_name = &#039;TB_ORDER&#039;;&lt;br /&gt;
&lt;br /&gt;
-- DBMS_SPACE로 예상 용량 계산&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_used  NUMBER;  l_alloc NUMBER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SPACE.CREATE_TABLE_COST(&#039;USERS&#039;, 120, 550000000, 10, l_used, l_alloc);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&#039;used=&#039; || ROUND(l_used/1024/1024/1024,1) || &#039;GB, alloc=&#039; || ROUND(l_alloc/1024/1024/1024,1) || &#039;GB&#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 명명 규칙 (예시 표준) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 객체 !! 규칙 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 영문 약어 || TB_ORDER_ITEM&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 원본 + &amp;lt;code&amp;gt;_HIS&amp;lt;/code&amp;gt; || TB_CUSTOMER_HIS&lt;br /&gt;
|-&lt;br /&gt;
| PK / UK / FK || &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;테이블 / &amp;lt;code&amp;gt;UK_&amp;lt;/code&amp;gt;테이블_n / &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;자식_부모 || FK_ORDER_ITEM_ORDER&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || &amp;lt;code&amp;gt;CK_&amp;lt;/code&amp;gt;테이블_컬럼 || CK_ORDER_STAT&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt;테이블_nn / 유니크 &amp;lt;code&amp;gt;UX_&amp;lt;/code&amp;gt; || IX_ORDER_01&lt;br /&gt;
|-&lt;br /&gt;
| 시퀀스 || &amp;lt;code&amp;gt;SQ_&amp;lt;/code&amp;gt;컬럼 || SQ_ORDER_NO&lt;br /&gt;
|-&lt;br /&gt;
| 컬럼 접미어 || &amp;lt;code&amp;gt;_NO&amp;lt;/code&amp;gt; 번호, &amp;lt;code&amp;gt;_CD&amp;lt;/code&amp;gt; 코드, &amp;lt;code&amp;gt;_NM&amp;lt;/code&amp;gt; 명, &amp;lt;code&amp;gt;_DT&amp;lt;/code&amp;gt; 일자, &amp;lt;code&amp;gt;_YN&amp;lt;/code&amp;gt; 여부, &amp;lt;code&amp;gt;_AMT&amp;lt;/code&amp;gt; 금액, &amp;lt;code&amp;gt;_QTY&amp;lt;/code&amp;gt; 수량 || ORDER_STAT_CD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 설계 리뷰 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 배포 전 점검 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* □ 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt;가 등록되었는가&lt;br /&gt;
* □ 같은 의미의 컬럼이 모든 테이블에서 동일한 타입·길이인가&lt;br /&gt;
* □ 필수 컬럼에 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;이 지정되었는가&lt;br /&gt;
* □ 인조 PK 테이블의 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
* □ FK 컬럼에 인덱스가 있는가 (없다면 사유가 문서화되었는가)&lt;br /&gt;
* □ 인덱스가 핵심 SQL 기준으로 설계되었고 중복(선두 컬럼 포함 관계) 인덱스는 없는가&lt;br /&gt;
* □ 대용량 테이블의 파티션 키·보존 정책·삭제 방식이 정의되었는가&lt;br /&gt;
* □ RAC 환경에서 시퀀스 CACHE/NOORDER, 핫 블록 대책이 검토되었는가&lt;br /&gt;
* □ 테이블스페이스, 용량 산정, 통계 수집 정책이 정의되었는가&lt;br /&gt;
* □ DDL이 형상관리(Git 등)에 등록되었는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;이전&#039;&#039;&#039; ← [[ERD 작성 실습]] · [[정규화 심화]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;처음으로&#039;&#039;&#039; → [[데이터 모델링 입문]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;시험 대비&#039;&#039;&#039; → [[SQLD 데이터 모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:물리 설계]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2039</id>
		<title>Oracle DB 물리 설계</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2039"/>
		<updated>2026-11-04T05:30:02Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 3. 제약조건 설계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;DATA MODELING · STEP 4 PHYSICAL DESIGN&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;Oracle 물리 설계&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;논리 모델을 운영 가능한 Oracle 스키마로 — 데이터타입, 제약조건, 인덱스, 파티셔닝, 용량 산정&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;기준 · Oracle 19c&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 10주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;난이도 · 중급&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. 물리 설계의 범위 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 영역 !! 결정 사항&lt;br /&gt;
|-&lt;br /&gt;
| 객체 || 테이블, 컬럼, 데이터타입, 제약조건, 시퀀스, 뷰&lt;br /&gt;
|-&lt;br /&gt;
| 접근 경로 || 인덱스 종류·컬럼 순서, IOT, 클러스터&lt;br /&gt;
|-&lt;br /&gt;
| 저장 구조 || 테이블스페이스, 파티셔닝, 압축, PCTFREE&lt;br /&gt;
|-&lt;br /&gt;
| 운영 || 용량 산정, 보존·삭제 정책, 통계 수집, 백업 단위&lt;br /&gt;
|-&lt;br /&gt;
| 표준 || 명명 규칙, 표준 단어·도메인 사전, COMMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터타입 선택 ==&lt;br /&gt;
=== 2.1 주요 데이터타입 가이드 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 용도 !! 권장 !! 비권장 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n CHAR)&amp;lt;/code&amp;gt; 또는 &amp;lt;code&amp;gt;VARCHAR2(n BYTE)&amp;lt;/code&amp;gt; 표준 통일 || &amp;lt;code&amp;gt;CHAR(n)&amp;lt;/code&amp;gt; || CHAR는 공백 패딩으로 비교 오류·공간 낭비&lt;br /&gt;
|-&lt;br /&gt;
| 정수·금액 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt; (정밀도 없음), &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; || 도메인 검증, 금액 반올림 오류 방지&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(8)&amp;lt;/code&amp;gt; &#039;YYYYMMDD&#039; || 범위 조건·파티션 프루닝·날짜 연산 정확성&lt;br /&gt;
|-&lt;br /&gt;
| 일시 (초 이하) || &amp;lt;code&amp;gt;TIMESTAMP(6)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; + 별도 밀리초 컬럼 || 정밀도 내장&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 텍스트 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt; || LONG은 사용 중단(deprecated)&lt;br /&gt;
|-&lt;br /&gt;
| 바이너리 || &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG RAW&amp;lt;/code&amp;gt; || 동일&lt;br /&gt;
|-&lt;br /&gt;
| 여부 플래그 || &amp;lt;code&amp;gt;VARCHAR2(1)&amp;lt;/code&amp;gt; + CHECK (&#039;Y&#039;,&#039;N&#039;) || 제약 없는 문자 || 도메인 무결성&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #c0392b;background:#fdf1ef;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;묵시적 형변환 주의&#039;&#039;&#039; — 조인·조건 컬럼의 타입이 다르면 Oracle은 한쪽에 &amp;lt;code&amp;gt;TO_NUMBER&amp;lt;/code&amp;gt; 등을 적용하여 &#039;&#039;&#039;인덱스를 사용하지 못한다&#039;&#039;&#039;. 표준 도메인 사전으로 &amp;quot;같은 의미 = 같은 타입·길이&amp;quot;를 강제한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 나쁜 예: CUST_NO가 VARCHAR2인데 숫자로 비교 → 인덱스 미사용 (FILTER: TO_NUMBER(&amp;quot;CUST_NO&amp;quot;)=1001)&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = 1001;&lt;br /&gt;
&lt;br /&gt;
-- 좋은 예&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = &#039;1001&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 제약조건 설계 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 제약 !! 역할 !! 설계 포인트&lt;br /&gt;
|-&lt;br /&gt;
| NOT NULL || 필수 속성 || 옵티마이저가 NOT NULL을 알면 더 좋은 실행계획 (예: COUNT(*)에 인덱스 사용)&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 주식별자 || 인덱스를 별도 생성 후 &amp;lt;code&amp;gt;USING INDEX&amp;lt;/code&amp;gt;로 지정하면 테이블스페이스·로컬 여부 제어 가능&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 보조식별자 || 인조 PK 사용 시 본질식별자에 필수&lt;br /&gt;
|-&lt;br /&gt;
| FOREIGN KEY || 참조 무결성 || &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, &amp;lt;code&amp;gt;ON DELETE&amp;lt;/code&amp;gt; 정책 명시&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || 도메인 규칙 || 코드값·범위 검증, 단순 규칙만 (복잡한 규칙은 애플리케이션)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 FK 인덱스가 중요한 이유 ===&lt;br /&gt;
* 부모 행 DELETE 또는 PK UPDATE 시 자식 FK 컬럼에 인덱스가 없으면 Oracle은 &#039;&#039;&#039;자식 테이블 전체에 TM Lock(Share)&#039;&#039;&#039;을 건다 → 동시성 저하, 경합 발생&lt;br /&gt;
* 부모-자식 조인 시 NL 조인의 내부 테이블 접근 경로&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 인덱스 없는 FK 찾기 (단일 컬럼 FK 기준 간이 점검)&lt;br /&gt;
SELECT c.owner, c.table_name, c.constraint_name, cc.column_name&lt;br /&gt;
  FROM dba_constraints  c&lt;br /&gt;
  JOIN dba_cons_columns cc&lt;br /&gt;
    ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name&lt;br /&gt;
 WHERE c.constraint_type = &#039;R&#039;&lt;br /&gt;
   AND c.owner = :schema&lt;br /&gt;
   AND NOT EXISTS (&lt;br /&gt;
         SELECT 1&lt;br /&gt;
           FROM dba_ind_columns ic&lt;br /&gt;
          WHERE ic.table_owner     = c.owner&lt;br /&gt;
            AND ic.table_name      = c.table_name&lt;br /&gt;
            AND ic.column_name     = cc.column_name&lt;br /&gt;
            AND ic.column_position = cc.position )&lt;br /&gt;
 ORDER BY c.table_name;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 대량 적재 시 제약 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM DISABLE CONSTRAINT FK_ORDER_ITEM_PROD;&lt;br /&gt;
-- ... 대량 적재 ...&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE NOVALIDATE CONSTRAINT FK_ORDER_ITEM_PROD;  -- 신규 DML만 검증&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE VALIDATE   CONSTRAINT FK_ORDER_ITEM_PROD;  -- 기존 데이터까지 검증&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 인덱스 설계 ==&lt;br /&gt;
=== 4.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 주의&lt;br /&gt;
|-&lt;br /&gt;
| B*Tree || OLTP 일반 조회, 고유·고선택도 컬럼 || 기본&lt;br /&gt;
|-&lt;br /&gt;
| 결합 인덱스 || 여러 조건 동시 사용 || 컬럼 순서가 성능을 결정&lt;br /&gt;
|-&lt;br /&gt;
| Function-Based || &amp;lt;code&amp;gt;UPPER(EMAIL)&amp;lt;/code&amp;gt;, CASE 식 조건 || 쿼리 식과 정확히 일치해야 사용&lt;br /&gt;
|-&lt;br /&gt;
| Bitmap || DW, 저선택도 컬럼, 읽기 위주 || &#039;&#039;&#039;OLTP 금지&#039;&#039;&#039; — DML 시 심각한 락 경합&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Key || 시퀀스 PK 우측 블록 경합(RAC) 완화 || 범위 검색 불가&lt;br /&gt;
|-&lt;br /&gt;
| IOT (Index-Organized Table) || PK로만 접근하는 좁은 테이블, 코드성 || 2차 인덱스 비용 증가&lt;br /&gt;
|-&lt;br /&gt;
| Local / Global (파티션) || Local: 파티션 관리 용이 / Global: 파티션 키 외 조건 || Global은 파티션 DROP 시 &amp;lt;code&amp;gt;UPDATE INDEXES&amp;lt;/code&amp;gt; 필요&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 결합 인덱스 컬럼 순서 원칙 ===&lt;br /&gt;
# &#039;&#039;&#039;항상 사용되는&#039;&#039;&#039; 조건 컬럼을 앞에&lt;br /&gt;
# &#039;&#039;&#039;= 조건&#039;&#039;&#039; 컬럼을 앞에, &#039;&#039;&#039;범위(BETWEEN, LIKE, &amp;gt;)&#039;&#039;&#039; 조건 컬럼을 뒤에&lt;br /&gt;
# 정렬(ORDER BY)·그룹핑 컬럼을 고려해 SORT 연산 제거&lt;br /&gt;
# 선택도는 위 원칙 다음으로 고려 (선택도만으로 순서를 정하지 않는다)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 조회 패턴: WHERE CUST_NO = :b1 AND ORDER_DT BETWEEN :b2 AND :b3 ORDER BY ORDER_DT DESC&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;   -- = 조건 → 범위 조건 순&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 RAC 환경 고려 ===&lt;br /&gt;
* 시퀀스 기반 PK는 인덱스 우측 블록에 삽입이 집중 → &#039;&#039;&#039;gc buffer busy&#039;&#039;&#039;, &#039;&#039;&#039;enq: TX - index contention&#039;&#039;&#039; 발생 가능&lt;br /&gt;
* 대안: &amp;lt;code&amp;gt;CACHE&amp;lt;/code&amp;gt; 크게 + &amp;lt;code&amp;gt;NOORDER&amp;lt;/code&amp;gt; 시퀀스, &#039;&#039;&#039;Scalable Sequence&#039;&#039;&#039;(18c+ &amp;lt;code&amp;gt;SCALE&amp;lt;/code&amp;gt;), Hash 파티션 인덱스, Reverse Key 인덱스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE SEQUENCE SQ_ORDER_NO CACHE 1000 NOORDER SCALE EXTEND;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 파티셔닝 ==&lt;br /&gt;
=== 5.1 파티션 방식 선택 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 방식 !! 기준 !! 대표 용도&lt;br /&gt;
|-&lt;br /&gt;
| Range / Interval || 값의 범위 (주로 날짜) || 주문·이력·로그 — 기간 조회, 보존 기간 경과분 DROP&lt;br /&gt;
|-&lt;br /&gt;
| List || 이산 값 || 지역, 법인, 상태 코드별 분리&lt;br /&gt;
|-&lt;br /&gt;
| Hash || 해시 분산 || 경합 분산, 파티션 와이즈 조인&lt;br /&gt;
|-&lt;br /&gt;
| Composite || Range-Hash, Range-List 등 || 기간 관리 + 분산 동시 필요&lt;br /&gt;
|-&lt;br /&gt;
| Reference || 부모 테이블 파티션 상속 || 주문(Range) → 주문상세 (파티션 키 컬럼 중복 없이)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 예제 — 주문 / 주문상세 Reference 파티션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ORDER_DT      DATE         NOT NULL,&lt;br /&gt;
    CUST_NO       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ITEM_SEQ      NUMBER(5)    NOT NULL,&lt;br /&gt;
    PROD_CD       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    ORDER_QTY     NUMBER(7)    NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO) REFERENCES TB_ORDER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY REFERENCE (FK_ORDER_ITEM_ORDER);&lt;br /&gt;
&lt;br /&gt;
-- 보존 기간 경과 파티션 정리 (자식 → 부모 순, 인덱스 유지)&lt;br /&gt;
ALTER TABLE TB_ORDER DROP PARTITION FOR (DATE &#039;2026-01-15&#039;) UPDATE GLOBAL INDEXES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;파티션 키 선정 기준&#039;&#039;&#039; — ① 대부분의 핵심 SQL 조건에 등장하는가 (프루닝) ② 데이터 삭제·보존 단위와 일치하는가 ③ 값이 변경되지 않는가 (변경 시 &amp;lt;code&amp;gt;ENABLE ROW MOVEMENT&amp;lt;/code&amp;gt; 필요, 행 이동 비용)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 용량 산정 ==&lt;br /&gt;
=== 6.1 산정 절차 ===&lt;br /&gt;
# 평균 행 길이(Average Row Length) 계산 — 컬럼별 평균 바이트 합 + 행 헤더(약 3~5바이트)&lt;br /&gt;
# 블록당 행 수 = (블록크기 − 블록 헤더) × (1 − PCTFREE/100) ÷ 평균 행 길이&lt;br /&gt;
# 필요 블록 수 = 예상 건수 ÷ 블록당 행 수&lt;br /&gt;
# 인덱스 용량 = (키 길이 + ROWID 약 6~10바이트) × 건수 × 1.2~1.5 (여유)&lt;br /&gt;
&lt;br /&gt;
=== 6.2 계산 예시 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 값&lt;br /&gt;
|-&lt;br /&gt;
| 평균 행 길이 || 120 Byte&lt;br /&gt;
|-&lt;br /&gt;
| 블록 크기 / PCTFREE || 8 KB / 10%&lt;br /&gt;
|-&lt;br /&gt;
| 블록당 행 수 || (8,192 − 약 100) × 0.9 ÷ 120 ≈ &#039;&#039;&#039;60행&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일 증가 / 보존 기간 || 50만 건 / 3년 (약 5.5억 건)&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 용량 || 5.5억 ÷ 60 × 8 KB ≈ &#039;&#039;&#039;약 70 GB&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 샘플 데이터 적재 후 실측 기반 보정&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;TB_ORDER&#039;);&lt;br /&gt;
SELECT table_name, num_rows, avg_row_len, blocks FROM user_tables WHERE table_name = &#039;TB_ORDER&#039;;&lt;br /&gt;
&lt;br /&gt;
-- DBMS_SPACE로 예상 용량 계산&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_used  NUMBER;  l_alloc NUMBER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SPACE.CREATE_TABLE_COST(&#039;USERS&#039;, 120, 550000000, 10, l_used, l_alloc);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&#039;used=&#039; || ROUND(l_used/1024/1024/1024,1) || &#039;GB, alloc=&#039; || ROUND(l_alloc/1024/1024/1024,1) || &#039;GB&#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 명명 규칙 (예시 표준) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 객체 !! 규칙 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 영문 약어 || TB_ORDER_ITEM&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 원본 + &amp;lt;code&amp;gt;_HIS&amp;lt;/code&amp;gt; || TB_CUSTOMER_HIS&lt;br /&gt;
|-&lt;br /&gt;
| PK / UK / FK || &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;테이블 / &amp;lt;code&amp;gt;UK_&amp;lt;/code&amp;gt;테이블_n / &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;자식_부모 || FK_ORDER_ITEM_ORDER&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || &amp;lt;code&amp;gt;CK_&amp;lt;/code&amp;gt;테이블_컬럼 || CK_ORDER_STAT&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt;테이블_nn / 유니크 &amp;lt;code&amp;gt;UX_&amp;lt;/code&amp;gt; || IX_ORDER_01&lt;br /&gt;
|-&lt;br /&gt;
| 시퀀스 || &amp;lt;code&amp;gt;SQ_&amp;lt;/code&amp;gt;컬럼 || SQ_ORDER_NO&lt;br /&gt;
|-&lt;br /&gt;
| 컬럼 접미어 || &amp;lt;code&amp;gt;_NO&amp;lt;/code&amp;gt; 번호, &amp;lt;code&amp;gt;_CD&amp;lt;/code&amp;gt; 코드, &amp;lt;code&amp;gt;_NM&amp;lt;/code&amp;gt; 명, &amp;lt;code&amp;gt;_DT&amp;lt;/code&amp;gt; 일자, &amp;lt;code&amp;gt;_YN&amp;lt;/code&amp;gt; 여부, &amp;lt;code&amp;gt;_AMT&amp;lt;/code&amp;gt; 금액, &amp;lt;code&amp;gt;_QTY&amp;lt;/code&amp;gt; 수량 || ORDER_STAT_CD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 설계 리뷰 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 배포 전 점검 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* □ 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt;가 등록되었는가&lt;br /&gt;
* □ 같은 의미의 컬럼이 모든 테이블에서 동일한 타입·길이인가&lt;br /&gt;
* □ 필수 컬럼에 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;이 지정되었는가&lt;br /&gt;
* □ 인조 PK 테이블의 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
* □ FK 컬럼에 인덱스가 있는가 (없다면 사유가 문서화되었는가)&lt;br /&gt;
* □ 인덱스가 핵심 SQL 기준으로 설계되었고 중복(선두 컬럼 포함 관계) 인덱스는 없는가&lt;br /&gt;
* □ 대용량 테이블의 파티션 키·보존 정책·삭제 방식이 정의되었는가&lt;br /&gt;
* □ RAC 환경에서 시퀀스 CACHE/NOORDER, 핫 블록 대책이 검토되었는가&lt;br /&gt;
* □ 테이블스페이스, 용량 산정, 통계 수집 정책이 정의되었는가&lt;br /&gt;
* □ DDL이 형상관리(Git 등)에 등록되었는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;이전&#039;&#039;&#039; ← [[ERD 작성 실습]] · [[정규화 심화]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;처음으로&#039;&#039;&#039; → [[데이터 모델링 입문]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;시험 대비&#039;&#039;&#039; → [[SQLD 데이터 모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:물리 설계]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2038</id>
		<title>Oracle DB 물리 설계</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_DB_%EB%AC%BC%EB%A6%AC_%EC%84%A4%EA%B3%84&amp;diff=2038"/>
		<updated>2026-11-04T05:29:38Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 1. 물리 설계의 범위 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;background:linear-gradient(135deg,#3b1a4f 0%,#6c3483 55%,#8e44ad 100%);color:#ffffff;padding:30px 36px;border-radius:14px;margin-bottom:24px;box-shadow:0 4px 14px rgba(59,26,79,0.25);&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;letter-spacing:3px;opacity:0.8;margin-bottom:6px;&amp;quot;&amp;gt;DATA MODELING · STEP 4 PHYSICAL DESIGN&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:28px;font-weight:700;line-height:1.3;&amp;quot;&amp;gt;Oracle 물리 설계&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:15px;opacity:0.92;margin-top:10px;line-height:1.7;&amp;quot;&amp;gt;논리 모델을 운영 가능한 Oracle 스키마로 — 데이터타입, 제약조건, 인덱스, 파티셔닝, 용량 산정&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:16px;display:flex;flex-wrap:wrap;gap:8px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;기준 · Oracle 19c&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;커리큘럼 · 10주차&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);padding:4px 12px;border-radius:20px;font-size:12px;&amp;quot;&amp;gt;난이도 · 중급&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. 물리 설계의 범위 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 영역 !! 결정 사항&lt;br /&gt;
|-&lt;br /&gt;
| 객체 || 테이블, 컬럼, 데이터타입, 제약조건, 시퀀스, 뷰&lt;br /&gt;
|-&lt;br /&gt;
| 접근 경로 || 인덱스 종류·컬럼 순서, IOT, 클러스터&lt;br /&gt;
|-&lt;br /&gt;
| 저장 구조 || 테이블스페이스, 파티셔닝, 압축, PCTFREE&lt;br /&gt;
|-&lt;br /&gt;
| 운영 || 용량 산정, 보존·삭제 정책, 통계 수집, 백업 단위&lt;br /&gt;
|-&lt;br /&gt;
| 표준 || 명명 규칙, 표준 단어·도메인 사전, COMMENT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터타입 선택 ==&lt;br /&gt;
=== 2.1 주요 데이터타입 가이드 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 용도 !! 권장 !! 비권장 !! 이유&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n CHAR)&amp;lt;/code&amp;gt; 또는 &amp;lt;code&amp;gt;VARCHAR2(n BYTE)&amp;lt;/code&amp;gt; 표준 통일 || &amp;lt;code&amp;gt;CHAR(n)&amp;lt;/code&amp;gt; || CHAR는 공백 패딩으로 비교 오류·공간 낭비&lt;br /&gt;
|-&lt;br /&gt;
| 정수·금액 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt; (정밀도 없음), &amp;lt;code&amp;gt;FLOAT&amp;lt;/code&amp;gt; || 도메인 검증, 금액 반올림 오류 방지&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;VARCHAR2(8)&amp;lt;/code&amp;gt; &#039;YYYYMMDD&#039; || 범위 조건·파티션 프루닝·날짜 연산 정확성&lt;br /&gt;
|-&lt;br /&gt;
| 일시 (초 이하) || &amp;lt;code&amp;gt;TIMESTAMP(6)&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; + 별도 밀리초 컬럼 || 정밀도 내장&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 텍스트 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt; || LONG은 사용 중단(deprecated)&lt;br /&gt;
|-&lt;br /&gt;
| 바이너리 || &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; (SecureFile) || &amp;lt;code&amp;gt;LONG RAW&amp;lt;/code&amp;gt; || 동일&lt;br /&gt;
|-&lt;br /&gt;
| 여부 플래그 || &amp;lt;code&amp;gt;VARCHAR2(1)&amp;lt;/code&amp;gt; + CHECK (&#039;Y&#039;,&#039;N&#039;) || 제약 없는 문자 || 도메인 무결성&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #c0392b;background:#fdf1ef;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;묵시적 형변환 주의&#039;&#039;&#039; — 조인·조건 컬럼의 타입이 다르면 Oracle은 한쪽에 &amp;lt;code&amp;gt;TO_NUMBER&amp;lt;/code&amp;gt; 등을 적용하여 &#039;&#039;&#039;인덱스를 사용하지 못한다&#039;&#039;&#039;. 표준 도메인 사전으로 &amp;quot;같은 의미 = 같은 타입·길이&amp;quot;를 강제한다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 나쁜 예: CUST_NO가 VARCHAR2인데 숫자로 비교 → 인덱스 미사용 (FILTER: TO_NUMBER(&amp;quot;CUST_NO&amp;quot;)=1001)&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = 1001;&lt;br /&gt;
&lt;br /&gt;
-- 좋은 예&lt;br /&gt;
SELECT * FROM TB_CUSTOMER WHERE CUST_NO = &#039;1001&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. 제약조건 설계 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 제약 !! 역할 !! 설계 포인트&lt;br /&gt;
|-&lt;br /&gt;
| NOT NULL || 필수 속성 || 옵티마이저가 NOT NULL을 알면 더 좋은 실행계획 (예: COUNT(*)에 인덱스 사용)&lt;br /&gt;
|-&lt;br /&gt;
| PRIMARY KEY || 주식별자 || 인덱스를 별도 생성 후 &amp;lt;code&amp;gt;USING INDEX&amp;lt;/code&amp;gt;로 지정하면 테이블스페이스·로컬 여부 제어 가능&lt;br /&gt;
|-&lt;br /&gt;
| UNIQUE || 보조식별자 || 인조 PK 사용 시 본질식별자에 필수&lt;br /&gt;
|-&lt;br /&gt;
| FOREIGN KEY || 참조 무결성 || &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, &amp;lt;code&amp;gt;ON DELETE&amp;lt;/code&amp;gt; 정책 명시&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || 도메인 규칙 || 코드값·범위 검증, 단순 규칙만 (복잡한 규칙은 애플리케이션)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.1 FK 인덱스가 중요한 이유 ===&lt;br /&gt;
* 부모 행 DELETE 또는 PK UPDATE 시 자식 FK 컬럼에 인덱스가 없으면 Oracle은 &#039;&#039;&#039;자식 테이블 전체에 TM Lock(Share)&#039;&#039;&#039;을 건다 → 동시성 저하, 경합 발생&lt;br /&gt;
* 부모-자식 조인 시 NL 조인의 내부 테이블 접근 경로&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 인덱스 없는 FK 찾기 (단일 컬럼 FK 기준 간이 점검)&lt;br /&gt;
SELECT c.owner, c.table_name, c.constraint_name, cc.column_name&lt;br /&gt;
  FROM dba_constraints  c&lt;br /&gt;
  JOIN dba_cons_columns cc&lt;br /&gt;
    ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name&lt;br /&gt;
 WHERE c.constraint_type = &#039;R&#039;&lt;br /&gt;
   AND c.owner = :schema&lt;br /&gt;
   AND NOT EXISTS (&lt;br /&gt;
         SELECT 1&lt;br /&gt;
           FROM dba_ind_columns ic&lt;br /&gt;
          WHERE ic.table_owner     = c.owner&lt;br /&gt;
            AND ic.table_name      = c.table_name&lt;br /&gt;
            AND ic.column_name     = cc.column_name&lt;br /&gt;
            AND ic.column_position = cc.position )&lt;br /&gt;
 ORDER BY c.table_name;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 대량 적재 시 제약 관리 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM DISABLE CONSTRAINT FK_ORDER_ITEM_PROD;&lt;br /&gt;
-- ... 대량 적재 ...&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE NOVALIDATE CONSTRAINT FK_ORDER_ITEM_PROD;  -- 신규 DML만 검증&lt;br /&gt;
ALTER TABLE TB_ORDER_ITEM ENABLE VALIDATE   CONSTRAINT FK_ORDER_ITEM_PROD;  -- 기존 데이터까지 검증&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. 인덱스 설계 ==&lt;br /&gt;
=== 4.1 인덱스 종류 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 종류 !! 적합한 경우 !! 주의&lt;br /&gt;
|-&lt;br /&gt;
| B*Tree || OLTP 일반 조회, 고유·고선택도 컬럼 || 기본&lt;br /&gt;
|-&lt;br /&gt;
| 결합 인덱스 || 여러 조건 동시 사용 || 컬럼 순서가 성능을 결정&lt;br /&gt;
|-&lt;br /&gt;
| Function-Based || &amp;lt;code&amp;gt;UPPER(EMAIL)&amp;lt;/code&amp;gt;, CASE 식 조건 || 쿼리 식과 정확히 일치해야 사용&lt;br /&gt;
|-&lt;br /&gt;
| Bitmap || DW, 저선택도 컬럼, 읽기 위주 || &#039;&#039;&#039;OLTP 금지&#039;&#039;&#039; — DML 시 심각한 락 경합&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Key || 시퀀스 PK 우측 블록 경합(RAC) 완화 || 범위 검색 불가&lt;br /&gt;
|-&lt;br /&gt;
| IOT (Index-Organized Table) || PK로만 접근하는 좁은 테이블, 코드성 || 2차 인덱스 비용 증가&lt;br /&gt;
|-&lt;br /&gt;
| Local / Global (파티션) || Local: 파티션 관리 용이 / Global: 파티션 키 외 조건 || Global은 파티션 DROP 시 &amp;lt;code&amp;gt;UPDATE INDEXES&amp;lt;/code&amp;gt; 필요&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 결합 인덱스 컬럼 순서 원칙 ===&lt;br /&gt;
# &#039;&#039;&#039;항상 사용되는&#039;&#039;&#039; 조건 컬럼을 앞에&lt;br /&gt;
# &#039;&#039;&#039;= 조건&#039;&#039;&#039; 컬럼을 앞에, &#039;&#039;&#039;범위(BETWEEN, LIKE, &amp;gt;)&#039;&#039;&#039; 조건 컬럼을 뒤에&lt;br /&gt;
# 정렬(ORDER BY)·그룹핑 컬럼을 고려해 SORT 연산 제거&lt;br /&gt;
# 선택도는 위 원칙 다음으로 고려 (선택도만으로 순서를 정하지 않는다)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 조회 패턴: WHERE CUST_NO = :b1 AND ORDER_DT BETWEEN :b2 AND :b3 ORDER BY ORDER_DT DESC&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;   -- = 조건 → 범위 조건 순&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 RAC 환경 고려 ===&lt;br /&gt;
* 시퀀스 기반 PK는 인덱스 우측 블록에 삽입이 집중 → &#039;&#039;&#039;gc buffer busy&#039;&#039;&#039;, &#039;&#039;&#039;enq: TX - index contention&#039;&#039;&#039; 발생 가능&lt;br /&gt;
* 대안: &amp;lt;code&amp;gt;CACHE&amp;lt;/code&amp;gt; 크게 + &amp;lt;code&amp;gt;NOORDER&amp;lt;/code&amp;gt; 시퀀스, &#039;&#039;&#039;Scalable Sequence&#039;&#039;&#039;(18c+ &amp;lt;code&amp;gt;SCALE&amp;lt;/code&amp;gt;), Hash 파티션 인덱스, Reverse Key 인덱스&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE SEQUENCE SQ_ORDER_NO CACHE 1000 NOORDER SCALE EXTEND;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 파티셔닝 ==&lt;br /&gt;
=== 5.1 파티션 방식 선택 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 방식 !! 기준 !! 대표 용도&lt;br /&gt;
|-&lt;br /&gt;
| Range / Interval || 값의 범위 (주로 날짜) || 주문·이력·로그 — 기간 조회, 보존 기간 경과분 DROP&lt;br /&gt;
|-&lt;br /&gt;
| List || 이산 값 || 지역, 법인, 상태 코드별 분리&lt;br /&gt;
|-&lt;br /&gt;
| Hash || 해시 분산 || 경합 분산, 파티션 와이즈 조인&lt;br /&gt;
|-&lt;br /&gt;
| Composite || Range-Hash, Range-List 등 || 기간 관리 + 분산 동시 필요&lt;br /&gt;
|-&lt;br /&gt;
| Reference || 부모 테이블 파티션 상속 || 주문(Range) → 주문상세 (파티션 키 컬럼 중복 없이)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 예제 — 주문 / 주문상세 Reference 파티션 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ORDER_DT      DATE         NOT NULL,&lt;br /&gt;
    CUST_NO       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO)&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO      VARCHAR2(20) NOT NULL,&lt;br /&gt;
    ITEM_SEQ      NUMBER(5)    NOT NULL,&lt;br /&gt;
    PROD_CD       VARCHAR2(10) NOT NULL,&lt;br /&gt;
    ORDER_QTY     NUMBER(7)    NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO) REFERENCES TB_ORDER&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY REFERENCE (FK_ORDER_ITEM_ORDER);&lt;br /&gt;
&lt;br /&gt;
-- 보존 기간 경과 파티션 정리 (자식 → 부모 순, 인덱스 유지)&lt;br /&gt;
ALTER TABLE TB_ORDER DROP PARTITION FOR (DATE &#039;2026-01-15&#039;) UPDATE GLOBAL INDEXES;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #e3d3ee;background:#fbf8fd;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;파티션 키 선정 기준&#039;&#039;&#039; — ① 대부분의 핵심 SQL 조건에 등장하는가 (프루닝) ② 데이터 삭제·보존 단위와 일치하는가 ③ 값이 변경되지 않는가 (변경 시 &amp;lt;code&amp;gt;ENABLE ROW MOVEMENT&amp;lt;/code&amp;gt; 필요, 행 이동 비용)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 용량 산정 ==&lt;br /&gt;
=== 6.1 산정 절차 ===&lt;br /&gt;
# 평균 행 길이(Average Row Length) 계산 — 컬럼별 평균 바이트 합 + 행 헤더(약 3~5바이트)&lt;br /&gt;
# 블록당 행 수 = (블록크기 − 블록 헤더) × (1 − PCTFREE/100) ÷ 평균 행 길이&lt;br /&gt;
# 필요 블록 수 = 예상 건수 ÷ 블록당 행 수&lt;br /&gt;
# 인덱스 용량 = (키 길이 + ROWID 약 6~10바이트) × 건수 × 1.2~1.5 (여유)&lt;br /&gt;
&lt;br /&gt;
=== 6.2 계산 예시 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#f5eefa;&amp;quot;&lt;br /&gt;
! 항목 !! 값&lt;br /&gt;
|-&lt;br /&gt;
| 평균 행 길이 || 120 Byte&lt;br /&gt;
|-&lt;br /&gt;
| 블록 크기 / PCTFREE || 8 KB / 10%&lt;br /&gt;
|-&lt;br /&gt;
| 블록당 행 수 || (8,192 − 약 100) × 0.9 ÷ 120 ≈ &#039;&#039;&#039;60행&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일 증가 / 보존 기간 || 50만 건 / 3년 (약 5.5억 건)&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 용량 || 5.5억 ÷ 60 × 8 KB ≈ &#039;&#039;&#039;약 70 GB&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 샘플 데이터 적재 후 실측 기반 보정&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &#039;TB_ORDER&#039;);&lt;br /&gt;
SELECT table_name, num_rows, avg_row_len, blocks FROM user_tables WHERE table_name = &#039;TB_ORDER&#039;;&lt;br /&gt;
&lt;br /&gt;
-- DBMS_SPACE로 예상 용량 계산&lt;br /&gt;
DECLARE&lt;br /&gt;
  l_used  NUMBER;  l_alloc NUMBER;&lt;br /&gt;
BEGIN&lt;br /&gt;
  DBMS_SPACE.CREATE_TABLE_COST(&#039;USERS&#039;, 120, 550000000, 10, l_used, l_alloc);&lt;br /&gt;
  DBMS_OUTPUT.PUT_LINE(&#039;used=&#039; || ROUND(l_used/1024/1024/1024,1) || &#039;GB, alloc=&#039; || ROUND(l_alloc/1024/1024/1024,1) || &#039;GB&#039;);&lt;br /&gt;
END;&lt;br /&gt;
/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 명명 규칙 (예시 표준) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#3b1a4f;color:#fff;&amp;quot;&lt;br /&gt;
! 객체 !! 규칙 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 영문 약어 || TB_ORDER_ITEM&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 || &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt; + 원본 + &amp;lt;code&amp;gt;_HIS&amp;lt;/code&amp;gt; || TB_CUSTOMER_HIS&lt;br /&gt;
|-&lt;br /&gt;
| PK / UK / FK || &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;테이블 / &amp;lt;code&amp;gt;UK_&amp;lt;/code&amp;gt;테이블_n / &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;자식_부모 || FK_ORDER_ITEM_ORDER&lt;br /&gt;
|-&lt;br /&gt;
| CHECK || &amp;lt;code&amp;gt;CK_&amp;lt;/code&amp;gt;테이블_컬럼 || CK_ORDER_STAT&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt;테이블_nn / 유니크 &amp;lt;code&amp;gt;UX_&amp;lt;/code&amp;gt; || IX_ORDER_01&lt;br /&gt;
|-&lt;br /&gt;
| 시퀀스 || &amp;lt;code&amp;gt;SQ_&amp;lt;/code&amp;gt;컬럼 || SQ_ORDER_NO&lt;br /&gt;
|-&lt;br /&gt;
| 컬럼 접미어 || &amp;lt;code&amp;gt;_NO&amp;lt;/code&amp;gt; 번호, &amp;lt;code&amp;gt;_CD&amp;lt;/code&amp;gt; 코드, &amp;lt;code&amp;gt;_NM&amp;lt;/code&amp;gt; 명, &amp;lt;code&amp;gt;_DT&amp;lt;/code&amp;gt; 일자, &amp;lt;code&amp;gt;_YN&amp;lt;/code&amp;gt; 여부, &amp;lt;code&amp;gt;_AMT&amp;lt;/code&amp;gt; 금액, &amp;lt;code&amp;gt;_QTY&amp;lt;/code&amp;gt; 수량 || ORDER_STAT_CD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 설계 리뷰 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #e3d3ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 배포 전 점검 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* □ 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt;가 등록되었는가&lt;br /&gt;
* □ 같은 의미의 컬럼이 모든 테이블에서 동일한 타입·길이인가&lt;br /&gt;
* □ 필수 컬럼에 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;이 지정되었는가&lt;br /&gt;
* □ 인조 PK 테이블의 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
* □ FK 컬럼에 인덱스가 있는가 (없다면 사유가 문서화되었는가)&lt;br /&gt;
* □ 인덱스가 핵심 SQL 기준으로 설계되었고 중복(선두 컬럼 포함 관계) 인덱스는 없는가&lt;br /&gt;
* □ 대용량 테이블의 파티션 키·보존 정책·삭제 방식이 정의되었는가&lt;br /&gt;
* □ RAC 환경에서 시퀀스 CACHE/NOORDER, 핫 블록 대책이 검토되었는가&lt;br /&gt;
* □ 테이블스페이스, 용량 산정, 통계 수집 정책이 정의되었는가&lt;br /&gt;
* □ DDL이 형상관리(Git 등)에 등록되었는가&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #3b1a4f;background:#faf6fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a3a5a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;이전&#039;&#039;&#039; ← [[ERD 작성 실습]] · [[정규화 심화]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;처음으로&#039;&#039;&#039; → [[데이터 모델링 입문]] &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;시험 대비&#039;&#039;&#039; → [[SQLD 데이터 모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:물리 설계]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2037</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2037"/>
		<updated>2026-11-04T05:27:33Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle DB 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2036</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2036"/>
		<updated>2026-11-04T05:26:55Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 10. 학습 커리큘럼 (12주) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2035</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2035"/>
		<updated>2026-11-04T05:26:21Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 6.2 반정규화 기법 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2034</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2034"/>
		<updated>2026-11-04T05:25:57Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 5.1 이상현상 (Anomaly) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2033</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2033"/>
		<updated>2026-11-04T05:25:35Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 3.4 식별자 (Identifier) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2032</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2032"/>
		<updated>2026-11-04T05:25:19Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 3.4 식별자 (Identifier) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2031</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2031"/>
		<updated>2026-11-04T05:24:42Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 3.3 관계 (Relationship) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2030</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2030"/>
		<updated>2026-11-04T05:24:01Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 2. 데이터 모델링의 3단계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2029</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2029"/>
		<updated>2026-11-04T05:20:47Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:13px;color:#000000;&amp;quot;&amp;gt;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2028</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2028"/>
		<updated>2026-11-04T05:20:03Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 2. 데이터 모델링의 3단계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:13px;color:#000000;&amp;quot;&amp;gt;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2027</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2027"/>
		<updated>2026-11-04T05:19:50Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 2. 데이터 모델링의 3단계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div  style=&amp;quot;font-size:13px;color:#ffffff;&amp;quot;&amp;gt;&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2026</id>
		<title>데이터 모델링 입문</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%AA%A8%EB%8D%B8%EB%A7%81_%EC%9E%85%EB%AC%B8&amp;diff=2026"/>
		<updated>2026-11-04T05:19:16Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: /* 2. 데이터 모델링의 3단계 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = DATA MODELING · FOUNDATION COURSE&lt;br /&gt;
|제목 = 데이터 모델링 입문&lt;br /&gt;
|설명 = 업무를 데이터로 표현하는 설계의 기술 — 개념부터 정규화, 물리 설계, 학습 로드맵까지&amp;lt;br/&amp;gt;처음 시작하는 사람을 위한 단계별 가이드&lt;br /&gt;
|색상 = 파랑&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 12주&lt;br /&gt;
|배지3 = 기준 DBMS · Oracle 19c&lt;br /&gt;
|배지4 = 연계 자격 · SQLD / DAsP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:14px;margin-bottom:26px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #2b7bb9;border-radius:10px;padding:16px 18px;background:#f8fbfe;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#2b7bb9;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 1&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;개념 이해&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;모델링이 무엇이고 왜 필요한지, 3단계 모델의 차이&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #16a085;border-radius:10px;padding:16px 18px;background:#f6fcfa;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#16a085;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 2&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;구성 요소&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;엔터티 · 속성 · 관계 · 식별자, ERD 읽고 그리기&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #e67e22;border-radius:10px;padding:16px 18px;background:#fffaf5;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#e67e22;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;정규화 · 반정규화&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;이상현상 제거, 성능을 위한 의도적 중복&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;border:1px solid #d6e2ee;border-top:4px solid #8e44ad;border-radius:10px;padding:16px 18px;background:#fbf8fd;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#8e44ad;font-weight:700;letter-spacing:1px;&amp;quot;&amp;gt;STEP 4&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:16px;font-weight:700;margin:4px 0 6px;color:#0f2b46;&amp;quot;&amp;gt;물리 설계 · 실습&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;line-height:1.6;&amp;quot;&amp;gt;Oracle DDL, 인덱스·파티션, 실전 프로젝트&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. 데이터 모델링이란 ==&lt;br /&gt;
&#039;&#039;&#039;데이터 모델링(Data Modeling)&#039;&#039;&#039;은 현실 세계의 업무(비즈니스)를 분석하여, 그 업무에 필요한 데이터를 &#039;&#039;&#039;구조화된 형태로 정의하고 표현&#039;&#039;&#039;하는 과정이다. 결과물을 &#039;&#039;&#039;데이터 모델&#039;&#039;&#039;이라 하며, 보통 &#039;&#039;&#039;ERD(Entity Relationship Diagram)&#039;&#039;&#039;로 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #2b7bb9;background:#f1f7fc;padding:14px 20px;margin:16px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;한 줄 정의&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:15px;color:#0f2b46;&amp;quot;&amp;gt;&amp;quot;업무에서 &#039;&#039;&#039;무엇을(What)&#039;&#039;&#039; 관리해야 하는지를 찾아내고, 그것들 사이의 &#039;&#039;&#039;관계&#039;&#039;&#039;를 약속된 표기법으로 그려내는 일&amp;quot;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.1 데이터 모델링의 세 가지 관점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | 관점 !! 질문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;데이터 관점&#039;&#039;&#039; || What || 업무가 어떤 데이터와 관련 있는가, 데이터 간의 관계는 무엇인가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;프로세스 관점&#039;&#039;&#039; || How || 업무가 실제로 무엇을 하는가, 무엇을 해야 하는가&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;상관 관점&#039;&#039;&#039; || Interaction || 프로세스 흐름에 따라 데이터가 어떻게 생성·변경·삭제(CRUD)되는가&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 왜 필요한가 ===&lt;br /&gt;
* &#039;&#039;&#039;의사소통 도구&#039;&#039;&#039; — 현업 담당자, 기획자, 개발자, DBA가 같은 그림을 보고 대화한다.&lt;br /&gt;
* &#039;&#039;&#039;품질 확보&#039;&#039;&#039; — 중복·불일치를 설계 단계에서 제거한다. 잘못된 모델은 이후 어떤 SQL 튜닝으로도 완전히 회복되지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;비용 절감&#039;&#039;&#039; — 설계 단계의 오류 수정 비용은 운영 단계 대비 수십 배 저렴하다.&lt;br /&gt;
* &#039;&#039;&#039;시스템 확장성&#039;&#039;&#039; — 업무 변화에 유연하게 대응할 수 있는 구조를 만든다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;DBA의 시선&#039;&#039;&#039; — 운영 중 만나는 성능 문제의 상당수는 SQL이 아니라 &#039;&#039;&#039;모델&#039;&#039;&#039;에서 시작된다. 잘못된 식별자 선정, 과도한 반정규화, 이력 관리 부재는 결국 대량 조인·락 경합·데이터 불일치로 돌아온다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3 좋은 데이터 모델의 요건 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요건 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| 완전성 (Completeness) || 업무에 필요한 데이터가 빠짐없이 정의되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 중복 배제 (Non-Redundancy) || 하나의 사실은 한 곳에만 저장된다&lt;br /&gt;
|-&lt;br /&gt;
| 업무 규칙 (Business Rules) || 업무 규칙이 모델(관계·제약)에 표현되어 있다&lt;br /&gt;
|-&lt;br /&gt;
| 데이터 재사용 (Reusability) || 특정 프로그램이 아닌 전사 관점에서 통합·재사용 가능하다&lt;br /&gt;
|-&lt;br /&gt;
| 의사소통 (Communication) || 모델만 보고도 업무를 이해할 수 있다&lt;br /&gt;
|-&lt;br /&gt;
| 통합성 (Integration) || 동일한 데이터는 조직 전체에서 한 번만 정의된다&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 데이터 모델링의 3단계 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin:16px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#eaf3fb;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#2b7bb9;font-weight:700;&amp;quot;&amp;gt;CONCEPTUAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;개념적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;핵심 엔터티와 관계 도출&amp;lt;br/&amp;gt;추상화 수준 &#039;&#039;&#039;높음&#039;&#039;&#039;&amp;lt;br/&amp;gt;전사적·업무 중심&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#e8f6f2;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#16a085;font-weight:700;&amp;quot;&amp;gt;LOGICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;논리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;속성·식별자·관계 상세화&amp;lt;br/&amp;gt;&#039;&#039;&#039;정규화&#039;&#039;&#039; 수행&amp;lt;br/&amp;gt;DBMS 독립적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:0 0 auto;align-self:center;font-size:22px;color:#9fb3c8;&amp;quot;&amp;gt;➜&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 220px;background:#f5eefa;border-radius:10px;padding:16px;text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#8e44ad;font-weight:700;&amp;quot;&amp;gt;PHYSICAL&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:17px;font-weight:700;color:#0f2b46;margin:6px 0;&amp;quot;&amp;gt;물리적 모델링&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;테이블·컬럼·인덱스·파티션&amp;lt;br/&amp;gt;&#039;&#039;&#039;반정규화&#039;&#039;&#039; · 성능 고려&amp;lt;br/&amp;gt;DBMS 종속적&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 구분 !! 개념적 !! 논리적 !! 물리적&lt;br /&gt;
|-&lt;br /&gt;
! 목적&lt;br /&gt;
| 업무 범위와 핵심 개념 합의 || 업무 규칙의 정확한 표현 || 실제 DB 구현&lt;br /&gt;
|-&lt;br /&gt;
! 주요 산출물&lt;br /&gt;
| 주제영역, 핵심 엔터티, 관계 || 전체 엔터티, 속성, PK/FK, 정규화된 ERD || 테이블, 컬럼, 데이터타입, 인덱스, DDL&lt;br /&gt;
|-&lt;br /&gt;
! 용어&lt;br /&gt;
| 엔터티 / 관계 || 엔터티 / 속성 / 식별자 || 테이블 / 컬럼 / 키 / 제약조건&lt;br /&gt;
|-&lt;br /&gt;
! 주 참여자&lt;br /&gt;
| 현업, 기획자, DA || DA, 설계자 || DBA, 개발자&lt;br /&gt;
|-&lt;br /&gt;
! DBMS 의존성&lt;br /&gt;
| 없음 || 없음 || &#039;&#039;&#039;있음&#039;&#039;&#039; (Oracle, MySQL 등)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2.1 데이터 독립성과 ANSI/SPARC 3단계 스키마 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 스키마 !! 관점 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 외부 스키마 (External) || 사용자 || 각 사용자·응용 프로그램이 보는 개인적 DB 구조 (View)&lt;br /&gt;
|-&lt;br /&gt;
| 개념 스키마 (Conceptual) || 통합 || 모든 사용자 관점을 통합한 조직 전체의 DB 구조&lt;br /&gt;
|-&lt;br /&gt;
| 내부 스키마 (Internal) || 물리 || 물리적 저장 구조 (파일, 블록, 인덱스)&lt;br /&gt;
|}&lt;br /&gt;
* &#039;&#039;&#039;논리적 독립성&#039;&#039;&#039; — 개념 스키마가 변경되어도 외부 스키마(응용)는 영향받지 않는다.&lt;br /&gt;
* &#039;&#039;&#039;물리적 독립성&#039;&#039;&#039; — 내부 스키마(저장 구조)가 변경되어도 개념 스키마는 영향받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== 3. 핵심 구성 요소 ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;margin:14px 0 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;▭&amp;lt;/div&amp;gt;&#039;&#039;&#039;엔터티&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Entity · 무엇을&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;≡&amp;lt;/div&amp;gt;&#039;&#039;&#039;속성&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Attribute · 어떤 정보를&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;⟷&amp;lt;/div&amp;gt;&#039;&#039;&#039;관계&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Relationship · 어떻게 연결&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;border:1px solid #d6e2ee;border-radius:10px;padding:14px;text-align:center;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-size:24px;&amp;quot;&amp;gt;🔑&amp;lt;/div&amp;gt;&#039;&#039;&#039;식별자&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;color:#6b7b8b;&amp;quot;&amp;gt;Identifier · 유일하게 구분&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.1 엔터티 (Entity) ===&lt;br /&gt;
업무에서 &#039;&#039;&#039;관리하고자 하는 대상&#039;&#039;&#039;으로, 두 개 이상의 인스턴스(행)와 속성을 가지는 집합이다. 예: 고객, 상품, 주문, 사원, 부서&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 조건&#039;&#039;&#039;&lt;br /&gt;
# 업무에서 필요하고 관리하고자 하는 정보여야 한다.&lt;br /&gt;
# 유일한 식별자로 구분 가능해야 한다.&lt;br /&gt;
# 두 개 이상의 인스턴스 집합이어야 한다. (1건뿐이면 엔터티가 아니다)&lt;br /&gt;
# 업무 프로세스에 의해 이용되어야 한다. (CRUD 발생)&lt;br /&gt;
# 반드시 속성을 가져야 한다.&lt;br /&gt;
# 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다. (코드·통계·로그성 예외)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;엔터티의 분류&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 기준 !! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 유무형&lt;br /&gt;
| 유형 엔터티 || 물리적 형태가 있는 대상 || 사원, 상품, 창고&lt;br /&gt;
|-&lt;br /&gt;
| 개념 엔터티 || 물리적 형태 없이 관리할 개념 || 조직, 보험상품, 계정과목&lt;br /&gt;
|-&lt;br /&gt;
| 사건 엔터티 || 업무 수행 중 발생하는 사건 || 주문, 입금, 청구&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 발생 시점&lt;br /&gt;
| 기본(키) 엔터티 || 독립적으로 생성, 고유 식별자 보유 || 고객, 상품, 부서&lt;br /&gt;
|-&lt;br /&gt;
| 중심(메인) 엔터티 || 기본 엔터티로부터 발생, 업무의 중심 || 주문, 계약, 매출&lt;br /&gt;
|-&lt;br /&gt;
| 행위 엔터티 || 둘 이상의 엔터티로부터 발생, 이력성 || 주문상세, 상태변경이력&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.2 속성 (Attribute) ===&lt;br /&gt;
엔터티가 가지는 &#039;&#039;&#039;더 이상 분리되지 않는 최소 단위의 데이터&#039;&#039;&#039;. 하나의 인스턴스에서 하나의 속성은 &#039;&#039;&#039;하나의 값&#039;&#039;&#039;만 가진다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 기본 속성 || 업무로부터 추출한 본래의 속성 || 상품명, 주문수량, 단가&lt;br /&gt;
|-&lt;br /&gt;
| 설계 속성 || 업무에 없지만 설계상 만든 속성 (코드, 일련번호) || 주문번호, 상태코드&lt;br /&gt;
|-&lt;br /&gt;
| 파생 속성 || 다른 속성으로부터 계산된 속성 (가급적 최소화) || 주문금액(=수량×단가), 합계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;도메인(Domain)&#039;&#039;&#039; — 속성이 가질 수 있는 값의 범위. 데이터타입, 길이, 허용 값, 제약을 포함한다. (예: 성별 = {M, F}, 수량 ≥ 0)&lt;br /&gt;
* &#039;&#039;&#039;속성 명명 원칙&#039;&#039;&#039; — 업무 용어 사용, 약어 지양, 서술식 금지, 모델 전체에서 유일한 이름 사용 (예: &amp;lt;code&amp;gt;등록일&amp;lt;/code&amp;gt; ✕ → &amp;lt;code&amp;gt;고객등록일자&amp;lt;/code&amp;gt; ○)&lt;br /&gt;
&lt;br /&gt;
=== 3.3 관계 (Relationship) ===&lt;br /&gt;
엔터티의 인스턴스 사이에 존재하는 &#039;&#039;&#039;논리적인 연관성&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계의 구성 요소&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 요소 !! 설명 !! 예시&lt;br /&gt;
|-&lt;br /&gt;
| 관계명 || 관계의 이름 (양방향으로 읽힘) || 고객은 주문을 &#039;&#039;한다&#039;&#039; / 주문은 고객에 의해 &#039;&#039;접수된다&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 차수 (Cardinality) || 참여하는 인스턴스의 수 || 1:1, 1:N, M:N&lt;br /&gt;
|-&lt;br /&gt;
| 관계 선택사양 (Optionality) || 필수 참여인지 선택 참여인지 || 주문은 반드시 고객이 있어야 한다 (필수)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;관계 차수 해석&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;text-align:center;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 차수 !! 의미 !! 예시 !! 구현&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : 1&#039;&#039;&#039; || 한 건이 상대 한 건과만 연결 || 사원 – 사원상세 || 한쪽에 FK(+UNIQUE) 또는 통합&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1 : N&#039;&#039;&#039; || 한 건이 상대 여러 건과 연결 || 부서 – 사원 || N쪽에 FK&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;M : N&#039;&#039;&#039; || 양쪽 모두 여러 건과 연결 || 학생 – 강좌 || &#039;&#039;&#039;관계 엔터티&#039;&#039;&#039;(수강)로 해소&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border-left:5px solid #e67e22;background:#fff6ec;padding:12px 18px;margin:14px 0;border-radius:0 8px 8px 0;&amp;quot;&amp;gt;&lt;br /&gt;
⚠ &#039;&#039;&#039;M:N 관계는 그대로 구현할 수 없다.&#039;&#039;&#039; 논리 모델 단계에서 반드시 교차(관계) 엔터티로 분해한다.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;학생 (M) ── (N) 강좌&amp;lt;/code&amp;gt; &amp;amp;nbsp;→&amp;amp;nbsp; &amp;lt;code&amp;gt;학생 (1) ── (N) 수강 (N) ── (1) 강좌&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;식별 관계 vs 비식별 관계&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 구분 !! 식별 관계 (Identifying) !! 비식별 관계 (Non-Identifying)&lt;br /&gt;
|-&lt;br /&gt;
| 정의 || 부모의 PK가 자식의 &#039;&#039;&#039;PK 일부&#039;&#039;&#039;가 됨 || 부모의 PK가 자식의 &#039;&#039;&#039;일반 속성(FK)&#039;&#039;&#039;이 됨&lt;br /&gt;
|-&lt;br /&gt;
| 표기 || 실선 || 점선&lt;br /&gt;
|-&lt;br /&gt;
| 연결 강도 || 강한 연결 (자식은 부모 없이 존재 불가) || 약한 연결&lt;br /&gt;
|-&lt;br /&gt;
| 장점 || 부모 조건으로 자식 조회 시 조인 없이 PK 인덱스 활용 || 자식의 PK가 단순, 구조 변경에 유연&lt;br /&gt;
|-&lt;br /&gt;
| 단점 || 하위로 갈수록 PK 컬럼 수 증가 (PK 비대화) || 상위 조건 조회 시 조인 증가&lt;br /&gt;
|-&lt;br /&gt;
| 예시 || 주문 → 주문상세 (주문번호+순번) || 부서 → 사원 (사원번호, 부서번호는 FK)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3.4 식별자 (Identifier) ===&lt;br /&gt;
엔터티 내에서 인스턴스를 &#039;&#039;&#039;유일하게 구분&#039;&#039;&#039;하는 속성(또는 속성 집합).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 분류 기준 !! 종류 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대표성&lt;br /&gt;
| 주식별자 (PK) || 대표 식별자. 다른 엔터티와 참조 관계 연결에 사용&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 (AK) || 유일성은 있지만 대표성이 없는 식별자 (예: 주민번호, 이메일)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 생성 여부&lt;br /&gt;
| 내부식별자 || 엔터티 내부에서 스스로 생성 (예: 고객번호)&lt;br /&gt;
|-&lt;br /&gt;
| 외부식별자 || 다른 엔터티와의 관계를 통해 상속 (FK)&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 속성 수&lt;br /&gt;
| 단일식별자 || 하나의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| 복합식별자 || 둘 이상의 속성으로 구성&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 대체 여부&lt;br /&gt;
| 본질식별자 || 업무에 의해 만들어진 식별자 (주문번호+상품코드)&lt;br /&gt;
|-&lt;br /&gt;
| 인조식별자 || 인위적으로 만든 식별자 (일련번호, 시퀀스)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;주식별자의 4가지 특징&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 유일성 !! 최소성 !! 불변성 !! 존재성&lt;br /&gt;
|-&lt;br /&gt;
| 모든 인스턴스를 유일하게 구분 || 유일성을 만족하는 최소 속성 수 || 한번 지정되면 값이 변하지 않음 || 반드시 값이 존재 (NOT NULL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;인조식별자 남용 주의&#039;&#039;&#039; — 모든 테이블에 &amp;lt;code&amp;gt;ID NUMBER&amp;lt;/code&amp;gt; 시퀀스를 PK로 두면, 본질식별자에 대한 UNIQUE 제약을 빠뜨려 &#039;&#039;&#039;중복 데이터&#039;&#039;&#039;가 쉽게 생긴다. 인조식별자를 쓰더라도 본질식별자에는 반드시 UNIQUE 인덱스를 둔다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. ERD 표기법 ==&lt;br /&gt;
=== 4.1 주요 표기법 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 표기법 !! 특징 !! 사용처&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;IE (Information Engineering)&#039;&#039;&#039; || 까마귀발(Crow&#039;s Foot)로 다(N)를 표현. 가장 널리 사용 || ERwin, DA#, 실무 대부분&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barker&#039;&#039;&#039; || Oracle 사의 표기법. 점선/실선으로 선택·필수 표현, # 식별자, * 필수, o 선택 || Oracle SQL Developer Data Modeler&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Chen&#039;&#039;&#039; || 엔터티(사각형), 관계(마름모), 속성(타원) || 교과서, 개념 설명용&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;UML Class&#039;&#039;&#039; || 클래스 다이어그램으로 데이터 표현 || 객체지향 설계&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 IE 표기법 기호 읽기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
  기호        의미&lt;br /&gt;
  ──┼──      1 (필수, 정확히 하나)&lt;br /&gt;
  ──○┼─      0 또는 1 (선택, 최대 하나)&lt;br /&gt;
  ──┼&amp;lt;       1 이상 (필수, 다수)&lt;br /&gt;
  ──○&amp;lt;       0 이상 (선택, 다수)&lt;br /&gt;
&lt;br /&gt;
  예)  [부서] ──┼────────○&amp;lt; [사원]&lt;br /&gt;
       &amp;quot;한 부서에는 0명 이상의 사원이 소속되고,&lt;br /&gt;
        한 사원은 반드시 하나의 부서에 소속된다&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 ERD 작성 순서 ===&lt;br /&gt;
# 엔터티를 도출하고 그린다. (명사 찾기)&lt;br /&gt;
# 엔터티를 적절히 배치한다. — 중요 엔터티는 좌상단, 발생 순서대로 좌→우 / 상→하&lt;br /&gt;
# 엔터티 간 관계를 설정한다.&lt;br /&gt;
# 관계명을 기술한다. (양방향)&lt;br /&gt;
# 관계 참여도(차수)를 기술한다.&lt;br /&gt;
# 관계의 필수 여부(선택사양)를 기술한다.&lt;br /&gt;
&lt;br /&gt;
== 5. 정규화 (Normalization) ==&lt;br /&gt;
정규화는 &#039;&#039;&#039;데이터의 중복을 제거&#039;&#039;&#039;하고 &#039;&#039;&#039;이상현상(Anomaly)&#039;&#039;&#039;을 방지하기 위해 함수 종속성에 근거하여 엔터티를 분해하는 과정이다.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 이상현상 (Anomaly) ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 종류 !! 설명 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| 삽입 이상 || 불필요한 데이터가 있어야만 삽입 가능 || 주문이 없으면 신규 고객을 등록할 수 없음&lt;br /&gt;
|-&lt;br /&gt;
| 갱신 이상 || 중복 데이터 일부만 변경되어 불일치 발생 || 고객 주소가 주문마다 저장되어 일부만 변경됨&lt;br /&gt;
|-&lt;br /&gt;
| 삭제 이상 || 삭제 시 필요한 데이터까지 함께 삭제 || 마지막 주문 삭제 시 고객 정보도 사라짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 함수 종속성 (Functional Dependency) ===&lt;br /&gt;
속성 X의 값이 속성 Y의 값을 유일하게 결정할 때 &#039;&#039;&#039;X → Y&#039;&#039;&#039;로 표기하며, X를 &#039;&#039;&#039;결정자&#039;&#039;&#039;, Y를 &#039;&#039;&#039;종속자&#039;&#039;&#039;라 한다.&lt;br /&gt;
* 예: &amp;lt;code&amp;gt;고객번호 → 고객명, 주소&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;완전 함수 종속&#039;&#039;&#039; — PK 전체에 종속&lt;br /&gt;
* &#039;&#039;&#039;부분 함수 종속&#039;&#039;&#039; — 복합 PK의 일부에만 종속 → 2NF 위반&lt;br /&gt;
* &#039;&#039;&#039;이행 함수 종속&#039;&#039;&#039; — A → B, B → C 이면 A → C → 3NF 위반&lt;br /&gt;
&lt;br /&gt;
=== 5.3 정규형 단계 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#2b7bb9;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;1NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;원자값 · 반복그룹 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#16a085;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;2NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;부분 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#e67e22;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;3NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;이행 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#8e44ad;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;BCNF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;모든 결정자가 후보키&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 140px;background:#7f8c8d;color:#fff;border-radius:8px;padding:12px;text-align:center;&amp;quot;&amp;gt;&#039;&#039;&#039;4NF · 5NF&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size:12px;&amp;quot;&amp;gt;다치 · 조인 종속 제거&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5.4 정규화 실습 예제 ===&lt;br /&gt;
&#039;&#039;&#039;[비정규형] 주문 정보&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#fdecea;&amp;quot;&lt;br /&gt;
! 주문번호 !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품코드 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || P01, P02 || 키보드, 마우스 || 1, 2&lt;br /&gt;
|}&lt;br /&gt;
→ 한 칸에 여러 값이 들어 있다. &#039;&#039;&#039;원자값 위반&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[1NF] 반복 그룹 제거&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf3fb;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율 !! 상품명 !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 키보드 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2026-11-01 || C01 || 김철수 || GOLD || 10% || 마우스 || 2&lt;br /&gt;
|}&lt;br /&gt;
→ PK = (주문번호, 상품코드). 그러나 주문일자·고객정보는 주문번호에만, 상품명은 상품코드에만 종속 → &#039;&#039;&#039;부분 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[2NF] 부분 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 280px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호 !! 고객명 !! 등급 !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01 || 김철수 || GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 180px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문상세&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 수량&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P01 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || P02 || 2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 상품&lt;br /&gt;
|- style=&amp;quot;background:#e8f6f2;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;상품코드&amp;lt;/u&amp;gt; !! 상품명&lt;br /&gt;
|-&lt;br /&gt;
| P01 || 키보드&lt;br /&gt;
|-&lt;br /&gt;
| P02 || 마우스&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문 테이블에서 &amp;lt;code&amp;gt;주문번호 → 고객번호 → 고객명, 등급&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;등급 → 할인율&amp;lt;/code&amp;gt; → &#039;&#039;&#039;이행 종속&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[3NF] 이행 종속 제거&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 주문&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;주문번호&amp;lt;/u&amp;gt; !! 주문일자 !! 고객번호(FK)&lt;br /&gt;
|-&lt;br /&gt;
| 1001 || 2026-11-01 || C01&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 200px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;고객번호&amp;lt;/u&amp;gt; !! 고객명 !! 등급(FK)&lt;br /&gt;
|-&lt;br /&gt;
| C01 || 김철수 || GOLD&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 160px;&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;font-size:13px;&amp;quot;&lt;br /&gt;
|+ 고객등급&lt;br /&gt;
|- style=&amp;quot;background:#fff3e6;&amp;quot;&lt;br /&gt;
! &amp;lt;u&amp;gt;등급&amp;lt;/u&amp;gt; !! 할인율&lt;br /&gt;
|-&lt;br /&gt;
| GOLD || 10%&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
→ 주문상세, 상품은 2NF 결과 그대로 유지. 최종적으로 &#039;&#039;&#039;5개 엔터티&#039;&#039;&#039;로 분해되어 각 사실이 한 곳에만 저장된다.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 정규화의 장단점 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 장점 !! 단점&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 중복 제거로 저장 공간 절약&lt;br /&gt;
* 이상현상 방지, 데이터 정합성 확보&lt;br /&gt;
* 입력·수정·삭제 성능 향상&lt;br /&gt;
* 업무 변화에 유연한 구조&lt;br /&gt;
|&lt;br /&gt;
* 테이블 수 증가&lt;br /&gt;
* 조회 시 &#039;&#039;&#039;조인 증가&#039;&#039;&#039;로 성능 저하 가능&lt;br /&gt;
* 모델이 복잡해짐&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 6. 반정규화 (Denormalization) ==&lt;br /&gt;
정규화된 모델을 &#039;&#039;&#039;조회 성능 향상&#039;&#039;&#039;과 &#039;&#039;&#039;개발·운영의 단순화&#039;&#039;&#039;를 위해 의도적으로 중복·통합·분리하는 기법이다. 반정규화는 &#039;&#039;&#039;데이터 정합성을 희생&#039;&#039;&#039;하므로 반드시 근거와 정합성 유지 방안(트리거, 배치, 애플리케이션)이 함께 있어야 한다.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 반정규화 절차 ===&lt;br /&gt;
# &#039;&#039;&#039;대상 조사&#039;&#039;&#039; — 범위 처리 빈도, 대량 범위 조회, 통계성 프로세스, 과도한 조인&lt;br /&gt;
# &#039;&#039;&#039;다른 방법 검토&#039;&#039;&#039; — 뷰(View), 클러스터링, 인덱스 조정, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, 애플리케이션 캐시, Materialized View&lt;br /&gt;
# &#039;&#039;&#039;반정규화 적용&#039;&#039;&#039; — 위 방법으로 해결되지 않을 때만&lt;br /&gt;
&lt;br /&gt;
=== 6.2 반정규화 기법 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! 대상 !! 기법 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 테이블&lt;br /&gt;
| 병합 || 1:1, 1:N 관계 테이블 통합, 슈퍼/서브타입 통합&lt;br /&gt;
|-&lt;br /&gt;
| 분할 || 수직 분할(컬럼 단위), 수평 분할(행 단위 — 파티셔닝)&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (중복 테이블) || 동일 테이블을 다른 용도로 복제&lt;br /&gt;
|-&lt;br /&gt;
| 추가 (통계·이력·부분 테이블) || 집계 테이블, 최근 데이터 테이블 등&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | 컬럼&lt;br /&gt;
| 중복 컬럼 || 조인을 줄이기 위해 다른 테이블의 컬럼을 중복 보유&lt;br /&gt;
|-&lt;br /&gt;
| 파생 컬럼 || 계산 결과를 미리 저장 (주문총액)&lt;br /&gt;
|-&lt;br /&gt;
| 이력 테이블 컬럼 || 최신여부, 시작/종료일자 추가&lt;br /&gt;
|-&lt;br /&gt;
| PK에 의한 컬럼 || 복합 의미 PK의 일부를 별도 컬럼으로&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || 중복 관계 추가 || 여러 단계를 거치는 조인 경로 단축&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #f0d9b5;background:#fffaf0;padding:12px 18px;border-radius:8px;margin:14px 0;&amp;quot;&amp;gt;&lt;br /&gt;
💡 &#039;&#039;&#039;Oracle 환경 팁&#039;&#039;&#039; — 반정규화 전에 &#039;&#039;&#039;Materialized View(+Query Rewrite)&#039;&#039;&#039;, &#039;&#039;&#039;파티셔닝&#039;&#039;&#039;, &#039;&#039;&#039;Function-Based Index&#039;&#039;&#039;, &#039;&#039;&#039;Result Cache&#039;&#039;&#039; 등 DBMS 기능으로 해결 가능한지 먼저 검토한다. 정합성 관리 부담 없이 같은 효과를 얻을 수 있는 경우가 많다.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. 고급 모델링 패턴 ==&lt;br /&gt;
=== 7.1 슈퍼타입 / 서브타입 ===&lt;br /&gt;
공통 속성을 슈퍼타입에, 개별 속성을 서브타입에 두는 구조. (예: 고객 → 개인고객 / 법인고객)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 변환 방식 !! 설명 !! 적합한 경우&lt;br /&gt;
|-&lt;br /&gt;
| One To One (개별 테이블) || 슈퍼·서브 각각 테이블 || 서브타입별 처리가 독립적, 서브타입 속성이 많음&lt;br /&gt;
|-&lt;br /&gt;
| Plus Type (서브타입 테이블) || 서브타입마다 테이블 (슈퍼 속성 포함) || 서브타입 단위 처리가 대부분&lt;br /&gt;
|-&lt;br /&gt;
| Single Type (통합 테이블) || 하나의 테이블로 통합 + 구분 컬럼 || 데이터 양이 적고 통합 처리가 많음&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 7.2 이력 관리 모델 ===&lt;br /&gt;
* &#039;&#039;&#039;시점 이력&#039;&#039;&#039; — 변경 발생 시점만 기록 (변경일자)&lt;br /&gt;
* &#039;&#039;&#039;선분 이력&#039;&#039;&#039; — 유효 시작일자 ~ 종료일자로 기간 관리 (예: &amp;lt;code&amp;gt;9999-12-31&amp;lt;/code&amp;gt;을 현재 유효 데이터로 사용)&lt;br /&gt;
* &#039;&#039;&#039;스냅샷&#039;&#039;&#039; — 일/월 단위 전체 상태 저장&lt;br /&gt;
&lt;br /&gt;
=== 7.3 코드 설계 ===&lt;br /&gt;
* &#039;&#039;&#039;통합 코드 테이블&#039;&#039;&#039;(공통코드: 코드그룹 + 코드값) vs &#039;&#039;&#039;개별 코드 테이블&#039;&#039;&#039; — 통합은 관리 편리, 개별은 FK 무결성 보장&lt;br /&gt;
* 자주 바뀌지 않고 속성이 단순한 코드는 통합, 속성이 많거나 참조 무결성이 중요한 코드는 개별 테이블&lt;br /&gt;
&lt;br /&gt;
=== 7.4 순환 관계 (Recursive) ===&lt;br /&gt;
자기 자신을 참조하는 관계. 조직도, 메뉴 트리, BOM 등에 사용. Oracle에서는 &amp;lt;code&amp;gt;CONNECT BY&amp;lt;/code&amp;gt; 또는 재귀 WITH로 조회한다.&lt;br /&gt;
&lt;br /&gt;
== 8. 물리 모델링 (Oracle 기준) ==&lt;br /&gt;
=== 8.1 논리 → 물리 변환 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 논리 모델 !! 물리 모델 !! Oracle 구현&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || 테이블 || &amp;lt;code&amp;gt;CREATE TABLE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || 컬럼 || &amp;lt;code&amp;gt;VARCHAR2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NUMBER&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Key || &amp;lt;code&amp;gt;CONSTRAINT ... PRIMARY KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 보조식별자 || Unique Key || &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Foreign Key || &amp;lt;code&amp;gt;REFERENCES&amp;lt;/code&amp;gt; (+ FK 컬럼 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || 데이터타입 + 제약 || &amp;lt;code&amp;gt;CHECK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFAULT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 8.2 예제 DDL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 고객&lt;br /&gt;
CREATE TABLE TB_CUSTOMER (&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    CUST_NM        VARCHAR2(100)  NOT NULL,&lt;br /&gt;
    EMAIL          VARCHAR2(200),&lt;br /&gt;
    GRADE_CD       VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    REG_DT         DATE           DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUST_NO),&lt;br /&gt;
    CONSTRAINT UK_CUSTOMER_EMAIL UNIQUE (EMAIL),&lt;br /&gt;
    CONSTRAINT FK_CUSTOMER_GRADE FOREIGN KEY (GRADE_CD)&lt;br /&gt;
        REFERENCES TB_CUST_GRADE (GRADE_CD)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
-- 주문 (월별 Range 파티션)&lt;br /&gt;
CREATE TABLE TB_ORDER (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ORDER_DT       DATE           NOT NULL,&lt;br /&gt;
    CUST_NO        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_STAT_CD  VARCHAR2(2)    DEFAULT &#039;10&#039; NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER PRIMARY KEY (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_CUST FOREIGN KEY (CUST_NO)&lt;br /&gt;
        REFERENCES TB_CUSTOMER (CUST_NO),&lt;br /&gt;
    CONSTRAINT CK_ORDER_STAT CHECK (ORDER_STAT_CD IN (&#039;10&#039;,&#039;20&#039;,&#039;30&#039;,&#039;90&#039;))&lt;br /&gt;
)&lt;br /&gt;
PARTITION BY RANGE (ORDER_DT) INTERVAL (NUMTOYMINTERVAL(1,&#039;MONTH&#039;))&lt;br /&gt;
( PARTITION P_202601 VALUES LESS THAN (DATE &#039;2026-02-01&#039;) );&lt;br /&gt;
&lt;br /&gt;
-- FK 컬럼 인덱스 (부모 삭제·변경 시 Lock 경합 방지)&lt;br /&gt;
CREATE INDEX IX_ORDER_01 ON TB_ORDER (CUST_NO, ORDER_DT) LOCAL;&lt;br /&gt;
&lt;br /&gt;
-- 주문상세 (식별 관계: 주문번호 + 순번)&lt;br /&gt;
CREATE TABLE TB_ORDER_ITEM (&lt;br /&gt;
    ORDER_NO       VARCHAR2(20)   NOT NULL,&lt;br /&gt;
    ITEM_SEQ       NUMBER(5)      NOT NULL,&lt;br /&gt;
    PROD_CD        VARCHAR2(10)   NOT NULL,&lt;br /&gt;
    ORDER_QTY      NUMBER(7)      NOT NULL,&lt;br /&gt;
    UNIT_PRICE     NUMBER(12,2)   NOT NULL,&lt;br /&gt;
    CONSTRAINT PK_ORDER_ITEM PRIMARY KEY (ORDER_NO, ITEM_SEQ),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_ORDER FOREIGN KEY (ORDER_NO)&lt;br /&gt;
        REFERENCES TB_ORDER (ORDER_NO),&lt;br /&gt;
    CONSTRAINT FK_ORDER_ITEM_PROD FOREIGN KEY (PROD_CD)&lt;br /&gt;
        REFERENCES TB_PRODUCT (PROD_CD),&lt;br /&gt;
    CONSTRAINT CK_ORDER_ITEM_QTY CHECK (ORDER_QTY &amp;gt; 0)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE  TB_ORDER_ITEM           IS &#039;주문상세&#039;;&lt;br /&gt;
COMMENT ON COLUMN TB_ORDER_ITEM.ITEM_SEQ  IS &#039;주문상세순번&#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8.3 물리 설계 체크포인트 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 항목 !! 확인 내용&lt;br /&gt;
|-&lt;br /&gt;
| 데이터타입 || 날짜는 &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;로 (문자 &#039;YYYYMMDD&#039; 지양), 조인 컬럼 간 &#039;&#039;&#039;타입·길이 일치&#039;&#039;&#039;로 묵시적 형변환 방지&lt;br /&gt;
|-&lt;br /&gt;
| NULL 허용 || 필수 속성은 &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt;. NULL은 인덱스(B-Tree) 미저장, 집계·비교 결과에 영향&lt;br /&gt;
|-&lt;br /&gt;
| 인덱스 || PK/UK 자동 생성, &#039;&#039;&#039;FK 컬럼 인덱스&#039;&#039;&#039; 필수 검토, 조회 패턴 기반 결합 인덱스 순서 결정&lt;br /&gt;
|-&lt;br /&gt;
| 파티셔닝 || 대용량 이력·트랜잭션 테이블은 Range/Interval, 분산 목적은 Hash, 코드성 분리는 List&lt;br /&gt;
|-&lt;br /&gt;
| 명명 규칙 || 테이블 &amp;lt;code&amp;gt;TB_&amp;lt;/code&amp;gt;, PK &amp;lt;code&amp;gt;PK_&amp;lt;/code&amp;gt;, FK &amp;lt;code&amp;gt;FK_&amp;lt;/code&amp;gt;, 인덱스 &amp;lt;code&amp;gt;IX_&amp;lt;/code&amp;gt; 등 표준 수립 및 &#039;&#039;&#039;표준 단어 사전&#039;&#039;&#039; 운영&lt;br /&gt;
|-&lt;br /&gt;
| 주석 || 모든 테이블·컬럼에 &amp;lt;code&amp;gt;COMMENT&amp;lt;/code&amp;gt; 등록 (메타데이터 = 모델과 DB의 동기화)&lt;br /&gt;
|-&lt;br /&gt;
| 용량 산정 || 초기 건수, 일 증가량, 보존 기간으로 테이블스페이스·파티션 전략 수립&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. 실전 예제 — 쇼핑몰 주문 모델 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────┐         ┌──────────────┐&lt;br /&gt;
 │  고객등급     │         │   상품분류    │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 등급코드    │         │ # 분류코드    │&lt;br /&gt;
 │ * 등급명      │         │ * 분류명      │&lt;br /&gt;
 │ * 할인율      │         │ o 상위분류코드 │──┐ (순환)&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘◄─┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
        │                        │&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐         ┌──────┴───────┐&lt;br /&gt;
 │    고객       │         │    상품       │&lt;br /&gt;
 │──────────────│         │──────────────│&lt;br /&gt;
 │ # 고객번호    │         │ # 상품코드    │&lt;br /&gt;
 │ * 고객명      │         │ * 상품명      │&lt;br /&gt;
 │ o 이메일      │         │ * 판매단가    │&lt;br /&gt;
 └──────┬───────┘         └──────┬───────┘&lt;br /&gt;
        │1                       │1&lt;br /&gt;
       ○&amp;lt;N                      ○&amp;lt;N&lt;br /&gt;
 ┌──────┴───────┐  1   1&amp;lt;  ┌─────┴────────┐&lt;br /&gt;
 │    주문       │─────────│   주문상세    │&lt;br /&gt;
 │──────────────│  (식별)  │──────────────│&lt;br /&gt;
 │ # 주문번호    │          │ # 주문번호(FK)│&lt;br /&gt;
 │ * 주문일자    │          │ # 순번        │&lt;br /&gt;
 │ * 고객번호(FK)│          │ * 상품코드(FK)│&lt;br /&gt;
 │ * 주문상태    │          │ * 수량 / 단가 │&lt;br /&gt;
 └──────────────┘          └──────────────┘&lt;br /&gt;
&lt;br /&gt;
  # 식별자   * 필수 속성   o 선택 속성&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;읽는 법&#039;&#039;&#039;&lt;br /&gt;
* 한 고객은 주문을 0건 이상 할 수 있고, 한 주문은 반드시 한 고객에 의해 발생한다.&lt;br /&gt;
* 한 주문은 1건 이상의 주문상세를 가지며, 주문상세는 주문 없이 존재할 수 없다. (식별 관계)&lt;br /&gt;
* 상품분류는 자기 자신을 참조하는 순환 관계로 다단계 분류를 표현한다.&lt;br /&gt;
&lt;br /&gt;
== 10. 학습 커리큘럼 (12주) ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#f6f9fc;border:1px solid #d6e2ee;border-radius:10px;padding:14px 20px;margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;학습 대상&#039;&#039;&#039; 데이터베이스와 SQL 기초를 알고 있는 개발자·기획자·신입 DBA &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;주당 학습&#039;&#039;&#039; 이론 3시간 + 실습 3시간 &amp;amp;nbsp;|&amp;amp;nbsp; &#039;&#039;&#039;목표&#039;&#039;&#039; 중소 규모 업무의 논리·물리 모델을 독립적으로 설계&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#0f2b46;color:#fff;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:9%;&amp;quot; | 주차 !! style=&amp;quot;width:14%;&amp;quot; | 단계 !! style=&amp;quot;width:30%;&amp;quot; | 학습 주제 !! 세부 내용 !! style=&amp;quot;width:20%;&amp;quot; | 실습 / 산출물&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;1&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#eaf3fb;text-align:center;&amp;quot; | &#039;&#039;&#039;기초&#039;&#039;&#039;&amp;lt;br/&amp;gt;개념 이해&lt;br /&gt;
| 데이터베이스와 모델링 개요 || 데이터·정보·DB·DBMS, 관계형 모델, 모델링의 정의와 필요성, 3가지 관점 || 학습 환경 구성 (Oracle Free / ERD 툴)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
| 모델링 3단계와 스키마 || 개념·논리·물리 모델, ANSI/SPARC 3단계 스키마, 데이터 독립성 || 기존 시스템 ERD 읽기 연습&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;3&#039;&#039;&#039; || rowspan=&amp;quot;4&amp;quot; style=&amp;quot;background:#e8f6f2;text-align:center;&amp;quot; | &#039;&#039;&#039;핵심&#039;&#039;&#039;&amp;lt;br/&amp;gt;구성 요소&lt;br /&gt;
| 엔터티 || 엔터티 조건·분류, 명명 규칙, 업무 기술서에서 명사 추출 || 도서관 업무 엔터티 도출&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;4&#039;&#039;&#039;&lt;br /&gt;
| 속성과 도메인 || 기본·설계·파생 속성, 도메인 정의, 표준 용어·단어 사전 || 속성 정의서 작성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;5&#039;&#039;&#039;&lt;br /&gt;
| 관계 || 관계명, 차수, 선택사양, M:N 해소, 식별/비식별 관계 || 관계 설정 및 ERD 1차본&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;6&#039;&#039;&#039;&lt;br /&gt;
| 식별자 &amp;amp; ERD 표기법 || 주식별자 4대 특성, 본질 vs 인조식별자, IE/Barker 표기법 || ERD 툴로 논리 모델 완성&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;7&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#fff3e6;text-align:center;&amp;quot; | &#039;&#039;&#039;심화&#039;&#039;&#039;&amp;lt;br/&amp;gt;정규화&lt;br /&gt;
| 함수 종속성과 정규화 || 이상현상, 함수 종속, 1NF ~ 3NF, BCNF || 비정규 장표 → 3NF 분해&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;8&#039;&#039;&#039;&lt;br /&gt;
| 반정규화 || 반정규화 절차와 기법, 대안(MV, 파티션, 인덱스) 검토 || 성능 요구 기반 반정규화 판단 보고서&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;9&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f5eefa;text-align:center;&amp;quot; | &#039;&#039;&#039;응용&#039;&#039;&#039;&amp;lt;br/&amp;gt;패턴·물리&lt;br /&gt;
| 고급 모델링 패턴 || 슈퍼/서브타입, 이력 모델, 코드 설계, 순환 관계 || 이력 관리 모델 설계&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;10&#039;&#039;&#039;&lt;br /&gt;
| 물리 모델링 (Oracle) || 데이터타입, 제약조건, 인덱스 설계, 파티셔닝, 용량 산정, DDL 생성 || 물리 모델 &amp;amp; DDL 스크립트&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;11&#039;&#039;&#039; || rowspan=&amp;quot;2&amp;quot; style=&amp;quot;background:#f0f2f4;text-align:center;&amp;quot; | &#039;&#039;&#039;실전&#039;&#039;&#039;&amp;lt;br/&amp;gt;프로젝트&lt;br /&gt;
| 미니 프로젝트 ① || 요구사항 분석 → 개념 → 논리 모델 (쇼핑몰 / 수강신청 / 병원예약 중 택1) || 요구사항 정의서, 논리 ERD&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | &#039;&#039;&#039;12&#039;&#039;&#039;&lt;br /&gt;
| 미니 프로젝트 ② &amp;amp; 리뷰 || 물리 모델, DDL 생성, 샘플 데이터 적재, 핵심 SQL 검증, 모델 리뷰 || 최종 ERD · DDL · 리뷰 발표&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.1 단계별 학습 목표 ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;gap:12px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟦 1~2주 · 기초&#039;&#039;&#039;&lt;br /&gt;
* 모델링의 목적을 설명할 수 있다&lt;br /&gt;
* 3단계 모델의 차이를 구분한다&lt;br /&gt;
* 기존 ERD를 읽고 해석한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟩 3~6주 · 핵심&#039;&#039;&#039;&lt;br /&gt;
* 업무 기술서에서 엔터티·속성을 도출한다&lt;br /&gt;
* 관계 차수와 선택사양을 정확히 표기한다&lt;br /&gt;
* 적절한 주식별자를 선정한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟧 7~8주 · 심화&#039;&#039;&#039;&lt;br /&gt;
* 이상현상을 찾아 정규화로 해소한다&lt;br /&gt;
* 3NF까지 스스로 분해한다&lt;br /&gt;
* 반정규화의 필요성을 근거로 판단한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1 1 240px;border:1px solid #d6e2ee;border-radius:10px;padding:14px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;🟪 9~12주 · 응용·실전&#039;&#039;&#039;&lt;br /&gt;
* 이력·코드·슈퍼타입 패턴을 적용한다&lt;br /&gt;
* Oracle 물리 모델과 DDL을 작성한다&lt;br /&gt;
* 요구사항부터 DB 구현까지 완주한다&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10.2 추천 도구 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용도 !! 도구 !! 비고&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 || ERwin Data Modeler, DA# || 국내 실무 표준&lt;br /&gt;
|-&lt;br /&gt;
| ERD 설계 (무료) || Oracle SQL Developer Data Modeler, ERDCloud, draw.io || Data Modeler는 Barker/IE 모두 지원, DDL 생성 가능&lt;br /&gt;
|-&lt;br /&gt;
| 실습 DB || Oracle Database 23ai Free, Oracle Live SQL || 로컬 설치 또는 웹 실습&lt;br /&gt;
|-&lt;br /&gt;
| 문서화 || 엔터티 정의서, 속성 정의서, 표준 단어/용어 사전 (Excel) || 산출물 템플릿 별도 제공 예정&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10.3 연계 자격증 ===&lt;br /&gt;
* &#039;&#039;&#039;SQLD&#039;&#039;&#039; (SQL 개발자) — 1과목 &#039;데이터 모델링의 이해&#039;가 본 과정 1~8주 내용과 직결&lt;br /&gt;
* &#039;&#039;&#039;SQLP&#039;&#039;&#039; (SQL 전문가) — 모델링 + 고급 SQL 활용·튜닝&lt;br /&gt;
* &#039;&#039;&#039;DAsP / DAP&#039;&#039;&#039; (데이터아키텍처 준전문가 / 전문가) — 본격적인 데이터 아키텍트 과정&lt;br /&gt;
&lt;br /&gt;
== 11. 모델 검증 체크리스트 ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible&amp;quot; style=&amp;quot;border:1px solid #d6e2ee;border-radius:10px;padding:12px 18px;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;✅ 모델 리뷰 시 반드시 확인할 항목 (펼치기)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;margin-top:10px;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 영역 !! 점검 항목&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 엔터티&lt;br /&gt;
| □ 모든 엔터티가 업무 용어로 명명되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인스턴스가 1건뿐이거나 속성이 없는 엔터티는 없는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계가 없는 고립 엔터티에 타당한 이유가 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 속성&lt;br /&gt;
| □ 하나의 속성에 여러 값(콤마 구분 등)이 저장되지 않는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 같은 의미의 속성이 다른 이름으로 존재하지 않는가 (표준 용어)&lt;br /&gt;
|-&lt;br /&gt;
| □ 파생 속성은 근거와 정합성 유지 방안이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 관계&lt;br /&gt;
| □ M:N 관계가 모두 해소되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 관계의 차수·선택사양이 업무 규칙과 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | 식별자&lt;br /&gt;
| □ 주식별자가 유일성·최소성·불변성·존재성을 만족하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 인조식별자 사용 시 본질식별자에 UNIQUE 제약이 있는가&lt;br /&gt;
|-&lt;br /&gt;
| 정규화&lt;br /&gt;
| □ 최소 3NF를 만족하며, 위반 시 반정규화 근거가 문서화되었는가&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | 물리&lt;br /&gt;
| □ 조인 컬럼의 데이터타입·길이가 일치하는가&lt;br /&gt;
|-&lt;br /&gt;
| □ FK 컬럼에 인덱스가 검토되었는가&lt;br /&gt;
|-&lt;br /&gt;
| □ 대용량 테이블의 파티션·보존 정책이 정의되었는가&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eaf1f8;&amp;quot;&lt;br /&gt;
! 용어 !! 영문 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 엔터티 || Entity || 업무에서 관리해야 할 대상의 집합&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 || Instance || 엔터티의 개별 데이터 한 건 (행)&lt;br /&gt;
|-&lt;br /&gt;
| 속성 || Attribute || 엔터티를 구성하는 최소 단위의 정보&lt;br /&gt;
|-&lt;br /&gt;
| 도메인 || Domain || 속성이 가질 수 있는 값의 범위&lt;br /&gt;
|-&lt;br /&gt;
| 관계 || Relationship || 엔터티 인스턴스 간의 논리적 연관성&lt;br /&gt;
|-&lt;br /&gt;
| 카디널리티 || Cardinality || 관계에 참여하는 인스턴스 수 (1:1, 1:N, M:N)&lt;br /&gt;
|-&lt;br /&gt;
| 옵셔널리티 || Optionality || 관계 참여의 필수/선택 여부&lt;br /&gt;
|-&lt;br /&gt;
| 주식별자 || Primary Identifier (PK) || 인스턴스를 유일하게 식별하는 대표 키&lt;br /&gt;
|-&lt;br /&gt;
| 외래키 || Foreign Key (FK) || 다른 엔터티의 PK를 참조하는 속성&lt;br /&gt;
|-&lt;br /&gt;
| 후보키 || Candidate Key || 유일성과 최소성을 만족하는 키&lt;br /&gt;
|-&lt;br /&gt;
| 함수 종속 || Functional Dependency || X 값이 Y 값을 유일하게 결정하는 관계&lt;br /&gt;
|-&lt;br /&gt;
| 정규화 || Normalization || 중복 제거를 위한 엔터티 분해 과정&lt;br /&gt;
|-&lt;br /&gt;
| 반정규화 || Denormalization || 성능을 위한 의도적 중복·통합·분리&lt;br /&gt;
|-&lt;br /&gt;
| ERD || Entity Relationship Diagram || 엔터티와 관계를 그림으로 표현한 모델&lt;br /&gt;
|-&lt;br /&gt;
| 메타데이터 || Metadata || 데이터에 대한 데이터 (정의서, 주석, 사전)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 참고 자료 ==&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;데이터아키텍처 전문가 가이드 (DAP 가이드)&#039;&#039;&lt;br /&gt;
* 한국데이터산업진흥원, &#039;&#039;SQL 전문가 가이드&#039;&#039; — 1과목 데이터 모델링의 이해&lt;br /&gt;
* Oracle, &#039;&#039;SQL Developer Data Modeler User&#039;s Guide&#039;&#039;&lt;br /&gt;
* Oracle, &#039;&#039;Database Concepts 19c&#039;&#039; — Tables and Table Clusters, Indexes, Partitions&lt;br /&gt;
* E. F. Codd, &amp;quot;A Relational Model of Data for Large Shared Data Banks&amp;quot; (1970)&lt;br /&gt;
* P. Chen, &amp;quot;The Entity-Relationship Model — Toward a Unified View of Data&amp;quot; (1976)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:30px;padding:14px 20px;border-top:3px solid #0f2b46;background:#f6f9fc;border-radius:0 0 10px 10px;font-size:13px;color:#4a5a6a;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;다음 학습&#039;&#039;&#039; → [[데이터 모델링 정규화 심화]] · [[데이터 모델링 ERD작성 실습]] · [[Oracle 물리 설계]] · [[SQLD 데이터모델링 기출 정리]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[분류:데이터 모델링]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=2025</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=2025"/>
		<updated>2026-11-04T05:16:53Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 위키테이블 다크 모드 선택자 범위 수정&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 이 CSS 설정은 모든 스킨에 적용됩니다 */&lt;br /&gt;
/* 나눔고딕 미설치 컴에도 나눔고딕을 사용할 수 있게 함 구글 폰트에서 퍼옴 */&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 400;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 800;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
* { font-family: &#039;Nanum Gothic&#039;, sans-serif; }/*모든 글꼴을 나눔고딕으로. */&lt;br /&gt;
&lt;br /&gt;
body.page-대문 h1.firstHeading {display:none;}&lt;br /&gt;
ol { &lt;br /&gt;
	margin-left: 2cm;&lt;br /&gt;
list-style-type: decimal; &lt;br /&gt;
}&lt;br /&gt;
img {&lt;br /&gt;
          display: block;&lt;br /&gt;
          margin: 0 auto;&lt;br /&gt;
          max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
      &lt;br /&gt;
/* .tocnumber:after { content: &#039;.&#039; }*/&lt;br /&gt;
&lt;br /&gt;
/* 반응형 그리드 레이아웃 */&lt;br /&gt;
.responsive-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));&lt;br /&gt;
    gap: 20px;&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 반응형 이미지 */&lt;br /&gt;
.responsive-image {&lt;br /&gt;
        display: block;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-img {&lt;br /&gt;
    width: 100%; /* 부모 요소의 너비에 맞게 조정 */&lt;br /&gt;
    height: 600px; /* 원하는 높이 설정 */&lt;br /&gt;
    background-size: cover; /* 이미지가 div를 채우도록 조정 */&lt;br /&gt;
    background-position: center; /* 이미지의 중심을 기준으로 위치 조정 */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 모바일 환경에서의 텍스트 정렬 */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .main-page-intro {&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 데스크탑에서는 그리드 레이아웃 사용 */&lt;br /&gt;
@media (min-width: 769px) {&lt;br /&gt;
    .main-page-intro {&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 목차(TOC)에 넘버링 추가 */&lt;br /&gt;
#toc ul {&lt;br /&gt;
  counter-reset: item;&lt;br /&gt;
}&lt;br /&gt;
#toc li {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
#toc li:before {&lt;br /&gt;
  content: counters(item, &amp;quot;.&amp;quot;) &amp;quot;. &amp;quot;;&lt;br /&gt;
  counter-increment: item;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 문서 섹션 제목(h2~h6)에 넘버링 추가 &lt;br /&gt;
.mw-headline {&lt;br /&gt;
  counter-reset: subsection;&lt;br /&gt;
}&lt;br /&gt;
h2 .mw-headline:before {&lt;br /&gt;
  counter-increment: section;&lt;br /&gt;
  content: counter(section) &amp;quot;. &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
h3 .mw-headline:before {&lt;br /&gt;
  counter-increment: subsection;&lt;br /&gt;
  content: counter(section) &amp;quot;.&amp;quot; counter(subsection) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* 미디어위키 본문 영역 전체의 카운터 초기화 */&lt;br /&gt;
.mw-parser-output {&lt;br /&gt;
    counter-reset: h1-counter;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1단계 제목 (h2) 넘버링 */&lt;br /&gt;
.mw-parser-output h2 {&lt;br /&gt;
    counter-reset: h2-counter;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output h2 .mw-headline::before {&lt;br /&gt;
    counter-increment: h1-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;. &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 2단계 소제목 (h3) 넘버링 */&lt;br /&gt;
.mw-parser-output h3 {&lt;br /&gt;
    counter-reset: h3-counter;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output h3 .mw-headline::before {&lt;br /&gt;
    counter-increment: h2-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;.&amp;quot; counter(h2-counter) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 3단계 소제목 (h4) 넘버링 */&lt;br /&gt;
.mw-parser-output h4 .mw-headline::before {&lt;br /&gt;
    counter-increment: h3-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;.&amp;quot; counter(h2-counter) &amp;quot;.&amp;quot; counter(h3-counter) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 나만의 모던 심플 그레이 위키 테이블 */&lt;br /&gt;
.tb_gray {&lt;br /&gt;
    border-collapse: collapse !important;&lt;br /&gt;
    border: 1px solid #e0e0e0 !important;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
/* 타이틀 행 (중앙 정렬 + 은은한 회색 배경) */&lt;br /&gt;
.tb_gray th {&lt;br /&gt;
    background-color: #f5f5f5 !important;&lt;br /&gt;
    border-bottom: 2px solid #cccccc !important;&lt;br /&gt;
    border-right: 1px solid #e0e0e0 !important;&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
/* 첫 번째 컬럼 (진한 강조 회색, 왼쪽 정렬) */&lt;br /&gt;
.tb_gray td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: #fafafa !important;&lt;br /&gt;
    border-right: 1px solid #e0e0e0 !important;&lt;br /&gt;
    text-align: left !important;&lt;br /&gt;
}&lt;br /&gt;
/* 일반 본문 셀 */&lt;br /&gt;
.tb_gray td {&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    border-bottom: 1px solid #f0f0f0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 나만의 심플한 커스텀 위키 테이블 */&lt;br /&gt;
.tb_blue {&lt;br /&gt;
    border-collapse: collapse !important;&lt;br /&gt;
    border: 1px solid #dcdcdc !important;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
/* 타이틀 행 (중앙 정렬 + 하늘색 배경) */&lt;br /&gt;
.tb_blue th {&lt;br /&gt;
    background-color: #e6f2ff !important;&lt;br /&gt;
    border-bottom: 2px solid #b0d4ff !important;&lt;br /&gt;
    border-right: 1px solid #dcdcdc !important;&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
/* 첫 번째 컬럼 (진한 강조 색상, 왼쪽 정렬) */&lt;br /&gt;
.tb_blue td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: #f2f7fc !important;&lt;br /&gt;
    border-right: 1px solid #dcdcdc !important;&lt;br /&gt;
    text-align: left !important;&lt;br /&gt;
}&lt;br /&gt;
/* 일반 본문 셀 */&lt;br /&gt;
.tb_blue td {&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    border-bottom: 1px solid #eee !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* DB Study main page design, scoped to #ds-home only. */&lt;br /&gt;
&lt;br /&gt;
#ds-home{--ds-bg:#fafbf8;--ds-ink:#20382e;--ds-muted:#6c7b72;--ds-line:#dde4dc;--ds-green:#256448;--ds-soft:#eef3eb;--ds-white:#fff;display:block;background:var(--ds-bg);color:var(--ds-ink);font:15px/1.65 -apple-system,BlinkMacSystemFont,&#039;Apple SD Gothic Neo&#039;,&#039;Malgun Gothic&#039;,sans-serif;letter-spacing:-.025em;min-height:100vh;isolation:isolate}&lt;br /&gt;
#ds-home *,#ds-home *::before,#ds-home *::after{box-sizing:border-box}#ds-home h1,#ds-home h2,#ds-home h3,#ds-home p,#ds-home ul{margin:0;padding:0;border:0;font-family:inherit}#ds-home h1,#ds-home h2,#ds-home h3{color:var(--ds-ink)}#ds-home a{color:inherit;text-decoration:none;background:none}#ds-home a::after{display:none}#ds-home button,#ds-home input{font:inherit;letter-spacing:inherit}#ds-home button{cursor:pointer;color:inherit}#ds-home button::after{display:none}#ds-home a:focus-visible,#ds-home button:focus-visible,#ds-home input:focus-visible{outline:3px solid #7ba58d;outline-offset:5px}#ds-home [hidden]{display:none!important}#ds-home .ds-wrap{max-width:1180px;padding:0 44px;margin:auto}#ds-home .ds-header{border-bottom:1px solid var(--ds-line);background:var(--ds-white)}#ds-home .ds-header-inner{height:84px;display:flex;align-items:center;justify-content:space-between;gap:26px}#ds-home .ds-brand{display:flex;align-items:center;gap:13px;white-space:nowrap}#ds-home .ds-brand-mark{width:34px;height:38px;color:var(--ds-green)}#ds-home .ds-brand strong{display:block;font-size:21px;line-height:1.2;letter-spacing:-.04em}#ds-home .ds-brand small{display:block;font-size:10px;color:var(--ds-muted);letter-spacing:.1em;margin-top:4px}#ds-home .ds-nav{display:flex;gap:29px;align-items:center;font-size:13px;font-weight:600}#ds-home .ds-nav a:hover{color:var(--ds-green)}#ds-home .ds-edit{border:1px solid var(--ds-line);padding:8px 14px;border-radius:5px;font-size:12px}#ds-home .ds-hero{padding:64px 0 42px;display:grid;grid-template-columns:1.4fr 1fr;gap:58px;align-items:center}#ds-home .ds-overline{display:block;font-size:11px;font-weight:600;letter-spacing:.09em;color:var(--ds-green)}#ds-home .ds-hero h1{font-size:47px;line-height:1.28;font-weight:700;letter-spacing:-.055em;margin:17px 0 21px;word-break:keep-all}#ds-home .ds-hero h1 em{font-style:normal;color:var(--ds-green)}#ds-home .ds-intro{font-size:15px;line-height:1.85;color:var(--ds-muted);word-break:keep-all}#ds-home .ds-actions{display:flex;gap:10px;margin-top:27px;flex-wrap:wrap}#ds-home .ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:19px;padding:11px 18px;border:1px solid var(--ds-line);background:var(--ds-white);border-radius:5px;font-size:13px;font-weight:600;min-height:45px}#ds-home .ds-btn-primary{background:var(--ds-green);border-color:var(--ds-green);color:#fff}#ds-home .ds-btn:hover{border-color:var(--ds-green)}#ds-home .ds-question{background:var(--ds-soft);border:1px solid #dce5d6;border-radius:10px;padding:28px 30px;position:relative}#ds-home .ds-question-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--ds-muted)}#ds-home .ds-question h2{font-size:23px;line-height:1.5;letter-spacing:-.04em;margin:17px 0 22px;font-weight:600;word-break:keep-all}#ds-home .ds-question .ds-diagram{display:grid;grid-template-columns:1fr 1fr;gap:18px;border-top:1px solid #d5dfcf;border-bottom:1px solid #d5dfcf;padding:20px 0;margin-bottom:18px}#ds-home .ds-blocks{display:grid;grid-template-columns:repeat(10,1fr);gap:3px;margin-bottom:10px}#ds-home .ds-blocks span{display:block;aspect-ratio:1;background:#d7e0d1;border-radius:2px}#ds-home .ds-blocks span.ds-active{background:#4e7d5e}#ds-home .ds-diagram strong{font-size:11px;font-weight:600}#ds-home .ds-diagram small{display:block;color:var(--ds-muted);font-size:10px;margin-top:2px}#ds-home .ds-question-link{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;gap:12px;color:var(--ds-green)}#ds-home .ds-search-zone{padding:0 0 40px}#ds-home .ds-search-row{display:flex;align-items:center;gap:24px;border:1px solid var(--ds-line);background:var(--ds-white);padding:13px 18px;border-radius:7px;position:relative}#ds-home .ds-search-icon{width:20px;height:20px;color:var(--ds-muted);flex:none}#ds-home .ds-search-row input{min-width:0;flex:1;border:0!important;background:transparent!important;color:var(--ds-ink);outline:0!important;box-shadow:none!important;padding:3px 0;width:100%;font-size:13px}#ds-home .ds-search-row button{border:0;background:var(--ds-soft);border-radius:4px;font-size:12px;padding:6px 15px;flex:none}#ds-home .ds-search-help{display:flex;justify-content:space-between;gap:15px;padding:10px 4px 0;font-size:11px;color:var(--ds-muted)}#ds-home .ds-quick{display:flex;gap:13px;flex-wrap:wrap}#ds-home .ds-quick a:hover{color:var(--ds-green)}#ds-home .ds-results{list-style:none;border:1px solid var(--ds-line);border-top:0;background:var(--ds-white);padding:8px 14px;border-radius:0 0 6px 6px;margin:0!important}#ds-home .ds-results a{display:block;font-size:13px;padding:8px 5px;color:var(--ds-green)}#ds-home .ds-results p{font-size:12px;color:var(--ds-muted);padding:10px 5px}#ds-home .ds-section{padding:34px 0 40px;border-top:1px solid var(--ds-line);scroll-margin-top:22px}#ds-home .ds-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}#ds-home .ds-section h2{font-size:25px;line-height:1.4;letter-spacing:-.045em;font-weight:650}#ds-home .ds-section-sub{font-size:13px;color:var(--ds-muted);margin-top:6px}#ds-home .ds-tabs{display:flex;gap:4px;border:1px solid var(--ds-line);background:#f0f3ed;padding:4px;border-radius:6px;flex-shrink:0}#ds-home .ds-tabs button{border:0;border-radius:4px;padding:8px 15px;font-size:12px;background:transparent;color:var(--ds-muted)}#ds-home .ds-tabs button[aria-selected=true]{background:var(--ds-white);color:var(--ds-green);font-weight:700}#ds-home .ds-guide{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px;font-size:12px;color:var(--ds-muted)}#ds-home .ds-guide strong{color:var(--ds-green);font-weight:500}#ds-home .ds-step-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}#ds-home .ds-step{padding:21px 20px;border:1px solid var(--ds-line);border-radius:7px;background:var(--ds-white);display:flex;flex-direction:column;align-items:flex-start;transition:border-color .2s,transform .2s}#ds-home .ds-step:hover{border-color:#89a78c;transform:translateY(-2px)}#ds-home .ds-step-num{font:12px/1.5 ui-monospace,SFMono-Regular,monospace;color:#6f8f77;background:var(--ds-soft);padding:4px 8px;border-radius:4px;margin-bottom:16px}#ds-home .ds-step h3{font-size:16px;font-weight:600;margin-bottom:7px;line-height:1.5;word-break:keep-all}#ds-home .ds-step p{font-size:12px;line-height:1.8;color:var(--ds-muted);word-break:keep-all;flex:1}#ds-home .ds-step-link{margin-top:21px;width:100%;display:flex;justify-content:space-between;font-size:11px;color:var(--ds-green)}#ds-home .ds-text-link{font-size:12px;color:var(--ds-green);white-space:nowrap}#ds-home .ds-topic-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:27px}#ds-home .ds-topic{padding:8px 0}#ds-home .ds-topic h3{font-size:17px;font-weight:600;margin:9px 0 5px}#ds-home .ds-topic p{font-size:12px;color:var(--ds-muted);margin-bottom:17px}#ds-home .ds-topic ul{list-style:none;border-top:1px solid var(--ds-line);padding-top:9px}#ds-home .ds-topic a{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:12px}#ds-home .ds-topic a span{color:#8b9c8c}#ds-home .ds-topic a:hover{color:var(--ds-green)}#ds-home .ds-platforms{display:flex;gap:10px;flex-wrap:wrap;border-top:1px solid var(--ds-line);padding-top:21px;margin-top:21px;align-items:center;font-size:11px;color:var(--ds-muted)}#ds-home .ds-platforms&amp;gt;strong{font-weight:500;margin-right:5px}#ds-home .ds-chip{display:inline-flex;gap:9px;align-items:center;padding:5px 12px;border:1px solid var(--ds-line);border-radius:4px}#ds-home .ds-chip-live{color:var(--ds-green);background:var(--ds-soft);border-color:#d4dfce}#ds-home .ds-chip small{font-size:9px;color:#899489}#ds-home .ds-bottom{display:grid;grid-template-columns:1.6fr 1fr;gap:55px;padding:34px 0 38px;border-top:1px solid var(--ds-line)}#ds-home .ds-bottom h2{font-size:21px;letter-spacing:-.04em;font-weight:650}#ds-home .ds-recent-list{list-style:none;margin-top:16px!important}#ds-home .ds-recent-list li{border-bottom:1px solid var(--ds-line)}#ds-home .ds-recent-list a{display:flex;align-items:center;gap:16px;padding:13px 0;font-size:12px}#ds-home .ds-recent-list time{font:11px ui-monospace,SFMono-Regular,monospace;color:var(--ds-muted);width:43px;flex:none}#ds-home .ds-recent-list strong{flex:1;font-weight:500;word-break:keep-all}#ds-home .ds-tag{font-size:9px;background:var(--ds-soft);color:var(--ds-green);padding:2px 6px;border-radius:3px;white-space:nowrap}#ds-home .ds-note{padding:24px;background:var(--ds-soft);border-radius:8px;align-self:start}#ds-home .ds-note h2{font-size:19px;line-height:1.5;margin:10px 0}#ds-home .ds-note p{font-size:12px;line-height:1.85;color:var(--ds-muted);word-break:keep-all}#ds-home .ds-note a{display:block;color:var(--ds-green);font-size:12px;margin-top:17px}#ds-home .ds-footer{border-top:1px solid var(--ds-line);padding:22px 0 62px;color:var(--ds-muted);font-size:10px}#ds-home .ds-footer-inner{display:flex;justify-content:space-between;gap:20px}#ds-home .ds-footer strong{font-size:12px;font-weight:600;color:var(--ds-ink);margin-right:14px}#ds-home .ds-preview-bar{position:fixed;bottom:0;left:0;right:0;z-index:99999;display:flex;justify-content:center;gap:16px;align-items:center;padding:9px 18px;background:#20382e;color:#f4f6f1;font-size:10px;letter-spacing:0;border-top:1px solid #486251}#ds-home .ds-preview-bar button{background:transparent;color:#fff;border:1px solid #637a6b;padding:3px 10px;border-radius:4px;font-size:10px}#ds-home .ds-preview-bar small{font-size:10px;color:#c4d3c7}&lt;br /&gt;
@media(min-width:1400px){#ds-home .ds-wrap{max-width:1260px;padding:0 60px}#ds-home .ds-hero{padding-top:75px;padding-bottom:50px;gap:90px}#ds-home .ds-hero h1{font-size:53px}}&lt;br /&gt;
@media(max-width:900px){#ds-home .ds-wrap{padding:0 28px}#ds-home .ds-hero{gap:28px;padding:44px 0 32px}#ds-home .ds-hero h1{font-size:38px}#ds-home .ds-question{padding:22px}#ds-home .ds-question h2{font-size:20px}#ds-home .ds-nav{gap:18px}#ds-home .ds-step{padding:18px 15px}#ds-home .ds-topic-grid{gap:20px}#ds-home .ds-bottom{gap:28px}}&lt;br /&gt;
@media(max-width:680px){#ds-home .ds-wrap{padding:0 21px}#ds-home .ds-header-inner{height:72px;gap:14px}#ds-home .ds-nav{display:none}#ds-home .ds-brand strong{font-size:19px}#ds-home .ds-edit{font-size:10px;padding:6px 10px}#ds-home .ds-hero{grid-template-columns:1fr;gap:29px;padding-top:35px}#ds-home .ds-hero h1{font-size:37px;line-height:1.3;margin:14px 0 16px}#ds-home .ds-intro{font-size:13px}#ds-home .ds-question{padding:22px 24px}#ds-home .ds-question h2{font-size:21px;margin:13px 0 18px}#ds-home .ds-question .ds-diagram{padding:16px 0}#ds-home .ds-actions{margin-top:21px}#ds-home .ds-btn{font-size:12px;padding:10px 14px;gap:12px}#ds-home .ds-search-zone{padding-bottom:28px}#ds-home .ds-search-row{gap:12px;padding:11px 13px}#ds-home .ds-search-help{flex-direction:column;gap:6px}#ds-home .ds-section{padding:27px 0 31px}#ds-home .ds-section-head{align-items:flex-start;flex-direction:column;gap:15px;margin-bottom:17px}#ds-home .ds-section h2{font-size:23px}#ds-home .ds-section-sub{font-size:12px}#ds-home .ds-guide{align-items:flex-start;flex-direction:column;gap:5px}#ds-home .ds-step-grid{grid-template-columns:repeat(2,1fr);gap:10px}#ds-home .ds-step{padding:17px 15px}#ds-home .ds-step h3{font-size:15px}#ds-home .ds-step p{font-size:11px}#ds-home .ds-step-num{margin-bottom:12px}#ds-home .ds-topic-grid{grid-template-columns:repeat(2,1fr);gap:20px}#ds-home .ds-topic h3{font-size:16px}#ds-home .ds-topic a{font-size:11px}#ds-home .ds-bottom{grid-template-columns:1fr;gap:27px;padding-top:27px}#ds-home .ds-footer-inner{flex-direction:column;gap:7px}#ds-home .ds-preview-bar{gap:10px;padding:8px 12px}#ds-home .ds-preview-bar small{display:none}}&lt;br /&gt;
@media(prefers-reduced-motion:reduce){#ds-home *{transition:none!important;scroll-behavior:auto!important}}&lt;br /&gt;
&lt;br /&gt;
#ds-home{min-height:0}#ds-home *,#ds-home *::before,#ds-home *::after{font-family:inherit}#ds-home .mw-headline::before{content:none!important}#ds-home .mw-heading{margin:0;padding:0;border:0}#ds-home .mw-editsection{display:none}#ds-home .ds-brand-mark{font:600 11px/34px inherit;display:inline-block;text-align:center;border:1.5px solid var(--ds-green);border-radius:6px;width:34px;height:34px}#ds-home .ds-brand small{white-space:nowrap}#ds-home .ds-brand a{display:block}#ds-home .ds-btn a{display:flex;align-items:center;gap:19px;color:inherit}#ds-home .ds-edit a{color:inherit}#ds-home .ds-step h3 a{color:inherit}#ds-home .ds-step-link a{display:flex;width:100%;justify-content:space-between}#ds-home .ds-tabs&amp;gt;span{display:block;padding:8px 15px;font-size:12px;border-radius:4px;color:var(--ds-muted)}#ds-home .ds-tabs&amp;gt;span a{color:inherit}#ds-home .ds-tabs&amp;gt;span[aria-selected=&amp;quot;true&amp;quot;]{background:white;color:var(--ds-green);font-weight:700}#ds-home .ds-blocks&amp;gt;span{display:block;aspect-ratio:1;background:#d7e0d1;border-radius:2px}#ds-home .ds-blocks&amp;gt;span.ds-active{background:#4e7d5e}#ds-home .ds-footer{padding-bottom:24px}#ds-home #ds-panel-expert{display:none}#ds-home:has(#ds-panel-expert:target) #ds-panel-expert{display:block}#ds-home:has(#ds-panel-expert:target) #ds-panel-beginner{display:none}#ds-home.ds-js-ready [role=&amp;quot;tabpanel&amp;quot;]{display:none!important}#ds-home.ds-js-ready [role=&amp;quot;tabpanel&amp;quot;].ds-active-panel{display:block!important}#ds-home .ds-tabs span:focus-visible{outline:3px solid #7ba58d;outline-offset:3px}#ds-home .ds-search-icon{border:1.5px solid var(--ds-muted);border-radius:50%;width:15px;height:15px;position:relative;margin-right:3px}#ds-home .ds-search-icon::after{content:&amp;quot;&amp;quot;;position:absolute;width:7px;height:1.5px;background:var(--ds-muted);right:-5px;bottom:-3px;transform:rotate(45deg)}&lt;br /&gt;
body.page-대문.action-view:has(#ds-home){background:#fafbf8;color:#20382e}body.page-대문.action-view:has(#ds-home) .citizen-page-container{max-width:none;padding-top:0}body.page-대문.action-view:has(#ds-home) #content{max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) .citizen-body-container{display:block;max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) #bodyContent{max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) .citizen-toc,body.page-대문.action-view:has(#ds-home) .citizen-page-footer,body.page-대문.action-view:has(#ds-home) #content&amp;gt;.citizen-page-header{display:none}body.page-대문.action-view:has(#ds-home) .citizen-page-header-sticky{display:none}&lt;br /&gt;
/* End DB Study main page design. */&lt;br /&gt;
&lt;br /&gt;
#ds-home em{text-emphasis:none;-webkit-text-emphasis:none}#ds-home input::placeholder{color:var(--ds-muted);opacity:1}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   위키테이블 (대문 디자인 팔레트) — 구분선·가독성 개선&lt;br /&gt;
   ※ 행/셀에 style 속성을 직접 준 경우 그 값이 우선합니다.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
  border-collapse: separate;&lt;br /&gt;
  border-spacing: 0;&lt;br /&gt;
  border: 1px solid #c9d4c6;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  background: #ffffff;&lt;br /&gt;
  color: #20382e;&lt;br /&gt;
  font-size: 14px;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  margin: 16px 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-right: 1px solid #dde4dc;&lt;br /&gt;
  border-bottom: 1px solid #dde4dc;&lt;br /&gt;
  padding: 10px 14px;&lt;br /&gt;
  vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th:last-child, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th:last-child, .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td:last-child, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td:last-child { border-right: 0; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:last-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; tr:last-child &amp;gt; td,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; *:last-child &amp;gt; tr:last-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; *:last-child &amp;gt; tr:last-child &amp;gt; td { border-bottom: 0; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]) &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th {&lt;br /&gt;
  background: #eef3eb;&lt;br /&gt;
  color: #20382e;&lt;br /&gt;
  font-weight: 650;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:first-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; *:first-child &amp;gt; tr:first-child &amp;gt; th { border-bottom: 2px solid #c9d4c6; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #fafbf8; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]):hover &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #f2f6ef; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; caption {&lt;br /&gt;
  caption-side: top;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
  font-weight: 650;&lt;br /&gt;
  color: #256448;&lt;br /&gt;
  padding: 0 2px 8px;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable code { background: #eef3eb; color: #20382e; }&lt;br /&gt;
&lt;br /&gt;
/* 다크 모드 */&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable { background: #18201c; color: #dfe7e1; border-color: #3a4a41; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td { border-color: #2f3b35; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr:not([style]) &amp;gt; th, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th { background: #223029; color: #e8efe9; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr:first-child &amp;gt; th, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; *:first-child &amp;gt; tr:first-child &amp;gt; th { border-bottom-color: #3a4a41; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #1c2520; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr:not([style]):hover &amp;gt; td, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #24302a; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable code { background: #223029; color: #dfe7e1; }&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable { background: #18201c; color: #dfe7e1; border-color: #3a4a41; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td { border-color: #2f3b35; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr:not([style]) &amp;gt; th, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th { background: #223029; color: #e8efe9; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr:first-child &amp;gt; th, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; *:first-child &amp;gt; tr:first-child &amp;gt; th { border-bottom-color: #3a4a41; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #1c2520; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr:not([style]):hover &amp;gt; td, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #24302a; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable code { background: #223029; color: #dfe7e1; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=2024</id>
		<title>미디어위키:Common.css</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4:Common.css&amp;diff=2024"/>
		<updated>2026-11-04T05:16:10Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 위키테이블 디자인 개선 (구분선·헤더·줄무늬, 다크 모드)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 이 CSS 설정은 모든 스킨에 적용됩니다 */&lt;br /&gt;
/* 나눔고딕 미설치 컴에도 나눔고딕을 사용할 수 있게 함 구글 폰트에서 퍼옴 */&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 400;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Regular.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-Bold.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
@font-face {&lt;br /&gt;
  font-family: &#039;Nanum Gothic&#039;;&lt;br /&gt;
  font-style: normal;&lt;br /&gt;
  font-weight: 800;&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot);&lt;br /&gt;
  src: url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.eot?#iefix) format(&#039;embedded-opentype&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff2) format(&#039;woff2&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.woff) format(&#039;woff&#039;),&lt;br /&gt;
       url(http://fonts.gstatic.com/ea/nanumgothic/v5/NanumGothic-ExtraBold.ttf) format(&#039;truetype&#039;);&lt;br /&gt;
}&lt;br /&gt;
* { font-family: &#039;Nanum Gothic&#039;, sans-serif; }/*모든 글꼴을 나눔고딕으로. */&lt;br /&gt;
&lt;br /&gt;
body.page-대문 h1.firstHeading {display:none;}&lt;br /&gt;
ol { &lt;br /&gt;
	margin-left: 2cm;&lt;br /&gt;
list-style-type: decimal; &lt;br /&gt;
}&lt;br /&gt;
img {&lt;br /&gt;
          display: block;&lt;br /&gt;
          margin: 0 auto;&lt;br /&gt;
          max-width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
      &lt;br /&gt;
/* .tocnumber:after { content: &#039;.&#039; }*/&lt;br /&gt;
&lt;br /&gt;
/* 반응형 그리드 레이아웃 */&lt;br /&gt;
.responsive-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));&lt;br /&gt;
    gap: 20px;&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 반응형 이미지 */&lt;br /&gt;
.responsive-image {&lt;br /&gt;
        display: block;&lt;br /&gt;
        margin: 0 auto;&lt;br /&gt;
        max-width: 100%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.responsive-img {&lt;br /&gt;
    width: 100%; /* 부모 요소의 너비에 맞게 조정 */&lt;br /&gt;
    height: 600px; /* 원하는 높이 설정 */&lt;br /&gt;
    background-size: cover; /* 이미지가 div를 채우도록 조정 */&lt;br /&gt;
    background-position: center; /* 이미지의 중심을 기준으로 위치 조정 */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 모바일 환경에서의 텍스트 정렬 */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .main-page-intro {&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 데스크탑에서는 그리드 레이아웃 사용 */&lt;br /&gt;
@media (min-width: 769px) {&lt;br /&gt;
    .main-page-intro {&lt;br /&gt;
        display: flex;&lt;br /&gt;
        justify-content: space-between;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 목차(TOC)에 넘버링 추가 */&lt;br /&gt;
#toc ul {&lt;br /&gt;
  counter-reset: item;&lt;br /&gt;
}&lt;br /&gt;
#toc li {&lt;br /&gt;
  display: block;&lt;br /&gt;
}&lt;br /&gt;
#toc li:before {&lt;br /&gt;
  content: counters(item, &amp;quot;.&amp;quot;) &amp;quot;. &amp;quot;;&lt;br /&gt;
  counter-increment: item;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 문서 섹션 제목(h2~h6)에 넘버링 추가 &lt;br /&gt;
.mw-headline {&lt;br /&gt;
  counter-reset: subsection;&lt;br /&gt;
}&lt;br /&gt;
h2 .mw-headline:before {&lt;br /&gt;
  counter-increment: section;&lt;br /&gt;
  content: counter(section) &amp;quot;. &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
h3 .mw-headline:before {&lt;br /&gt;
  counter-increment: subsection;&lt;br /&gt;
  content: counter(section) &amp;quot;.&amp;quot; counter(subsection) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/* 미디어위키 본문 영역 전체의 카운터 초기화 */&lt;br /&gt;
.mw-parser-output {&lt;br /&gt;
    counter-reset: h1-counter;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 1단계 제목 (h2) 넘버링 */&lt;br /&gt;
.mw-parser-output h2 {&lt;br /&gt;
    counter-reset: h2-counter;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output h2 .mw-headline::before {&lt;br /&gt;
    counter-increment: h1-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;. &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 2단계 소제목 (h3) 넘버링 */&lt;br /&gt;
.mw-parser-output h3 {&lt;br /&gt;
    counter-reset: h3-counter;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output h3 .mw-headline::before {&lt;br /&gt;
    counter-increment: h2-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;.&amp;quot; counter(h2-counter) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 3단계 소제목 (h4) 넘버링 */&lt;br /&gt;
.mw-parser-output h4 .mw-headline::before {&lt;br /&gt;
    counter-increment: h3-counter;&lt;br /&gt;
    content: counter(h1-counter) &amp;quot;.&amp;quot; counter(h2-counter) &amp;quot;.&amp;quot; counter(h3-counter) &amp;quot; &amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 나만의 모던 심플 그레이 위키 테이블 */&lt;br /&gt;
.tb_gray {&lt;br /&gt;
    border-collapse: collapse !important;&lt;br /&gt;
    border: 1px solid #e0e0e0 !important;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
/* 타이틀 행 (중앙 정렬 + 은은한 회색 배경) */&lt;br /&gt;
.tb_gray th {&lt;br /&gt;
    background-color: #f5f5f5 !important;&lt;br /&gt;
    border-bottom: 2px solid #cccccc !important;&lt;br /&gt;
    border-right: 1px solid #e0e0e0 !important;&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
/* 첫 번째 컬럼 (진한 강조 회색, 왼쪽 정렬) */&lt;br /&gt;
.tb_gray td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: #fafafa !important;&lt;br /&gt;
    border-right: 1px solid #e0e0e0 !important;&lt;br /&gt;
    text-align: left !important;&lt;br /&gt;
}&lt;br /&gt;
/* 일반 본문 셀 */&lt;br /&gt;
.tb_gray td {&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    border-bottom: 1px solid #f0f0f0 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 나만의 심플한 커스텀 위키 테이블 */&lt;br /&gt;
.tb_blue {&lt;br /&gt;
    border-collapse: collapse !important;&lt;br /&gt;
    border: 1px solid #dcdcdc !important;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
/* 타이틀 행 (중앙 정렬 + 하늘색 배경) */&lt;br /&gt;
.tb_blue th {&lt;br /&gt;
    background-color: #e6f2ff !important;&lt;br /&gt;
    border-bottom: 2px solid #b0d4ff !important;&lt;br /&gt;
    border-right: 1px solid #dcdcdc !important;&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
}&lt;br /&gt;
/* 첫 번째 컬럼 (진한 강조 색상, 왼쪽 정렬) */&lt;br /&gt;
.tb_blue td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    background-color: #f2f7fc !important;&lt;br /&gt;
    border-right: 1px solid #dcdcdc !important;&lt;br /&gt;
    text-align: left !important;&lt;br /&gt;
}&lt;br /&gt;
/* 일반 본문 셀 */&lt;br /&gt;
.tb_blue td {&lt;br /&gt;
    padding: 10px !important;&lt;br /&gt;
    border-bottom: 1px solid #eee !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* DB Study main page design, scoped to #ds-home only. */&lt;br /&gt;
&lt;br /&gt;
#ds-home{--ds-bg:#fafbf8;--ds-ink:#20382e;--ds-muted:#6c7b72;--ds-line:#dde4dc;--ds-green:#256448;--ds-soft:#eef3eb;--ds-white:#fff;display:block;background:var(--ds-bg);color:var(--ds-ink);font:15px/1.65 -apple-system,BlinkMacSystemFont,&#039;Apple SD Gothic Neo&#039;,&#039;Malgun Gothic&#039;,sans-serif;letter-spacing:-.025em;min-height:100vh;isolation:isolate}&lt;br /&gt;
#ds-home *,#ds-home *::before,#ds-home *::after{box-sizing:border-box}#ds-home h1,#ds-home h2,#ds-home h3,#ds-home p,#ds-home ul{margin:0;padding:0;border:0;font-family:inherit}#ds-home h1,#ds-home h2,#ds-home h3{color:var(--ds-ink)}#ds-home a{color:inherit;text-decoration:none;background:none}#ds-home a::after{display:none}#ds-home button,#ds-home input{font:inherit;letter-spacing:inherit}#ds-home button{cursor:pointer;color:inherit}#ds-home button::after{display:none}#ds-home a:focus-visible,#ds-home button:focus-visible,#ds-home input:focus-visible{outline:3px solid #7ba58d;outline-offset:5px}#ds-home [hidden]{display:none!important}#ds-home .ds-wrap{max-width:1180px;padding:0 44px;margin:auto}#ds-home .ds-header{border-bottom:1px solid var(--ds-line);background:var(--ds-white)}#ds-home .ds-header-inner{height:84px;display:flex;align-items:center;justify-content:space-between;gap:26px}#ds-home .ds-brand{display:flex;align-items:center;gap:13px;white-space:nowrap}#ds-home .ds-brand-mark{width:34px;height:38px;color:var(--ds-green)}#ds-home .ds-brand strong{display:block;font-size:21px;line-height:1.2;letter-spacing:-.04em}#ds-home .ds-brand small{display:block;font-size:10px;color:var(--ds-muted);letter-spacing:.1em;margin-top:4px}#ds-home .ds-nav{display:flex;gap:29px;align-items:center;font-size:13px;font-weight:600}#ds-home .ds-nav a:hover{color:var(--ds-green)}#ds-home .ds-edit{border:1px solid var(--ds-line);padding:8px 14px;border-radius:5px;font-size:12px}#ds-home .ds-hero{padding:64px 0 42px;display:grid;grid-template-columns:1.4fr 1fr;gap:58px;align-items:center}#ds-home .ds-overline{display:block;font-size:11px;font-weight:600;letter-spacing:.09em;color:var(--ds-green)}#ds-home .ds-hero h1{font-size:47px;line-height:1.28;font-weight:700;letter-spacing:-.055em;margin:17px 0 21px;word-break:keep-all}#ds-home .ds-hero h1 em{font-style:normal;color:var(--ds-green)}#ds-home .ds-intro{font-size:15px;line-height:1.85;color:var(--ds-muted);word-break:keep-all}#ds-home .ds-actions{display:flex;gap:10px;margin-top:27px;flex-wrap:wrap}#ds-home .ds-btn{display:inline-flex;align-items:center;justify-content:center;gap:19px;padding:11px 18px;border:1px solid var(--ds-line);background:var(--ds-white);border-radius:5px;font-size:13px;font-weight:600;min-height:45px}#ds-home .ds-btn-primary{background:var(--ds-green);border-color:var(--ds-green);color:#fff}#ds-home .ds-btn:hover{border-color:var(--ds-green)}#ds-home .ds-question{background:var(--ds-soft);border:1px solid #dce5d6;border-radius:10px;padding:28px 30px;position:relative}#ds-home .ds-question-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--ds-muted)}#ds-home .ds-question h2{font-size:23px;line-height:1.5;letter-spacing:-.04em;margin:17px 0 22px;font-weight:600;word-break:keep-all}#ds-home .ds-question .ds-diagram{display:grid;grid-template-columns:1fr 1fr;gap:18px;border-top:1px solid #d5dfcf;border-bottom:1px solid #d5dfcf;padding:20px 0;margin-bottom:18px}#ds-home .ds-blocks{display:grid;grid-template-columns:repeat(10,1fr);gap:3px;margin-bottom:10px}#ds-home .ds-blocks span{display:block;aspect-ratio:1;background:#d7e0d1;border-radius:2px}#ds-home .ds-blocks span.ds-active{background:#4e7d5e}#ds-home .ds-diagram strong{font-size:11px;font-weight:600}#ds-home .ds-diagram small{display:block;color:var(--ds-muted);font-size:10px;margin-top:2px}#ds-home .ds-question-link{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;gap:12px;color:var(--ds-green)}#ds-home .ds-search-zone{padding:0 0 40px}#ds-home .ds-search-row{display:flex;align-items:center;gap:24px;border:1px solid var(--ds-line);background:var(--ds-white);padding:13px 18px;border-radius:7px;position:relative}#ds-home .ds-search-icon{width:20px;height:20px;color:var(--ds-muted);flex:none}#ds-home .ds-search-row input{min-width:0;flex:1;border:0!important;background:transparent!important;color:var(--ds-ink);outline:0!important;box-shadow:none!important;padding:3px 0;width:100%;font-size:13px}#ds-home .ds-search-row button{border:0;background:var(--ds-soft);border-radius:4px;font-size:12px;padding:6px 15px;flex:none}#ds-home .ds-search-help{display:flex;justify-content:space-between;gap:15px;padding:10px 4px 0;font-size:11px;color:var(--ds-muted)}#ds-home .ds-quick{display:flex;gap:13px;flex-wrap:wrap}#ds-home .ds-quick a:hover{color:var(--ds-green)}#ds-home .ds-results{list-style:none;border:1px solid var(--ds-line);border-top:0;background:var(--ds-white);padding:8px 14px;border-radius:0 0 6px 6px;margin:0!important}#ds-home .ds-results a{display:block;font-size:13px;padding:8px 5px;color:var(--ds-green)}#ds-home .ds-results p{font-size:12px;color:var(--ds-muted);padding:10px 5px}#ds-home .ds-section{padding:34px 0 40px;border-top:1px solid var(--ds-line);scroll-margin-top:22px}#ds-home .ds-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}#ds-home .ds-section h2{font-size:25px;line-height:1.4;letter-spacing:-.045em;font-weight:650}#ds-home .ds-section-sub{font-size:13px;color:var(--ds-muted);margin-top:6px}#ds-home .ds-tabs{display:flex;gap:4px;border:1px solid var(--ds-line);background:#f0f3ed;padding:4px;border-radius:6px;flex-shrink:0}#ds-home .ds-tabs button{border:0;border-radius:4px;padding:8px 15px;font-size:12px;background:transparent;color:var(--ds-muted)}#ds-home .ds-tabs button[aria-selected=true]{background:var(--ds-white);color:var(--ds-green);font-weight:700}#ds-home .ds-guide{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px;font-size:12px;color:var(--ds-muted)}#ds-home .ds-guide strong{color:var(--ds-green);font-weight:500}#ds-home .ds-step-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}#ds-home .ds-step{padding:21px 20px;border:1px solid var(--ds-line);border-radius:7px;background:var(--ds-white);display:flex;flex-direction:column;align-items:flex-start;transition:border-color .2s,transform .2s}#ds-home .ds-step:hover{border-color:#89a78c;transform:translateY(-2px)}#ds-home .ds-step-num{font:12px/1.5 ui-monospace,SFMono-Regular,monospace;color:#6f8f77;background:var(--ds-soft);padding:4px 8px;border-radius:4px;margin-bottom:16px}#ds-home .ds-step h3{font-size:16px;font-weight:600;margin-bottom:7px;line-height:1.5;word-break:keep-all}#ds-home .ds-step p{font-size:12px;line-height:1.8;color:var(--ds-muted);word-break:keep-all;flex:1}#ds-home .ds-step-link{margin-top:21px;width:100%;display:flex;justify-content:space-between;font-size:11px;color:var(--ds-green)}#ds-home .ds-text-link{font-size:12px;color:var(--ds-green);white-space:nowrap}#ds-home .ds-topic-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:27px}#ds-home .ds-topic{padding:8px 0}#ds-home .ds-topic h3{font-size:17px;font-weight:600;margin:9px 0 5px}#ds-home .ds-topic p{font-size:12px;color:var(--ds-muted);margin-bottom:17px}#ds-home .ds-topic ul{list-style:none;border-top:1px solid var(--ds-line);padding-top:9px}#ds-home .ds-topic a{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:12px}#ds-home .ds-topic a span{color:#8b9c8c}#ds-home .ds-topic a:hover{color:var(--ds-green)}#ds-home .ds-platforms{display:flex;gap:10px;flex-wrap:wrap;border-top:1px solid var(--ds-line);padding-top:21px;margin-top:21px;align-items:center;font-size:11px;color:var(--ds-muted)}#ds-home .ds-platforms&amp;gt;strong{font-weight:500;margin-right:5px}#ds-home .ds-chip{display:inline-flex;gap:9px;align-items:center;padding:5px 12px;border:1px solid var(--ds-line);border-radius:4px}#ds-home .ds-chip-live{color:var(--ds-green);background:var(--ds-soft);border-color:#d4dfce}#ds-home .ds-chip small{font-size:9px;color:#899489}#ds-home .ds-bottom{display:grid;grid-template-columns:1.6fr 1fr;gap:55px;padding:34px 0 38px;border-top:1px solid var(--ds-line)}#ds-home .ds-bottom h2{font-size:21px;letter-spacing:-.04em;font-weight:650}#ds-home .ds-recent-list{list-style:none;margin-top:16px!important}#ds-home .ds-recent-list li{border-bottom:1px solid var(--ds-line)}#ds-home .ds-recent-list a{display:flex;align-items:center;gap:16px;padding:13px 0;font-size:12px}#ds-home .ds-recent-list time{font:11px ui-monospace,SFMono-Regular,monospace;color:var(--ds-muted);width:43px;flex:none}#ds-home .ds-recent-list strong{flex:1;font-weight:500;word-break:keep-all}#ds-home .ds-tag{font-size:9px;background:var(--ds-soft);color:var(--ds-green);padding:2px 6px;border-radius:3px;white-space:nowrap}#ds-home .ds-note{padding:24px;background:var(--ds-soft);border-radius:8px;align-self:start}#ds-home .ds-note h2{font-size:19px;line-height:1.5;margin:10px 0}#ds-home .ds-note p{font-size:12px;line-height:1.85;color:var(--ds-muted);word-break:keep-all}#ds-home .ds-note a{display:block;color:var(--ds-green);font-size:12px;margin-top:17px}#ds-home .ds-footer{border-top:1px solid var(--ds-line);padding:22px 0 62px;color:var(--ds-muted);font-size:10px}#ds-home .ds-footer-inner{display:flex;justify-content:space-between;gap:20px}#ds-home .ds-footer strong{font-size:12px;font-weight:600;color:var(--ds-ink);margin-right:14px}#ds-home .ds-preview-bar{position:fixed;bottom:0;left:0;right:0;z-index:99999;display:flex;justify-content:center;gap:16px;align-items:center;padding:9px 18px;background:#20382e;color:#f4f6f1;font-size:10px;letter-spacing:0;border-top:1px solid #486251}#ds-home .ds-preview-bar button{background:transparent;color:#fff;border:1px solid #637a6b;padding:3px 10px;border-radius:4px;font-size:10px}#ds-home .ds-preview-bar small{font-size:10px;color:#c4d3c7}&lt;br /&gt;
@media(min-width:1400px){#ds-home .ds-wrap{max-width:1260px;padding:0 60px}#ds-home .ds-hero{padding-top:75px;padding-bottom:50px;gap:90px}#ds-home .ds-hero h1{font-size:53px}}&lt;br /&gt;
@media(max-width:900px){#ds-home .ds-wrap{padding:0 28px}#ds-home .ds-hero{gap:28px;padding:44px 0 32px}#ds-home .ds-hero h1{font-size:38px}#ds-home .ds-question{padding:22px}#ds-home .ds-question h2{font-size:20px}#ds-home .ds-nav{gap:18px}#ds-home .ds-step{padding:18px 15px}#ds-home .ds-topic-grid{gap:20px}#ds-home .ds-bottom{gap:28px}}&lt;br /&gt;
@media(max-width:680px){#ds-home .ds-wrap{padding:0 21px}#ds-home .ds-header-inner{height:72px;gap:14px}#ds-home .ds-nav{display:none}#ds-home .ds-brand strong{font-size:19px}#ds-home .ds-edit{font-size:10px;padding:6px 10px}#ds-home .ds-hero{grid-template-columns:1fr;gap:29px;padding-top:35px}#ds-home .ds-hero h1{font-size:37px;line-height:1.3;margin:14px 0 16px}#ds-home .ds-intro{font-size:13px}#ds-home .ds-question{padding:22px 24px}#ds-home .ds-question h2{font-size:21px;margin:13px 0 18px}#ds-home .ds-question .ds-diagram{padding:16px 0}#ds-home .ds-actions{margin-top:21px}#ds-home .ds-btn{font-size:12px;padding:10px 14px;gap:12px}#ds-home .ds-search-zone{padding-bottom:28px}#ds-home .ds-search-row{gap:12px;padding:11px 13px}#ds-home .ds-search-help{flex-direction:column;gap:6px}#ds-home .ds-section{padding:27px 0 31px}#ds-home .ds-section-head{align-items:flex-start;flex-direction:column;gap:15px;margin-bottom:17px}#ds-home .ds-section h2{font-size:23px}#ds-home .ds-section-sub{font-size:12px}#ds-home .ds-guide{align-items:flex-start;flex-direction:column;gap:5px}#ds-home .ds-step-grid{grid-template-columns:repeat(2,1fr);gap:10px}#ds-home .ds-step{padding:17px 15px}#ds-home .ds-step h3{font-size:15px}#ds-home .ds-step p{font-size:11px}#ds-home .ds-step-num{margin-bottom:12px}#ds-home .ds-topic-grid{grid-template-columns:repeat(2,1fr);gap:20px}#ds-home .ds-topic h3{font-size:16px}#ds-home .ds-topic a{font-size:11px}#ds-home .ds-bottom{grid-template-columns:1fr;gap:27px;padding-top:27px}#ds-home .ds-footer-inner{flex-direction:column;gap:7px}#ds-home .ds-preview-bar{gap:10px;padding:8px 12px}#ds-home .ds-preview-bar small{display:none}}&lt;br /&gt;
@media(prefers-reduced-motion:reduce){#ds-home *{transition:none!important;scroll-behavior:auto!important}}&lt;br /&gt;
&lt;br /&gt;
#ds-home{min-height:0}#ds-home *,#ds-home *::before,#ds-home *::after{font-family:inherit}#ds-home .mw-headline::before{content:none!important}#ds-home .mw-heading{margin:0;padding:0;border:0}#ds-home .mw-editsection{display:none}#ds-home .ds-brand-mark{font:600 11px/34px inherit;display:inline-block;text-align:center;border:1.5px solid var(--ds-green);border-radius:6px;width:34px;height:34px}#ds-home .ds-brand small{white-space:nowrap}#ds-home .ds-brand a{display:block}#ds-home .ds-btn a{display:flex;align-items:center;gap:19px;color:inherit}#ds-home .ds-edit a{color:inherit}#ds-home .ds-step h3 a{color:inherit}#ds-home .ds-step-link a{display:flex;width:100%;justify-content:space-between}#ds-home .ds-tabs&amp;gt;span{display:block;padding:8px 15px;font-size:12px;border-radius:4px;color:var(--ds-muted)}#ds-home .ds-tabs&amp;gt;span a{color:inherit}#ds-home .ds-tabs&amp;gt;span[aria-selected=&amp;quot;true&amp;quot;]{background:white;color:var(--ds-green);font-weight:700}#ds-home .ds-blocks&amp;gt;span{display:block;aspect-ratio:1;background:#d7e0d1;border-radius:2px}#ds-home .ds-blocks&amp;gt;span.ds-active{background:#4e7d5e}#ds-home .ds-footer{padding-bottom:24px}#ds-home #ds-panel-expert{display:none}#ds-home:has(#ds-panel-expert:target) #ds-panel-expert{display:block}#ds-home:has(#ds-panel-expert:target) #ds-panel-beginner{display:none}#ds-home.ds-js-ready [role=&amp;quot;tabpanel&amp;quot;]{display:none!important}#ds-home.ds-js-ready [role=&amp;quot;tabpanel&amp;quot;].ds-active-panel{display:block!important}#ds-home .ds-tabs span:focus-visible{outline:3px solid #7ba58d;outline-offset:3px}#ds-home .ds-search-icon{border:1.5px solid var(--ds-muted);border-radius:50%;width:15px;height:15px;position:relative;margin-right:3px}#ds-home .ds-search-icon::after{content:&amp;quot;&amp;quot;;position:absolute;width:7px;height:1.5px;background:var(--ds-muted);right:-5px;bottom:-3px;transform:rotate(45deg)}&lt;br /&gt;
body.page-대문.action-view:has(#ds-home){background:#fafbf8;color:#20382e}body.page-대문.action-view:has(#ds-home) .citizen-page-container{max-width:none;padding-top:0}body.page-대문.action-view:has(#ds-home) #content{max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) .citizen-body-container{display:block;max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) #bodyContent{max-width:none;margin:0;padding:0}body.page-대문.action-view:has(#ds-home) .citizen-toc,body.page-대문.action-view:has(#ds-home) .citizen-page-footer,body.page-대문.action-view:has(#ds-home) #content&amp;gt;.citizen-page-header{display:none}body.page-대문.action-view:has(#ds-home) .citizen-page-header-sticky{display:none}&lt;br /&gt;
/* End DB Study main page design. */&lt;br /&gt;
&lt;br /&gt;
#ds-home em{text-emphasis:none;-webkit-text-emphasis:none}#ds-home input::placeholder{color:var(--ds-muted);opacity:1}&lt;br /&gt;
&lt;br /&gt;
/* ==========================================================&lt;br /&gt;
   위키테이블 (대문 디자인 팔레트) — 구분선·가독성 개선&lt;br /&gt;
   ※ 행/셀에 style 속성을 직접 준 경우 그 값이 우선합니다.&lt;br /&gt;
   ========================================================== */&lt;br /&gt;
.mw-parser-output table.wikitable {&lt;br /&gt;
  border-collapse: separate;&lt;br /&gt;
  border-spacing: 0;&lt;br /&gt;
  border: 1px solid #c9d4c6;&lt;br /&gt;
  border-radius: 8px;&lt;br /&gt;
  overflow: hidden;&lt;br /&gt;
  background: #ffffff;&lt;br /&gt;
  color: #20382e;&lt;br /&gt;
  font-size: 14px;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  margin: 16px 0;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
  border: 0;&lt;br /&gt;
  border-right: 1px solid #dde4dc;&lt;br /&gt;
  border-bottom: 1px solid #dde4dc;&lt;br /&gt;
  padding: 10px 14px;&lt;br /&gt;
  vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th:last-child, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th:last-child, .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td:last-child, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td:last-child { border-right: 0; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:last-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; tr:last-child &amp;gt; td,&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; *:last-child &amp;gt; tr:last-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; *:last-child &amp;gt; tr:last-child &amp;gt; td { border-bottom: 0; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]) &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th {&lt;br /&gt;
  background: #eef3eb;&lt;br /&gt;
  color: #20382e;&lt;br /&gt;
  font-weight: 650;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:first-child &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; *:first-child &amp;gt; tr:first-child &amp;gt; th { border-bottom: 2px solid #c9d4c6; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #fafbf8; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; tr:not([style]):hover &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #f2f6ef; }&lt;br /&gt;
.mw-parser-output table.wikitable &amp;gt; caption {&lt;br /&gt;
  caption-side: top;&lt;br /&gt;
  text-align: left;&lt;br /&gt;
  font-weight: 650;&lt;br /&gt;
  color: #256448;&lt;br /&gt;
  padding: 0 2px 8px;&lt;br /&gt;
}&lt;br /&gt;
.mw-parser-output table.wikitable code { background: #eef3eb; color: #20382e; }&lt;br /&gt;
&lt;br /&gt;
/* 다크 모드 */&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable { background: #18201c; color: #dfe7e1; border-color: #3a4a41; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td { border-color: #2f3b35; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th { background: #223029; color: #e8efe9; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #1c2520; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #24302a; }&lt;br /&gt;
html.skin-theme-clientpref-night .mw-parser-output table.wikitable code { background: #223029; color: #dfe7e1; }&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable { background: #18201c; color: #dfe7e1; border-color: #3a4a41; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; th, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; th, html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; tr &amp;gt; td, .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr &amp;gt; td { border-color: #2f3b35; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]) &amp;gt; th { background: #223029; color: #e8efe9; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):nth-child(even) &amp;gt; td { background: #1c2520; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable &amp;gt; * &amp;gt; tr:not([style]):hover &amp;gt; td { background: #24302a; }&lt;br /&gt;
  html.skin-theme-clientpref-os .mw-parser-output table.wikitable code { background: #223029; color: #dfe7e1; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%98%A4%EB%9D%BC%ED%81%B4&amp;diff=2023</id>
		<title>틀:오라클</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%98%A4%EB%9D%BC%ED%81%B4&amp;diff=2023"/>
		<updated>2026-11-04T05:10:30Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인 틀로 재구성, 예제 코드 변수 미치환 오류 수정&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{타이틀 주제|부제={{{부제|ORACLE · {{{분류|기타}}}}}}|제목={{{제목|문서 제목 없음}}}|설명={{{설명|}}}|색상={{{색상|초록}}}}}&lt;br /&gt;
__TOC__&lt;br /&gt;
{{요점|내용={{{요점|{{{내용|요점 내용없음}}}}}}}}&lt;br /&gt;
&lt;br /&gt;
== 기본 설명 ==&lt;br /&gt;
{{{본문|본문 내용을 여기에 입력하세요.}}}&lt;br /&gt;
&lt;br /&gt;
== 예제 ==&lt;br /&gt;
{{SQL|타입={{{언어|sql}}}|SQL={{#tag:syntaxhighlight|{{{예제|SELECT * FROM DUAL;}}}|lang={{{언어|sql}}}}}}}&lt;br /&gt;
&lt;br /&gt;
== 관련 문서 ==&lt;br /&gt;
{{#if:{{{관련1|}}}|* [[{{{관련1}}}]]}}&lt;br /&gt;
{{#if:{{{관련2|}}}|* [[{{{관련2}}}]]}}&lt;br /&gt;
{{#if:{{{이전글|}}}{{{다음글|}}}|{{관련글|이전글={{#if:{{{이전글|}}}|[[{{{이전글}}}]]}}|다음글={{#if:{{{다음글|}}}|[[{{{다음글}}}]]}}}}}}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
{{FAQ|제목={{{질문1|질문}}}}}&lt;br /&gt;
{{{답변1|답변}}}&lt;br /&gt;
{{#if:{{{질문2|}}}|{{FAQ|제목={{{질문2}}}}}&lt;br /&gt;
{{{답변2|}}}}}&lt;br /&gt;
[[분류:{{{분류|기타}}}]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;[[:분류:디자인 틀|디자인 틀 전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
Oracle 학습 문서의 &#039;&#039;&#039;기본 골격&#039;&#039;&#039;을 만드는 틀입니다. [[틀:타이틀 주제]], [[틀:요점]], [[틀:SQL]], [[틀:관련글]], [[틀:FAQ]]를 조합해 대문 디자인으로 표시합니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{오라클&lt;br /&gt;
|제목 = 실행계획 확인&lt;br /&gt;
|설명 = DBMS_XPLAN으로 실제 실행계획을 확인하는 방법&lt;br /&gt;
|요점 = DISPLAY_CURSOR + ALLSTATS LAST 를 기본으로 사용한다.&lt;br /&gt;
|본문 = 본문 내용...&lt;br /&gt;
|언어 = sql&lt;br /&gt;
|예제 = SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &#039;ALLSTATS LAST&#039;));&lt;br /&gt;
|관련1 = SQL 튜닝 입문&lt;br /&gt;
|이전글 = SQL 튜닝 입문&lt;br /&gt;
|다음글 = 인덱스 튜닝 심화&lt;br /&gt;
|질문1 = 예상 계획과 실제 계획이 다른 이유는?&lt;br /&gt;
|답변1 = 바인드 변수 값, 통계 변화 등으로 실행 시점의 계획이 달라질 수 있습니다.&lt;br /&gt;
|분류 = 오라클&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;설명&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;부제&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;색상&amp;lt;/code&amp;gt; || 상단 [[틀:타이틀 주제|타이틀 배너]] || 문서 제목 없음 / – / ORACLE · 분류 / 초록&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;요점&amp;lt;/code&amp;gt; (또는 &amp;lt;code&amp;gt;내용&amp;lt;/code&amp;gt;) || 상단 요점 박스 || 요점 내용없음&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;본문&amp;lt;/code&amp;gt; || 기본 설명 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;언어&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;예제&amp;lt;/code&amp;gt; || 예제 코드 (syntaxhighlight 언어) || sql / SELECT * FROM DUAL;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;관련1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;관련2&amp;lt;/code&amp;gt; || 관련 문서 링크 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;이전글&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;다음글&amp;lt;/code&amp;gt; || 이전·다음 글 내비게이션 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;질문1&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;답변1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;질문2&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;답변2&amp;lt;/code&amp;gt; || FAQ || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;분류&amp;lt;/code&amp;gt; || 문서 분류 || 기타&lt;br /&gt;
|}&lt;br /&gt;
{{DISPLAYTITLE:틀:오라클}}&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:FAQ&amp;diff=2022</id>
		<title>틀:FAQ</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:FAQ&amp;diff=2022"/>
		<updated>2026-11-04T05:08:33Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:flex-start;gap:10px;margin:18px 0 8px;color:#20382e;font-size:16px;font-weight:650;line-height:1.5;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:6px;background:#256448;color:#ffffff;font-size:13px;font-weight:700;&amp;quot;&amp;gt;{{#if:{{{아이콘이름|}}}|&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:#ffffff;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름}}}&amp;lt;/span&amp;gt;|Q}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;padding-top:1px;&amp;quot;&amp;gt;{{{제목|{{{1|제목을 입력하세요}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
자주 묻는 질문의 질문 줄 (Q 배지 + 질문). 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{FAQ|제목=실행계획이 갑자기 바뀌는 이유는?}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목 / 1&amp;lt;/code&amp;gt; || 질문 || 제목을 입력하세요&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Q 대신 표시할 Material 아이콘 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{FAQ|제목=실행계획이 갑자기 바뀌는 이유는?}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%8F%89%EC%A0%90&amp;diff=2021</id>
		<title>틀:평점</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%8F%89%EC%A0%90&amp;diff=2021"/>
		<updated>2026-11-04T05:08:33Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:inline-flex;align-items:center;gap:10px;margin:10px 0;padding:6px 14px 6px 6px;border:1px solid #dde4dc;border-radius:999px;background:#ffffff;color:#20382e;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.5px;color:#256448;background:#eef3eb;border-radius:999px;padding:3px 10px;&amp;quot;&amp;gt;{{{제목|평점}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:15px;letter-spacing:2px;line-height:1;&amp;quot;&amp;gt;{{#switch:{{#if:{{{별5|}}}|5|{{#if:{{{별4|}}}|4|{{#if:{{{별3|}}}|3|{{#if:{{{별2|}}}|2|{{#if:{{{별1|}}}|1|{{{값|{{{1|0}}}}}}}}}}}}}}}}|5=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★★★&amp;lt;/span&amp;gt;|4=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★&amp;lt;/span&amp;gt;|3=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★&amp;lt;/span&amp;gt;|2=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★&amp;lt;/span&amp;gt;|1=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★★&amp;lt;/span&amp;gt;|#default=&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★★★&amp;lt;/span&amp;gt;}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
별 5개로 평점을 표시합니다. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{평점|별4=1}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 라벨 || 평점&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;별1~별5&amp;lt;/code&amp;gt; || 해당 개수 표시 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;값 / 1&amp;lt;/code&amp;gt; || 숫자로 지정 (1~5) || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{평점|별4=1}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EB%82%9C%EC%9D%B4%EB%8F%84&amp;diff=2020</id>
		<title>틀:난이도</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EB%82%9C%EC%9D%B4%EB%8F%84&amp;diff=2020"/>
		<updated>2026-11-04T05:08:33Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:inline-flex;align-items:center;gap:10px;margin:10px 0;padding:6px 14px 6px 6px;border:1px solid #dde4dc;border-radius:999px;background:#ffffff;color:#20382e;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.5px;color:#256448;background:#eef3eb;border-radius:999px;padding:3px 10px;&amp;quot;&amp;gt;{{{제목|난이도}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:15px;letter-spacing:2px;line-height:1;&amp;quot;&amp;gt;{{#switch:{{#if:{{{별5|}}}|5|{{#if:{{{별4|}}}|4|{{#if:{{{별3|}}}|3|{{#if:{{{별2|}}}|2|{{#if:{{{별1|}}}|1|{{{값|{{{1|0}}}}}}}}}}}}}}}}|5=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★★★&amp;lt;/span&amp;gt;|4=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★&amp;lt;/span&amp;gt;|3=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★&amp;lt;/span&amp;gt;|2=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★&amp;lt;/span&amp;gt;|1=&amp;lt;span style=&amp;quot;color:#256448;&amp;quot;&amp;gt;★&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★★&amp;lt;/span&amp;gt;|#default=&amp;lt;span style=&amp;quot;color:#dde4dc;&amp;quot;&amp;gt;★★★★★&amp;lt;/span&amp;gt;}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
별 5개로 난이도를 표시합니다. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{난이도|별3=1}} {{난이도|제목=학습단계 : 중급|값=4}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 라벨 || 난이도&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;별1~별5&amp;lt;/code&amp;gt; || 해당 개수 표시 (예: 별3=1). 가장 큰 값 우선 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;값 / 1&amp;lt;/code&amp;gt; || 숫자로 지정 (1~5) || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{난이도|별3=1}} {{난이도|제목=학습단계 : 중급|값=4}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B4%80%EB%A0%A8%EA%B8%80&amp;diff=2019</id>
		<title>틀:관련글</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B4%80%EB%A0%A8%EA%B8%80&amp;diff=2019"/>
		<updated>2026-11-04T05:08:32Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;background:#ffffff;margin:20px 0;color:#20382e;overflow:hidden;&amp;quot;&amp;gt;{{#if:{{{이전|{{{이전글|}}}}}}|&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:12px;padding:10px 16px;font-size:13px;line-height:1.6;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#8b9c8c;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름1|arrow_back}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;min-width:44px;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;이전 글&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;flex:1;min-width:0;&amp;quot;&amp;gt;{{{이전|{{{이전글|}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}{{#if:{{{이전|{{{이전글|}}}}}}|{{#if:{{{다음|{{{다음글|}}}}}}|&amp;lt;div style=&amp;quot;border-top:1px solid #dde4dc;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;}}}}{{#if:{{{다음|{{{다음글|}}}}}}|&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:12px;padding:10px 16px;font-size:13px;line-height:1.6;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#8b9c8c;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름2|arrow_forward}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;min-width:44px;font-size:11px;font-weight:600;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;다음 글&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;flex:1;min-width:0;&amp;quot;&amp;gt;{{{다음|{{{다음글|}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
이전 글 / 다음 글 내비게이션. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{관련글|이전글=[[SQL 튜닝 입문]]|다음글=[[인덱스 튜닝 심화]]}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;이전 / 이전글&amp;lt;/code&amp;gt; || 이전 글 (링크 권장) || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;다음 / 다음글&amp;lt;/code&amp;gt; || 다음 글 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름1 / 아이콘이름2&amp;lt;/code&amp;gt; || 각 줄 아이콘 || arrow_back / arrow_forward&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{관련글|이전글=[[SQL 튜닝 입문]]|다음글=[[인덱스 튜닝 심화]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:SQL&amp;diff=2018</id>
		<title>틀:SQL</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:SQL&amp;diff=2018"/>
		<updated>2026-11-04T05:08:32Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;{{{속성|}}}&amp;quot; {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} style=&amp;quot;border:1px solid {{{테두리색|#dde4dc}}};border-radius:8px;overflow:hidden;margin:16px 0;background:{{{배경색|#ffffff}}};&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:8px;padding:8px 14px;background:#eef3eb;border-bottom:1px solid #dde4dc;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|post_add}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;letter-spacing:0.99px;text-transform:uppercase;color:#256448;&amp;quot;&amp;gt;{{{타입|sql}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;padding:12px 16px;background:{{{코드배경색|#f7f9f6}}};color:{{{코드글자색|#20382e}}};font-family:Consolas,&#039;D2Coding&#039;,Menlo,monospace;font-size:13px;line-height:1.7;overflow-x:auto;&amp;quot;&amp;gt;{{{SQL|{{{1|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
SQL·코드 조각을 보여주는 패널. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{SQL|SQL=&amp;amp;lt;pre&amp;gt;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &#039;ALLSTATS LAST&#039;));&amp;amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SQL / 1&amp;lt;/code&amp;gt; || 코드 내용 (&amp;amp;lt;pre&amp;gt; 또는 syntaxhighlight 가능) || 필수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;타입&amp;lt;/code&amp;gt; || 머리줄 라벨 || sql&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || 머리줄 아이콘 || post_add&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;코드배경색&amp;lt;/code&amp;gt; || 코드 영역 배경 || #f7f9f6&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;코드글자색&amp;lt;/code&amp;gt; || 코드 글자색 || #20382e&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색 / 테두리색&amp;lt;/code&amp;gt; || 바깥 배경·테두리 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;속성 / id&amp;lt;/code&amp;gt; || CSS class / id || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{SQL|SQL=&amp;lt;pre&amp;gt;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &#039;ALLSTATS LAST&#039;));&amp;lt;/pre&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%84%9C%EB%B8%8C&amp;diff=2017</id>
		<title>틀:서브</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%84%9C%EB%B8%8C&amp;diff=2017"/>
		<updated>2026-11-04T05:08:31Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:flex;flex-wrap:wrap;align-items:stretch;border:1px solid #dde4dc;border-radius:7px;overflow:hidden;margin:12px 0;background:#ffffff;color:#20382e;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:6px;padding:10px 14px;background:#eef3eb;color:#256448;font-size:13px;font-weight:650;white-space:nowrap;&amp;quot;&amp;gt;{{#if:{{{제목아이콘|}}}|&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{제목아이콘}}}&amp;lt;/span&amp;gt;}}&amp;lt;span&amp;gt;{{{제목|강조}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:200px;display:flex;align-items:center;gap:6px;padding:10px 14px;font-size:14px;line-height:1.7;&amp;quot;&amp;gt;{{#if:{{{내용아이콘|}}}|&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:#8b9c8c;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{내용아이콘}}}&amp;lt;/span&amp;gt;}}&amp;lt;span&amp;gt;{{{내용|{{{1|여기에 중요한 핵심 내용을 입력하세요.}}}}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
왼쪽 라벨 + 오른쪽 내용의 한 줄 강조. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{서브|제목=TIP|내용=ALLSTATS LAST 포맷으로 마지막 실행만 확인하세요.|제목아이콘=lightbulb}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 왼쪽 라벨 || 강조&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1&amp;lt;/code&amp;gt; || 오른쪽 내용 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목아이콘&amp;lt;/code&amp;gt; || 라벨 아이콘 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용아이콘&amp;lt;/code&amp;gt; || 내용 아이콘 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{서브|제목=TIP|내용=ALLSTATS LAST 포맷으로 마지막 실행만 확인하세요.|제목아이콘=lightbulb}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B0%95%EC%A1%B0&amp;diff=2016</id>
		<title>틀:강조</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B0%95%EC%A1%B0&amp;diff=2016"/>
		<updated>2026-11-04T05:08:31Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;overflow:hidden;margin:16px 0;color:#20382e;background:#ffffff;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:8px;padding:10px 16px;background:#eef3eb;border-bottom:1px solid #dde4dc;font-size:14px;font-weight:650;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘|star}}}&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;{{{제목|제목}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{내용|{{{1|}}}}}}|&amp;lt;div style=&amp;quot;display:flex;gap:8px;align-items:flex-start;padding:12px 16px;font-size:14px;line-height:1.75;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#8b9c8c;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{내용아이콘|playlist_add_check}}}&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;font-weight:500;&amp;quot;&amp;gt;{{{내용|{{{1|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
제목 머리줄 + 본문으로 구성된 강조 카드 ([[틀:핵심]]과 같은 형태). 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{강조|제목=바인드 변수|내용=리터럴 대신 바인드 변수를 쓰면 하드 파싱이 줄어듭니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 머리줄 제목 || 제목&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1&amp;lt;/code&amp;gt; || 본문 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘&amp;lt;/code&amp;gt; || 머리줄 아이콘 || star&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용아이콘&amp;lt;/code&amp;gt; || 본문 아이콘 || playlist_add_check&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{강조|제목=바인드 변수|내용=리터럴 대신 바인드 변수를 쓰면 하드 파싱이 줄어듭니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%95%B5%EC%8B%AC&amp;diff=2015</id>
		<title>틀:핵심</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%95%B5%EC%8B%AC&amp;diff=2015"/>
		<updated>2026-11-04T05:08:30Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;border:1px solid #dde4dc;border-radius:8px;overflow:hidden;margin:16px 0;color:#20382e;background:#ffffff;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:8px;padding:10px 16px;background:#eef3eb;border-bottom:1px solid #dde4dc;font-size:14px;font-weight:650;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘|vpn_key}}}&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;{{{제목|제목}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;{{#if:{{{내용|{{{1|}}}}}}|&amp;lt;div style=&amp;quot;display:flex;gap:8px;align-items:flex-start;padding:12px 16px;font-size:14px;line-height:1.75;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:#8b9c8c;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{내용아이콘|playlist_add_check}}}&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;font-weight:500;&amp;quot;&amp;gt;{{{내용|{{{1|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
제목 머리줄 + 본문으로 구성된 핵심 정리 카드. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{핵심|제목=Clustering Factor|내용=인덱스 순서와 테이블 저장 순서가 일치할수록 랜덤 I/O가 줄어듭니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 머리줄 제목 || 제목&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1&amp;lt;/code&amp;gt; || 본문 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘&amp;lt;/code&amp;gt; || 머리줄 아이콘 || vpn_key&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용아이콘&amp;lt;/code&amp;gt; || 본문 아이콘 || playlist_add_check&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{핵심|제목=Clustering Factor|내용=인덱스 순서와 테이블 저장 순서가 일치할수록 랜덤 I/O가 줄어듭니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%84%A4%EB%AA%85&amp;diff=2014</id>
		<title>틀:설명</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%84%A4%EB%AA%85&amp;diff=2014"/>
		<updated>2026-11-04T05:08:30Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;{{{속성|}}}&amp;quot; {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} style=&amp;quot;display:flex;gap:10px;align-items:flex-start;padding:12px 16px;margin:14px 0;border:1px solid {{{테두리색|#dde4dc}}};border-radius:7px;background:{{{배경색|#f7f9f6}}};color:#20382e;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;flex:0 0 auto;padding-top:2px;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;{{{아이콘클래스|material-icons-outlined}}}&amp;quot; style=&amp;quot;font-size:18px;line-height:1;vertical-align:-4px;color:{{{아이콘색|#256448}}};&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|info}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;font-size:14px;line-height:1.75;&amp;quot;&amp;gt;{{#if:{{{제목|{{{1|}}}}}}|&amp;lt;span style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;{{{제목|{{{1|}}}}}}&amp;lt;/span&amp;gt;}}{{#if:{{{내용|}}}|{{#if:{{{제목|{{{1|}}}}}}|&amp;lt;br/&amp;gt;}}&amp;lt;span style=&amp;quot;color:#6c7b72;&amp;quot;&amp;gt;{{{내용}}}&amp;lt;/span&amp;gt;}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
가장 기본이 되는 설명 박스. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{설명|제목=DBMS_XPLAN.DISPLAY_CURSOR|내용=실제 실행된 계획과 단계별 실측 통계를 보여줍니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목 / 1&amp;lt;/code&amp;gt; || 굵은 설명 문구 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용&amp;lt;/code&amp;gt; || 아래 보조 설명 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Material 아이콘 이름 || info&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘색&amp;lt;/code&amp;gt; || 아이콘 색 || #256448&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색&amp;lt;/code&amp;gt; || 배경 || #f7f9f6&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;테두리색&amp;lt;/code&amp;gt; || 테두리 || #dde4dc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;속성 / id&amp;lt;/code&amp;gt; || CSS class / id || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{설명|제목=DBMS_XPLAN.DISPLAY_CURSOR|내용=실제 실행된 계획과 단계별 실측 통계를 보여줍니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%A4%91%EC%9A%94&amp;diff=2013</id>
		<title>틀:중요</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%A4%91%EC%9A%94&amp;diff=2013"/>
		<updated>2026-11-04T05:08:30Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;{{{속성|}}}&amp;quot; {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} style=&amp;quot;display:flex;gap:12px;align-items:flex-start;padding:14px 18px;margin:16px 0;color:#20382e;border-width:{{{선굵기|0 0 0 4px}}};border-style:{{{스타일|solid}}};border-color:{{{테두리색|#c0620f}}};border-radius:{{{둥굴기|7px}}};background:{{{배경색|#fdf6ec}}};font-size:{{{사이즈|100%}}};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;flex:0 0 auto;padding-top:2px;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;{{{아이콘클래스|material-icons-outlined}}}&amp;quot; style=&amp;quot;font-size:20px;line-height:1;vertical-align:-4px;color:{{{아이콘색|#c0620f}}};&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|priority_high}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;line-height:1.75;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-bottom:4px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;line-height:18px;letter-spacing:0.99px;color:#c0620f;&amp;quot;&amp;gt;{{{라벨|중요}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:14px;&amp;quot;&amp;gt;{{{내용|{{{1|{{{제목|}}}}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
주의·중요 사항 박스 (주황 강조). 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{중요|내용=운영 DB에서는 실습하지 마세요.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1 / 제목&amp;lt;/code&amp;gt; || 본문 || 필수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;라벨&amp;lt;/code&amp;gt; || 상단 라벨 || 중요&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색&amp;lt;/code&amp;gt; || 배경 || #fdf6ec&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;테두리색&amp;lt;/code&amp;gt; || 테두리 색 || #c0620f&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;선굵기&amp;lt;/code&amp;gt; || 테두리 두께 (CSS border-width) || 0 0 0 4px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;스타일&amp;lt;/code&amp;gt; || 테두리 스타일 (solid, dashed …) || solid&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;둥굴기&amp;lt;/code&amp;gt; || 모서리 둥글기 || 7px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;사이즈&amp;lt;/code&amp;gt; || 글자 크기 || 100%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Material 아이콘 이름 || priority_high&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘색&amp;lt;/code&amp;gt; || 아이콘 색 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘클래스&amp;lt;/code&amp;gt; || 아이콘 글꼴 클래스 || material-icons-outlined&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;속성 / id&amp;lt;/code&amp;gt; || CSS class / id || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{중요|내용=운영 DB에서는 실습하지 마세요.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B2%B0%EB%A1%A0&amp;diff=2012</id>
		<title>틀:결론</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B2%B0%EB%A1%A0&amp;diff=2012"/>
		<updated>2026-11-04T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;{{{속성|}}}&amp;quot; {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} style=&amp;quot;display:flex;gap:12px;align-items:flex-start;padding:14px 18px;margin:16px 0;color:#20382e;border-width:{{{선굵기|1px}}};border-style:{{{스타일|solid}}};border-color:{{{테두리색|#dde4dc}}};border-radius:{{{둥굴기|7px}}};background:{{{배경색|#ffffff}}};font-size:{{{사이즈|100%}}};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;flex:0 0 auto;padding-top:2px;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;{{{아이콘클래스|material-icons-outlined}}}&amp;quot; style=&amp;quot;font-size:20px;line-height:1;vertical-align:-4px;color:{{{아이콘색|#256448}}};&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|task_alt}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;line-height:1.75;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-bottom:4px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;line-height:18px;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;{{{제목|결론}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:15px;font-weight:600;line-height:1.7;&amp;quot;&amp;gt;{{{내용|{{{1|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
문단·문서의 결론을 정리하는 박스. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{결론|내용=통계가 정확해야 옵티마이저가 올바른 실행계획을 선택합니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1&amp;lt;/code&amp;gt; || 결론 본문 || 필수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 상단 라벨 || 결론&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색&amp;lt;/code&amp;gt; || 배경 || #ffffff&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;테두리색&amp;lt;/code&amp;gt; || 테두리 색 || #dde4dc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;선굵기&amp;lt;/code&amp;gt; || 테두리 두께 (CSS border-width) || 1px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;스타일&amp;lt;/code&amp;gt; || 테두리 스타일 (solid, dashed …) || solid&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;둥굴기&amp;lt;/code&amp;gt; || 모서리 둥글기 || 7px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;사이즈&amp;lt;/code&amp;gt; || 글자 크기 || 100%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Material 아이콘 이름 || task_alt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘색&amp;lt;/code&amp;gt; || 아이콘 색 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘클래스&amp;lt;/code&amp;gt; || 아이콘 글꼴 클래스 || material-icons-outlined&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;속성 / id&amp;lt;/code&amp;gt; || CSS class / id || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{결론|내용=통계가 정확해야 옵티마이저가 올바른 실행계획을 선택합니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%9A%94%EC%A0%90&amp;diff=2011</id>
		<title>틀:요점</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EC%9A%94%EC%A0%90&amp;diff=2011"/>
		<updated>2026-11-04T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;{{{속성|}}}&amp;quot; {{#if:{{{id|}}}|id=&amp;quot;{{{id}}}&amp;quot;}} style=&amp;quot;display:flex;gap:12px;align-items:flex-start;padding:14px 18px;margin:16px 0;color:#20382e;border-width:{{{선굵기|0 0 0 4px}}};border-style:{{{스타일|solid}}};border-color:{{{테두리색|#256448}}};border-radius:{{{둥굴기|7px}}};background:{{{배경색|#f4f7f1}}};font-size:{{{사이즈|100%}}};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;flex:0 0 auto;padding-top:2px;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;{{{아이콘클래스|material-icons-outlined}}}&amp;quot; style=&amp;quot;font-size:20px;line-height:1;vertical-align:-4px;color:{{{아이콘색|#256448}}};&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|menu_book}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;div style=&amp;quot;flex:1;min-width:0;line-height:1.75;&amp;quot;&amp;gt;{{#if:{{{제목|}}}|&amp;lt;div style=&amp;quot;margin-bottom:4px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;line-height:18px;letter-spacing:0.99px;color:#256448;&amp;quot;&amp;gt;{{{제목}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;}}&amp;lt;div style=&amp;quot;font-size:14px;&amp;quot;&amp;gt;{{{내용|{{{1|}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
핵심 요점을 강조하는 박스. 배경·테두리 변수로 모양을 바꿀 수 있습니다. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{요점|내용=인덱스 튜닝의 핵심은 &#039;&#039;&#039;테이블 랜덤 액세스&#039;&#039;&#039;를 줄이는 것입니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;내용 / 1&amp;lt;/code&amp;gt; || 요점 본문 || 필수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 상단 라벨 (선택) || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색&amp;lt;/code&amp;gt; || 배경 || #f4f7f1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;테두리색&amp;lt;/code&amp;gt; || 테두리 색 || #256448&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;선굵기&amp;lt;/code&amp;gt; || 테두리 두께 (CSS border-width) || 0 0 0 4px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;스타일&amp;lt;/code&amp;gt; || 테두리 스타일 (solid, dashed …) || solid&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;둥굴기&amp;lt;/code&amp;gt; || 모서리 둥글기 || 7px&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;사이즈&amp;lt;/code&amp;gt; || 글자 크기 || 100%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Material 아이콘 이름 || menu_book&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘색&amp;lt;/code&amp;gt; || 아이콘 색 || &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘클래스&amp;lt;/code&amp;gt; || 아이콘 글꼴 클래스 || material-icons-outlined&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;속성 / id&amp;lt;/code&amp;gt; || CSS class / id || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{요점|내용=인덱스 튜닝의 핵심은 &#039;&#039;&#039;테이블 랜덤 액세스&#039;&#039;&#039;를 줄이는 것입니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%83%80%EC%9D%B4%ED%8B%80_%EB%9D%BC%EC%9A%B4%EB%93%9C&amp;diff=2010</id>
		<title>틀:타이틀 라운드</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%83%80%EC%9D%B4%ED%8B%80_%EB%9D%BC%EC%9A%B4%EB%93%9C&amp;diff=2010"/>
		<updated>2026-11-04T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:inline-flex;align-items:center;gap:7px;margin:14px 0 8px;padding:6px 14px 6px 10px;border:1px solid #d4dfce;border-radius:999px;background:#eef3eb;color:#256448;font-size:13px;font-weight:600;line-height:1.5;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘|attach_file}}}&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;{{{제목|제목을넣으세요}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
둥근 알약 모양의 작은 제목. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{타이틀 라운드|제목=참고 자료|아이콘=menu_book}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 제목 문구 || 제목을넣으세요&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘&amp;lt;/code&amp;gt; || Material 아이콘 이름 || attach_file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{타이틀 라운드|제목=참고 자료|아이콘=menu_book}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%83%80%EC%9D%B4%ED%8B%80&amp;diff=2009</id>
		<title>틀:타이틀</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%ED%83%80%EC%9D%B4%ED%8B%80&amp;diff=2009"/>
		<updated>2026-11-04T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:10px;border-bottom:1px solid #dde4dc;padding:0 0 10px;margin:28px 0 14px;color:#20382e;font-size:{{#if:{{{폰트크기|}}}|{{{폰트크기}}}pt|20px}};font-weight:650;line-height:1.4;letter-spacing:-0.5px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border-radius:7px;background:#eef3eb;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:19px;line-height:1;vertical-align:-4px;color:#256448;&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘이름|notifications_active}}}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;{{{제목|스타일리쉬 타이틀바}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
아이콘이 붙은 소제목 바. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{타이틀|제목=실행계획 확인하기|아이콘이름=query_stats}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 제목 문구 || 스타일리쉬 타이틀바&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘이름&amp;lt;/code&amp;gt; || Material 아이콘 이름 || notifications_active&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;폰트크기&amp;lt;/code&amp;gt; || 글자 크기(pt). 비우면 20px || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{타이틀|제목=실행계획 확인하기|아이콘이름=query_stats}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B0%9C%EC%9A%94&amp;diff=2008</id>
		<title>틀:개요</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=%ED%8B%80:%EA%B0%9C%EC%9A%94&amp;diff=2008"/>
		<updated>2026-11-04T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;Dbstudy: 대문 디자인에 맞춰 틀 디자인 개편 (기존 변수 호환)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div style=&amp;quot;border:1px solid {{{보더색|#dde4dc}}};border-left:4px solid {{{아이콘색|{{{아이콘색색|#256448}}}}}};background:{{{배경색|#ffffff}}};border-radius:7px;padding:14px 18px;margin:16px 0;color:{{{폰트색|#20382e}}};&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;display:flex;align-items:center;gap:6px;margin-bottom:6px;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;material-icons-outlined&amp;quot; style=&amp;quot;font-size:16px;line-height:1;vertical-align:-4px;color:{{{아이콘색|{{{아이콘색색|#256448}}}}}};&amp;quot; aria-hidden=&amp;quot;true&amp;quot;&amp;gt;{{{아이콘|list_alt}}}&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size:11px;font-weight:600;line-height:18px;letter-spacing:0.99px;color:{{{아이콘색|{{{아이콘색색|#256448}}}}}};&amp;quot;&amp;gt;{{{제목|개요}}}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-size:14px;line-height:1.75;&amp;quot;&amp;gt;{{{개요|{{{내용|{{{1|개요를 넣으세요}}}}}}}}}&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:12px;color:#6c7b72;margin:0 0 12px;&amp;quot;&amp;gt;대문 디자인 틀: [[틀:개요|개요]] · [[틀:타이틀|타이틀]] · [[틀:타이틀 라운드|타이틀 라운드]] · [[틀:요점|요점]] · [[틀:결론|결론]] · [[틀:중요|중요]] · [[틀:설명|설명]] · [[틀:핵심|핵심]] · [[틀:강조|강조]] · [[틀:서브|서브]] · [[틀:SQL|SQL]] · [[틀:관련글|관련글]] · [[틀:난이도|난이도]] · [[틀:평점|평점]] · [[틀:FAQ|FAQ]] · [[:분류:디자인 틀|전체 보기]]&amp;lt;/div&amp;gt;&lt;br /&gt;
문서 첫머리에 두는 개요 박스. 대문 디자인(초록 계열 팔레트)에 맞춰 개편했으며, 기존 변수는 그대로 사용할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
== 사용법 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{개요|개요=이 문서는 Oracle 힙 테이블의 저장 구조와 블록 내부의 행 배치를 설명합니다.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 변수 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 변수 !! 설명 !! 기본값&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;개요 / 내용 / 1&amp;lt;/code&amp;gt; || 개요 본문 || 필수&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;제목&amp;lt;/code&amp;gt; || 상단 라벨 || 개요&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘&amp;lt;/code&amp;gt; || Material 아이콘 이름 || list_alt&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;아이콘색&amp;lt;/code&amp;gt; || 강조 색 (왼쪽 선·아이콘·라벨) || #256448&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;배경색&amp;lt;/code&amp;gt; || 배경 || #ffffff&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;보더색&amp;lt;/code&amp;gt; || 테두리 || #dde4dc&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;폰트색&amp;lt;/code&amp;gt; || 본문 글자색 || #20382e&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 미리보기 ==&lt;br /&gt;
{{개요|개요=이 문서는 Oracle 힙 테이블의 저장 구조와 블록 내부의 행 배치를 설명합니다.}}&lt;br /&gt;
&lt;br /&gt;
[[분류:틀]]&lt;br /&gt;
[[분류:디자인 틀]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
</feed>