λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Study/DB

μŠ€ν‚€λ§ˆ

by ꡬ루마3단 2025. 4. 15.

πŸ“Œ DB 3단계 μŠ€ν‚€λ§ˆ ꡬ쑰 – μš”μ•½ μ •λ¦¬ν‘œ

ꡬ뢄 λŒ€μƒ λ²”μœ„ ν˜•μ‹ ν‘œν˜„ μ„€λͺ…
μ™ΈλΆ€ μŠ€ν‚€λ§ˆ κ°œλ³„ μ‚¬μš©μž / μ‘μš© μ‹œμŠ€ν…œ μ™ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€ + ν‘œν˜„ ν˜•μ‹ μ‚¬μš©μžκ°€ λ³΄λŠ” λ·°. μ‘μš© ν”„λ‘œκ·Έλž¨μ΄λ‚˜ μ‚¬μš©μžκ°€ 직접 μ ‘κ·Όν•˜λŠ” λΆ€λΆ„. λ³΄μ•ˆΒ·ν•„ν„°λ§ 적용 κ°€λŠ₯.
κ°œλ… μŠ€ν‚€λ§ˆ 전체 쑰직 / DB 논리 ꡬ쑰 κ°œλ…μ  ꡬ쑰 + 논리적 ν˜•μ‹ λͺ¨λ“  μ‘μš©κ³Ό μ‚¬μš©μžκ°€ κ³΅μœ ν•˜λŠ” DB 톡합 ꡬ쑰. 전체 μ—”ν„°ν‹°, 관계, 무결성 쑰건 포함.
λ‚΄λΆ€ μŠ€ν‚€λ§ˆ μ €μž₯μž₯치 / DBMS λ‚΄λΆ€ 물리 μ €μž₯ ꡬ쑰 + λ‚΄λΆ€ ν˜•μ‹ μ‹€μ œλ‘œ ν•˜λ“œλ””μŠ€ν¬ λ“± 물리 μž₯μΉ˜μ— μ €μž₯λ˜λŠ” 데이터 ν˜•μ‹ 및 ꡬ쑰. 인덱슀, νŽ˜μ΄μ§€ λ“± 포함.

🧭 계측 ꡬ쑰도 (3계측 ꡬ쑰 흐름)

      μ‚¬μš©μž1    μ‚¬μš©μž2    μ•± A    μ•± B
        β”‚         β”‚         β”‚       β”‚
        β–Ό         β–Ό         β–Ό       β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚         μ™ΈλΆ€ μŠ€ν‚€λ§ˆ         β”‚ ← μ‚¬μš©μž/ν”„λ‘œκ·Έλž¨λ³„ 맞좀 λ·°
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   κ°œλ… μŠ€ν‚€λ§ˆ    β”‚ ← 전체 논리적 ꡬ쑰 (ERλͺ¨λΈ μˆ˜μ€€)
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β–Ό
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚   λ‚΄λΆ€ μŠ€ν‚€λ§ˆ    β”‚ ← 물리적 μ €μž₯ ꡬ쑰 (파일/블둝/인덱슀)
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

βœ… μΆ”κ°€ μš”μ•½ (ν‘œν˜„ μŠ€ν‚€λ§ˆ μ€‘μ‹¬μœΌλ‘œ λΆ„λ₯˜)

계측 ν‘œν˜„ 방식 μ„€λͺ…
μ™ΈλΆ€ μŠ€ν‚€λ§ˆ ν‘œν˜„ μŠ€ν‚€λ§ˆ μ‚¬μš©μžμ—κ²Œ λ³΄μ΄λŠ” ν˜•μ‹. View, 필터링
κ°œλ… μŠ€ν‚€λ§ˆ 논리 μŠ€ν‚€λ§ˆ 전체 DB ꡬ쑰. ERD, 관계, μ œμ•½μ‘°κ±΄
λ‚΄λΆ€ μŠ€ν‚€λ§ˆ μ €μž₯ μŠ€ν‚€λ§ˆ μ‹€μ œ 파일 포맷, λ ˆμ½”λ“œ ꡬ쑰, 인덱슀 λ“±

βœ… μš©μ–΄ ꡬ뢄 정리

μš©μ–΄ 의미 μ˜ˆμ‹œ λΉ„κ³ 
μ—”ν‹°ν‹°(Entity) ν˜„μ‹€ μ„Έκ³„μ˜ 독립적인 개체 (μΆ”μƒν™”λœ κ°œλ…) 학생, μ œν’ˆ, μ£Όλ¬Έ ν…Œμ΄λΈ” λ‹¨μœ„λ‘œ 맀핑됨
속성(Attribute) μ—”ν‹°ν‹°κ°€ κ°€μ§€λŠ” νŠΉμ„± (컬럼) 이름, ν•™λ²ˆ, μ „ν™”λ²ˆν˜Έ 컬럼이라고 뢀름
νŠœν”Œ(Tuple) μ†μ„±λ“€μ˜ μ§‘ν•©, ν•˜λ‚˜μ˜ λ ˆμ½”λ“œ (홍길동, 20240101, 010...) ν–‰(Row)
속성값(Value) 각 μ†μ„±μ˜ μ‹€μ œ κ°’ '홍길동', '010-1234' λ“± μ…€ κ°’(Cell)

🎯 μ‰½κ²Œ λ§ν•˜λ©΄

  • "학생"은 μ—”ν‹°ν‹° β†’ ν˜„μ‹€μ˜ 개체
  • "이름", "ν•™λ²ˆ"은 속성(Attribute) β†’ 컬럼(Column)
  • 홍길동, 20240001 β†’ 속성값, λ˜λŠ” 데이터 κ°’
  • ν•œ 쀄 전체 (홍길동, 20240001, κ²½μ˜ν•™κ³Ό) β†’ νŠœν”Œ(Tuple)

❌ μ˜€ν•΄ λ°©μ§€

잘λͺ»λœ ν‘œν˜„ μ˜¬λ°”λ₯Έ ν‘œν˜„
"μ»¬λŸΌκ°’μ€ μ—”ν‹°ν‹°λ‹€" ❌ "μ»¬λŸΌκ°’μ€ μ—”ν‹°ν‹°μ˜ 속성값이닀" βœ…
"μ—”ν‹°ν‹° = 컬럼" ❌ "μ—”ν‹°ν‹° = ν…Œμ΄λΈ”", "속성 = 컬럼" βœ…

-

βœ… 정리: μ—”ν‹°ν‹° β‰ˆ ν…Œμ΄λΈ”

κ°œλ… μ„€λͺ… μ˜ˆμ‹œ
μ—”ν‹°ν‹°(Entity) ν˜„μ‹€μ˜ 객체 λ˜λŠ” κ°œλ…μ„ DB둜 μΆ”μƒν™”ν•œ 것 학생, μƒν’ˆ, μ£Όλ¬Έ λ“±
ν…Œμ΄λΈ”(Table) μ—”ν‹°ν‹°λ₯Ό κ΅¬ν˜„ν•œ λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰 STUDENT, PRODUCT ν…Œμ΄λΈ” λ“±
  • ν•˜λ‚˜μ˜ μ—”ν‹°ν‹° β†’ ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”
  • ν•˜λ‚˜μ˜ 속성 β†’ ν•˜λ‚˜μ˜ 컬럼
  • ν•˜λ‚˜μ˜ μ—”ν‹°ν‹° μΈμŠ€ν„΄μŠ€ β†’ ν•˜λ‚˜μ˜ ν–‰(Row)

πŸ“Œ μ˜ˆμ‹œ: "학생(Student)" μ—”ν‹°ν‹°

ν•™λ²ˆ(ID) 이름(Name) ν•™κ³Ό(Department)
2024001 홍길동 컴퓨터곡학과
2024002 κΉ€μœ μ‹  κ²½μ˜ν•™κ³Ό
  • 이 전체 ν‘œ: STUDENT μ—”ν‹°ν‹° / ν…Œμ΄λΈ”
  • 각 μ—΄: 속성(Attribute) / 컬럼(Column)
  • 각 ν–‰: μ—”ν‹°ν‹° μΈμŠ€ν„΄μŠ€ / νŠœν”Œ(Tuple)

⚠️ 주의

  • ν…Œμ΄λΈ”μ΄ 항상 엔티티인 것은 μ•„λ‹˜.
    • πŸ‘‰ 예: 쑰인 κ²°κ³Όλ₯Ό λ‹΄λŠ” λ·°(View), μž„μ‹œ ν…Œμ΄λΈ”, 관계 ν…Œμ΄λΈ”(M:N)은 일반 μ—”ν‹°ν‹°κ°€ 아닐 수 있음.
  • μ—”ν‹°ν‹°λŠ” κ°œλ… λͺ¨λΈ(ER λͺ¨λΈ)의 μš©μ–΄,
    ν…Œμ΄λΈ”μ€ 논리/물리 λͺ¨λΈ(DB)의 μš©μ–΄μž„.

βœ… μš”μ•½ κ²°λ‘ 

ꡬ뢄 μ„€λͺ…
μŠ€ν‚€λ§ˆ(Schema)λŠ” ꡬ쑰 μ •μ˜ β†’ DDL(Data Definition Language) μ‚¬μš©
μΈμŠ€ν„΄μŠ€(Instance)λŠ” μ‹€μ œ 데이터 β†’ DML(Data Manipulation Language) μ‚¬μš©

πŸ“Œ κ°œλ… μ •μ˜ 정리

ꡬ뢄 μ •μ˜ μ˜ˆμ‹œ κ΄€λ ¨ SQL
μŠ€ν‚€λ§ˆ DB ꡬ쑰λ₯Ό μ •μ˜ν•œ 것 (ν‹€) ν…Œμ΄λΈ” ꡬ쑰, μ—΄ 이름, 데이터 νƒ€μž…, μ œμ•½μ‘°κ±΄ λ“± CREATE, ALTER, DROP (DDL)
μΈμŠ€ν„΄μŠ€ κ·Έ ꡬ쑰 μ•ˆμ— μ‹€μ œλ‘œ λ“€μ–΄μžˆλŠ” 데이터 홍길동, 2024001, 컴퓨터곡학 λ“±μ˜ 데이터 κ°’ SELECT, INSERT, UPDATE, DELETE (DML)

🎯 μ™œ κ·ΈλŸ°κ°€? (이유 μš”μ•½)

βœ… 1. μŠ€ν‚€λ§ˆ = λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰 β†’ μ •μ˜ν•΄μ•Ό ν•˜λ―€λ‘œ DDL

  • ν…Œμ΄λΈ” λ§Œλ“€κΈ°, 컬럼 μ •μ˜, ν‚€ μ„€μ • 등은 데이터 ν˜•μ‹μ„ μ •μ˜
  • ν˜•μ‹μ„ μ •μ˜ν•˜λŠ” λͺ…령은 DDL β†’ "Definition Language"

βœ… 2. μΈμŠ€ν„΄μŠ€ = ꡬ쑰 μ•ˆμ˜ 데이터 β†’ λ‹€λ£¨λŠ” 건 DML

  • 데이터λ₯Ό λ„£κ³ (INSERT), λ°”κΎΈκ³ (UPDATE), μ‘°νšŒν•˜κ³ (SELECT), μ‚­μ œ(DELETE)λŠ” μ‹€μ œ κ°’ μ‘°μž‘
  • 값을 μ‘°μž‘ν•˜λŠ” λͺ…령은 DML β†’ "Manipulation Language"

πŸ” κ°œλ… 흐름도 (μ‹œκ° 정리)

[ DDL ]
β”‚
β”œβ”€β”€ CREATE TABLE STUDENT (
β”‚      id INT PRIMARY KEY,
β”‚      name VARCHAR(50)
β”‚  );
β”‚        ↑
β”‚        β”‚
β”‚     ──▢ μŠ€ν‚€λ§ˆ μ •μ˜ (ν‹€ λ§Œλ“€κΈ°)
β”‚
β”‚
[ DML ]
β”‚
β”œβ”€β”€ INSERT INTO STUDENT VALUES (1, '홍길동');
β”œβ”€β”€ UPDATE STUDENT SET name='κΉ€μœ μ‹ ' WHERE id=1;
β”‚        ↑
β”‚        β”‚
β”‚     ──▢ μΈμŠ€ν„΄μŠ€ μ‘°μž‘ (κ°’ λ„£κ³  λ°”κΎΈκΈ°)

μ’‹μŠ΅λ‹ˆλ‹€. SQL λͺ…λ Ήμ–΄λŠ” 크게 4κ°€μ§€λ‘œ λΆ„λ₯˜λ˜λ©°, 각 λͺ…λ Ήμ–΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ—­ν• λ³„λ‘œ μ •λ¦¬λ©λ‹ˆλ‹€. μ•„λž˜μ— 전체 ꡬ쑰λ₯Ό μ •μ˜/μ‘°μž‘/μ œμ–΄/관리 μ€‘μ‹¬μœΌλ‘œ μ •λ¦¬ν‘œ + ν‚€μ›Œλ“œ μš”μ•½ + μ˜ˆμ‹œκΉŒμ§€ μ œκ³΅ν•΄ λ“œλ¦΄κ²Œμš”.


πŸ“˜ SQL λͺ…λ Ήμ–΄ 4λŒ€ λΆ„λ₯˜ μ •λ¦¬ν‘œ

λΆ„λ₯˜ λͺ…μΉ­ λͺ©μ  μ£Όμš” λͺ…λ Ήμ–΄ μ„€λͺ…
DDL Data Definition Language 데이터 ꡬ쑰 μ •μ˜ CREATE, ALTER, DROP, TRUNCATE ν…Œμ΄λΈ”, λ·°, 인덱슀, μŠ€ν‚€λ§ˆ μ •μ˜ 및 μˆ˜μ •
DML Data Manipulation Language 데이터 μ‘°μž‘ SELECT, INSERT, UPDATE, DELETE ν…Œμ΄λΈ” λ‚΄ 데이터 μΆ”κ°€/쑰회/μˆ˜μ •/μ‚­μ œ
DCL Data Control Language μ ‘κ·Ό μ œμ–΄ 및 κΆŒν•œ 관리 GRANT, REVOKE μ‚¬μš©μžμ—κ²Œ DB μ ‘κ·Ό κΆŒν•œ λΆ€μ—¬ 및 회수
TCL Transaction Control Language νŠΈλžœμž­μ…˜ 관리 COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION DML μ‹€ν–‰ 결과의 ν™•μ •/μ·¨μ†Œ 관리

βœ… λΆ„λ₯˜λ³„ ν‚€μ›Œλ“œ μš”μ•½

λΆ„λ₯˜ 핡심 ν‚€μ›Œλ“œ 기얡법
DDL μŠ€ν‚€λ§ˆ μ •μ˜, ꡬ쑰 λ³€κ²½ ν…Œμ΄λΈ”/DB 틀을 β€œλ§Œλ“€κ±°λ‚˜ λ°”κΏˆβ€
DML 데이터 μ‚½μž…, 쑰회, λ³€κ²½, μ‚­μ œ 데이터λ₯Ό β€œμ‘°μž‘β€
DCL μ ‘κ·Ό κΆŒν•œ, λ³΄μ•ˆ "λˆ„κ°€ μ ‘κ·Ό κ°€λŠ₯ν•œκ°€?"
TCL νŠΈλžœμž­μ…˜ ν™•μ •/μ·¨μ†Œ 데이터 μƒνƒœμ˜ β€œλ³΄μ‘΄/볡ꡬ”

πŸ“Œ λͺ…령어별 μ˜ˆμ‹œ

λΆ„λ₯˜ μ˜ˆμ‹œ μ„€λͺ…
DDL CREATE TABLE USER (id INT, name VARCHAR(20)); ν…Œμ΄λΈ” 생성
DML INSERT INTO USER VALUES (1, '홍길동'); 데이터 μ‚½μž…
DCL GRANT SELECT ON USER TO user1; user1μ—κ²Œ SELECT κΆŒν•œ λΆ€μ—¬
TCL COMMIT; / ROLLBACK; λ³€κ²½ 사항 ν™•μ • / 되돌리기

πŸ” 흐름 μš”μ•½ (생성 β†’ μ‘°μž‘ β†’ κΆŒν•œ β†’ 관리)

[DDL] μŠ€ν‚€λ§ˆ λ§Œλ“€κ³  β†’ [DML] 데이터 닀루고 β†’
[DCL] λˆ„κ°€ λ‹€λ£° 수 μžˆλŠ”μ§€ μ •ν•˜κ³  β†’
[TCL] νŠΈλžœμž­μ…˜ λ‹¨μœ„λ‘œ ν™•μ • or 되돌리기

πŸ” "μΈμŠ€ν„΄μŠ€"의 의미 3κ°€μ§€ (DBμ—μ„œ ν˜Όμš©λ˜λŠ” λ§₯락)

ꡬ뢄 의미 μ„€λͺ… μ˜ˆμ‹œ ν‘œν˜„
1️⃣ 데이터 μΈμŠ€ν„΄μŠ€ ν…Œμ΄λΈ” μ•ˆμ˜ μ‹€μ œ 데이터 μŠ€ν‚€λ§ˆμ˜ ꡬ쑰에 따라 μ €μž₯된 데이터듀 "νŠœν”Œ", "λ ˆμ½”λ“œ" 의미둜: μΈμŠ€ν„΄μŠ€ 데이터
2️⃣ DBMS μΈμŠ€ν„΄μŠ€ DB 엔진이 λ©”λͺ¨λ¦¬ 상에 뜬 μƒνƒœ ν•˜λ‚˜μ˜ DBκ°€ ꡬ동될 λ•Œ λ©”λͺ¨λ¦¬/ν”„λ‘œμ„ΈμŠ€ ꡬ성 "DB μΈμŠ€ν„΄μŠ€κ°€ μ£½μ—ˆλ‹€" β†’ DB ν”„λ‘œμ„ΈμŠ€ 쀑단
3️⃣ 였브젝트 μΈμŠ€ν„΄μŠ€ DBMS λ‚΄λΆ€ 객체의 μ‹€ν–‰ μΈμŠ€ν„΄μŠ€ μ„Έμ…˜, νŠΈλžœμž­μ…˜, μ»€μ„œ, 컀λ„₯μ…˜ λ“± 객체 κ΄€μ μ—μ„œ μ‹€ν–‰ 쀑인 μƒνƒœ "μ„Έμ…˜ μΈμŠ€ν„΄μŠ€κ°€ μΆ©λŒλ‚¬λ‹€"

βœ… μ§ˆλ¬Έμ—μ„œ μ–ΈκΈ‰ν•œ β€œμΈμŠ€ν„΄μŠ€κ°€ μ£½μ—ˆλ‹€β€μ˜ 의미

이건 "DBMS μΈμŠ€ν„΄μŠ€κ°€ μ£½μ—ˆλ‹€", 즉:

DB μ„œλ²„μ—μ„œ Oracle/MySQL/PostgreSQL λ“±μ˜ μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€κ°€ 비정상 μ’…λ£Œλ˜μ—ˆλ‹€λŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

  • DBMSλŠ” λ©”λͺ¨λ¦¬ μƒμ—μ„œ ν”„λ‘œμ„ΈμŠ€ + μΊμ‹œ + 버퍼 ν’€ + λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…μœΌλ‘œ κ΅¬μ„±λœ μ‹€ν–‰ λ‹¨μœ„κ°€ 있으며, 이것을 β€œμΈμŠ€ν„΄μŠ€β€λΌκ³  ν•©λ‹ˆλ‹€.
  • Oracleμ—μ„œλŠ” μΈμŠ€ν„΄μŠ€ = SGA + λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€ (β‰  λ°μ΄ν„°λ² μ΄μŠ€ 자체)

πŸ“Œ κ·Έλž˜μ„œ μ‹œμŠ€ν…œμ—μ„œλŠ” μ΄λ ‡κ²Œ λ§ν•©λ‹ˆλ‹€:

  • "DBλŠ” μ‚΄μ•„ μžˆλŠ”λ° μΈμŠ€ν„΄μŠ€κ°€ μ•ˆ λ–΄μ–΄μš”." β†’ λ””μŠ€ν¬μ— λ°μ΄ν„°λŠ” μžˆμœΌλ‚˜ μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€λŠ” 죽음
  • "μΈμŠ€ν„΄μŠ€ μ£½μ–΄μ„œ μ ‘κ·Ό μ•ˆ 됨" β†’ DBMSκ°€ λ‹€μš΄λœ μƒνƒœ

🧠 ν˜Όλ™ 정리

ν‘œν˜„ μ •ν™•ν•œ 의미 잘λͺ» μ˜€ν•΄λ  수 μžˆλŠ” 의미
"μΈμŠ€ν„΄μŠ€κ°€ μ£½μ—ˆλ‹€" DBMSκ°€ λ©”λͺ¨λ¦¬μƒμ—μ„œ 꺼짐 (μ„œλΉ„μŠ€ 뢈λŠ₯) ν…Œμ΄λΈ”μ΄λ‚˜ 데이터가 μ‚­μ œλœ κ²ƒμ²˜λŸΌ 듀릴 수 있음
"μΈμŠ€ν„΄μŠ€κ°€ λ§Žλ‹€" λ™μ‹œμ— μ—¬λŸ¬ DB ν”„λ‘œμ„ΈμŠ€ or μ‚¬μš©μž μ„Έμ…˜ λ‹¨μˆœνžˆ 데이터 양이 λ§Žμ€ κ²ƒμ²˜λŸΌ 착각 κ°€λŠ₯

βœ… 마무리 μš”μ•½

  • 데이터 μΈμŠ€ν„΄μŠ€: ν…Œμ΄λΈ” μ•ˆμ˜ 데이터
  • DB μΈμŠ€ν„΄μŠ€: ꡬ동 쀑인 DBMS의 λ©”λͺ¨λ¦¬ 싀행체
  • "μ£½μ—ˆλ‹€"λŠ” ν‘œν˜„: λŒ€κ°œ DB μΈμŠ€ν„΄μŠ€(ν”„λ‘œμ„ΈμŠ€)κ°€ λ‹€μš΄λ˜μ—ˆλ‹€λŠ” 뜻

'Study > DB' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

가상 νŠœν”Œ, νŒ¬ν…€ 좩돌, mvcc, cc  (0) 2025.04.15
Optimizer  (0) 2025.04.15