Programing_Java

[SQLD] ์†์„ฑ๊ณผ ์—”ํ„ฐํ‹ฐ ์‹๋ณ„์ž ๋ณธ๋ฌธ

๐Ÿ’พ SQL_

[SQLD] ์†์„ฑ๊ณผ ์—”ํ„ฐํ‹ฐ ์‹๋ณ„์ž

Joyfullyever 2025. 2. 10. 20:14

#1 ์†์„ฑ

: ์—…๋ฌด์—์„œ ํ•„์š”ํ•œ ์ •๋ณด์ธ Entity๊ฐ€ ๊ฐ€์ง€๋Š” ํ•ญ๋ชฉ

: ๋” ์ด์ƒ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋‹จ์œ„

: Instance์˜ ๊ตฌ์„ฑ์š”์†Œ, ์˜๋ฏธ์ ์œผ๋กœ ๋” ์ด์ƒ ๋ถ„ํ•ด๋˜์ง€ ์•Š์Œ

 

Instance : ํŠน์ • ์‹œ์ ์— DB์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ

Schema : DB์˜ ๊ตฌ์กฐ → ์ด ๊ตฌ์กฐ์— ์ €์žฅ๋œ ์‹ค์ œ ๋ฐ์ดํ„ฐ = Instance

 

1-1) ํŠน์ง•

: ์—…๋ฌด์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ์ •๋ณด

: ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๊ฐ€์ง

: ์ฃผ์‹๋ณ„์ž์—๊ฒŒ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†, ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์†์„ฑ์˜ ๊ฐ’๋„ ๋ณ€๊ฒฝ

 

1-2) ์ข…๋ฅ˜

: ๋ถ„ํ•ด ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ์†์„ฑ์˜ ์ข…๋ฅ˜

์ข…๋ฅ˜ ์„ค๋ช…
๋‹จ์ผ ์†์„ฑ ํ•˜๋‚˜์˜ ์˜๋ฏธ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒƒ
Ex) ํšŒ์›ID, ์ด๋ฆ„
๋ณตํ•ฉ ์†์„ฑ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ
Ex) ์ฃผ์†Œ → ์‹œ, ๊ตฐ, ๋™ ๋“ฑ์œผ๋กœ ๋ถ„ํ•ด๊ฐ€ ๊ฐ€๋Šฅ
๋‹ค์ค‘๊ฐ’ ์†์„ฑ ์†์„ฑ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ
๋‹ค์ค‘๊ฐ’ ์†์„ฑ์€ Entity๋กœ ๋ถ„ํ•ด
Ex) ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ์˜ Category

 

: ํŠน์„ฑ์— ๋‹ค๋ฅธ ์†์„ฑ์˜ ์ข…๋ฅ˜

์ข…๋ฅ˜ ์„ค๋ช…
๊ธฐ๋ณธ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์—์„œ ๋„์ถœ๋˜๋Š” ๋ณธ๋ž˜์˜ ์†์„ฑ
Ex) ํšŒ์›ID, ์ด๋ฆ„, ๊ณ„์ขŒ๋ฒˆํ˜ธ
์„ค๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ณผ์ •์—์„œ ๋ฐœ์ƒ๋˜๋Š” ์†์„ฑ → Concept ์†์„ฑ
์œ ์ผํ•œ ๊ฐ’์„ ๋ถ€์—ฌ
Ex) ์ƒํ’ˆ์ฝ”๋“œ, ์ง€์ ์ฝ”๋“œ
ํŒŒ์ƒ ๋‹ค๋ฅธ ์†์„ฑ์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ์†์„ฑ
Ex) ํ•ฉ๊ณ„, ํ‰๊ท 

 

Domain : ์†์„ฑ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„ → ์„ฑ๋ณ„์ด๋ผ๋Š” ์†์„ฑ์˜ ๋„๋ฉ”์ธ == ๋‚จ์ž & ์—ฌ์ž

 

#1-1 ๊ด€๊ณ„ Relationship

: Entity ๊ฐ„์˜ ๊ด€๋ จ์„ฑ์„ ์˜๋ฏธ, ์กด์žฌ ๊ด€๊ณ„์™€ ํ–‰์œ„ ๊ด€๊ณ„๋กœ ๋ถ„๋ฅ˜

์กด์žฌ ๊ด€๊ณ„ : ๋‘ ๊ฐœ์˜ Entity๊ฐ€ ์กด์žฌ ์—ฌ๋ถ€์˜ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ

ํ–‰์œ„ ๊ด€๊ณ„ : ๋‘ ๊ฐœ์˜ Entity๊ฐ€ ์–ด๋–ค ํ–‰์œ„์— ์˜ํ•œ ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š” ๊ฒƒ

 

1-1) ์กด์žฌ ๊ด€๊ณ„

: Entity๊ฐ„์˜ ์ƒํƒœ๋ฅผ ์˜๋ฏธ → ๊ณ ๊ฐ์ด ๊ด€๋ฆฌ์ ์— "์†Œ์†" // ๊ด€๊ณ„, ์ƒํƒœ

 

1-2 ํ–‰์œ„ ๊ด€๊ณ„

: Entity ๊ฐ„์— ์–ด๋–ค ํ–‰์œ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ → ๊ณ„์ขŒ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ฃผ๋ฌธ์„ ๋ฐœ์ฃผํ•˜๋Š” ๊ด€๊ณ„๊ฐ€ ๋งŒ๋“ค์–ด์ง

 

1-3 ๊ด€๊ณ„ ์ฐจ์ˆ˜ Cardinality

: ๋‘๊ฐœ์˜ Entity ๊ฐ„์— ๊ด€๊ณ„์— ์ฐธ์—ฌํ•˜๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธ → ํ•œ๋ช…์˜ ๊ณ ๊ฐ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ณ„์ขŒ๋ฅผ ๊ฐœ์„คํ•  ์ˆ˜ ์žˆ์Œ = 1 ๋Œ€ N ๊ด€๊ณ„

 

1-3-1) ์ข…๋ฅ˜

1. ์ตœ๋Œ€ ๊ธฐ์ˆ˜์„ฑ → 1 ๋Œ€ 1, 1 ๋Œ€ M, M ๋Œ€ N

2. ์ตœ์†Œ ๊ธฐ์ˆ˜์„ฑ → ํ•„์ˆ˜, ์„ ํƒ : ๊ณ ๊ฐ์€ ์ผ๋‹จ ํ•˜๋‚˜์˜ ๊ณ„์ขŒ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•จ ⇒ 1 ๋Œ€ 1 ๊ด€๊ณ„์™€ ์œ ์‚ฌ

 

M ๋Œ€ N → ์„œ๋กœ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€์žˆ๋Š” ๊ฒƒ ⇒ 1 ๋Œ€ 1 ๋˜๋Š” 1 ๋Œ€ M ์œผ๋กœ ํ•ด์†Œํ•˜๋Š” ๊ณผ์ •๋„ ํ•„์š”

 

1-3-2) 1 ๋Œ€ 1 ๊ด€๊ณ„

: ์™„์ „ or ์„ ํƒ์ 

์™„์ „ → ํ•˜๋‚˜์˜ Entity์— ๊ด€๊ณ„๋˜๋Š” Entity์˜ ๊ด€๊ณ„๊ฐ€ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ ⇒ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผํ•จ

์„ ํƒ์  → ํ•˜๋‚˜์˜ Entity์— ๊ด€๊ณ„๋˜๋Š” Entity์˜ ๊ด€๊ณ„๊ฐ€ ํ•˜๋‚˜์ด๊ฑฐ๋‚˜ ์—†์„ ์ˆ˜๋„ ์žˆ์Œ

 

1-3-3) 1 ๋Œ€ N ๊ด€๊ณ„

: Entity์— ํ–‰์ด ํ•˜๋‚˜ ์žˆ์„ ๋•Œ ๋‹ค๋ฅธ Entity์˜ ๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ด€๊ณ„

→ ๊ณ ๊ฐ์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ณ„์ขŒ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

 

1-3-4) M ๋Œ€ N ๊ด€๊ณ„

: ๋‘ ๊ฐœ์˜ Entity๊ฐ€ ์„œ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ

→ ํ•œ๋ช…์˜ ํ•™์ƒ์ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ณผ๋ชฉ์„ ์ˆ˜๊ฐ• // ํ•œ๊ฐœ์˜ ๊ณผ๋ชฉ์„ ์—ฌ๋Ÿฌ ๋ช…์˜ ํ•™์ƒ์ด ์ˆ˜๊ฐ•

: ๊ด€๊ณ„ํ˜• DB์—์„œ M ๋Œ€ N ๊ด€๊ณ„์˜ Join์€ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์ด ๋ฐœ์ƒ → 1 ๋Œ€ N ๋˜๋Š” N ๋Œ€ 1๋กค ํ•ด์†Œํ•ด์•ผํ•จ (ํ•„์š”์— ๋”ฐ๋ผ ์กด์žฌ)

 

1-3-5) ํ•„์ˆ˜์  ๊ด€๊ณ„

: ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋Š” ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ๊ด€๊ณ„ → | ๋กœ ํ‘œํ˜„

→ ๊ณ ๊ฐ์ด ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ๊ณ„์ขŒ ๊ฐœ์„ค ๊ฐ€๋Šฅ

 

1-3-6) ์„ ํƒ์  ๊ด€๊ณ„

: ์—†์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ด€๊ณ„ → 0 ์œผ๋กœ ํ‘œํ˜„

→ ๊ณ ๊ฐ์ด ์žˆ์–ด๋„ ๊ณ„์ขŒ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Œ

 

1-4 ์กด์žฌ ๊ด€๊ณ„ → Entity ๊ฐ„์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ

 

1-4-1) ์‹๋ณ„ ๊ด€๊ณ„ (Identification Relationship) → ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„

Ex) ๊ณ ๊ฐ & ๊ณ„์ขŒ Entity

๊ณ ๊ฐ → ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•ํ•œ ๊ฐœ์ฒด (Strong Entity)

๊ณ„์ขŒ → ์•ฝํ•œ ๊ฐœ์ฒด (Week Entity)

 

๊ฐ•ํ•œ ๊ฐœ์ฒด → ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ์ง€๋ฐฐ๋˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ๊ฐœ์ฒด

์•ฝํ•œ ๊ฐœ์ฒด → ๊ฐœ์ฒด์˜ ์กด์žฌ๊ฐ€ ๋‹ค๋ฅธ ๊ฐœ์ฒด์˜ ์กด์žฌ์— ๋‹ฌ๋ ค์žˆ๋Š” ๊ฐœ์ฒด : ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ๋ณ€ํ•˜๋ฉด ์•ฝํ•œ ๊ฐœ์ฒด๋„ ๋ณ€ํ•จ

 

๊ฐ•ํ•œ ๊ฐœ์ฒด

: ๋‹ค๋ฅธ Entity์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ

: ๋‹ค๋ฅธ Entity์™€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์งˆ ๋•Œ ๋‹ค๋ฅธ Entity์—๊ฒŒ ๊ธฐ๋ณธํ‚ค ๊ณต์œ 

: ์‹๋ณ„ ๊ด€๊ณ„๋กœ ํ‘œํ˜„๋จ

→ ๊ณ ๊ฐ Entity์˜ ๊ธฐ๋ณธํ‚ค์ธ ํšŒ์›ID๋ฅผ ๊ณ„์ขŒ Entity์˜ ๊ธฐ๋ณธํ‚ค์˜ ํ•˜๋‚˜๋กœ ๊ณต์œ 

: ๊ฐ•ํ•œ ๊ฐœ์ฒด์˜ ๊ธฐ๋ณธํ‚ค ๊ฐ’์ด ๋ณ€๊ฒฝ ๋  ๋•Œ, ์‹๋ณ„๊ด€๊ณ„์— ์žˆ๋Š” Entity์˜ ๊ฐ’๋„ ๋ณ€๊ฒฝ

 

1-4-2) ๋น„์‹๋ณ„ ๊ด€๊ณ„ (Non-Identification Relationship)

: ๊ฐ•ํ•œ ๊ฐœ์ฒด์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๋‹ค๋ฅธ Entity์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์นผ๋Ÿผ์œผ๋กœ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ

: ๋น„์‹๋ณ„ ๊ด€๊ณ„๋Š” ์ ์„ ์œผ๋กœ ํ‘œํ˜„

 

#2 ์—”ํ„ฐํ‹ฐ ์‹๋ณ„์ž (Entity Identifier)

์‹๋ณ„์ž : Entity๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์†์„ฑ → ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ๊ณ„์ขŒ๋ฒˆํ˜ธ, ์—ฌ๊ถŒ๋ฒˆํ˜ธ ๋“ฑ

 

ํ‚ค์˜ ์ข…๋ฅ˜

DB ํ‚ค ์„ค๋ช…
๊ธฐ๋ณธํ‚ค (Primary Key) ํ›„๋ณดํ‚ค ์ค‘์—์„œ Entity๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค
ํ›„๋ณดํ‚ค (Candidate Key) ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ‚ค → ๋ถˆ๋ณ€์„ฑ์„ ์ง€๋‹ˆ์ง€ ๋ชปํ•จ
์Šˆํผํ‚ค (Super Key) ์œ ์ผ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ํ‚ค
๋Œ€์ฒดํ‚ค (Alternate Key) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ›„๋ณดํ‚ค ์ค‘์—์„œ ๊ธฐ๋ณธํ‚ค๋ฅผ ์„ ์ •ํ•˜๊ณ  ๋‚จ์€ ํ‚ค → ๊ธฐ๋ณธํ‚ค๋กœ ๋ฐ”๋€” ์ˆ˜๋„ ์žˆ์Œ
์™ธ๋ž˜ํ‚ค (Foreign Key) ํ•˜๋‚˜ ํ˜น์€ ๋‹ค์ˆ˜์˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ‚ค
→ ํ—ˆ์šฉ๋œ ๋ฐ์ดํ„ฐ ๊ฐ’๋งŒ DB์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
→ ๊ธฐ๋ณธํ‚ค์™€ ์—ฐ๋™์ด ๋˜๋ฉด์„œ ์œ ์ผํ•˜๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก

 

2-1) ์ฃผ์‹๋ณ„์ž (๊ธฐ๋ณธํ‚ค, Primary Key)

์ตœ์†Œ์„ฑ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ‚ค
๋Œ€ํ‘œ์„ฑ Entity๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ
์œ ์ผ์„ฑ Instance๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„
๋ถˆ๋ณ€์„ฑ ์ž์ฃผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„์•ผํ•จ

 

2-2) ์ธ์กฐ ์‹๋ณ„์ž

: ์ธ์œ„์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„์ž

 

2-3) ์‹๋ณ„์ž ์ข…๋ฅ˜

1. ๋Œ€ํ‘œ์„ฑ

: ์ฃผ์‹๋ณ„์ž & ๋ณด์กฐ์‹๋ณ„์ž

→ ์ฃผ์‹๋ณ„์ž : Entity๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„์ž, ๋‹ค๋ฅธ Entity์™€ ์ฐธ์กฐ ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Œ

→ ๋ณด์กฐ ์‹๋ณ„์ž : ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ ๋Œ€ํ‘œ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ์‹๋ณ„์ž

 

2. ์ƒ์„ฑ ์—ฌ๋ถ€

: ๋‚ด๋ถ€ ์‹๋ณ„์ž & ์™ธ๋ถ€ ์‹๋ณ„์ž

→ ๋‚ด๋ถ€ ์‹๋ณ„์ž : Entity ๋‚ด๋ถ€์—์„œ ์Šค์Šค๋กœ ์ƒ์„ฑ๋˜๋Š” ์‹๋ณ„์ž

→ ์™ธ๋ถ€ ์‹๋ณ„์ž : ๋‹ค๋ฅธ Entit์™€์˜ ๊ด€๊ณ„๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„์ž

 

3. ์†์„ฑ์˜ ์ˆ˜

: ๋‹จ์ผ ์‹๋ณ„์ž & ๋ณตํ•ฉ ์‹๋ณ„์ž

→ ๋‹จ์ผ ์‹๋ณ„์ž : ํ•˜๋‚˜์˜ ์†์„ฑ

→ ๋ณตํ•ฉ ์‹๋ณ„์ž : ๋‘๊ฐœ ์ด์ƒ์˜ ์†์„ฑ

 

4. ๋Œ€์ฒด ์—ฌ๋ถ€

: ๋ณธ์งˆ ์‹๋ณ„์ž & ์ธ์กฐ ์‹๋ณ„์ž

→ ๋ณธ์งˆ ์‹๋ณ„์ž : ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„์ž

→ ์ธ์กฐ ์‹๋ณ„์ž : ์ธ์œ„์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์‹๋ณ„์ž

⇒ ํ›„๋ณด ์‹๋ณ„์ž ์ค‘์—์„œ ์ฃผ์‹๋ณ„์ž๋กœ ์„ ์ •ํ•  ๊ฒƒ์ด ์—†๊ฑฐ๋‚˜, ์ฃผ์‹๋ณ„์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ปฌ๋Ÿผ์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ, ์ˆœ์„œ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹๋ณ„์ž๋ฅผ ๋งŒ๋“ฌ