Sam Baek, The Dev's Corner

πŸ“š λ°μ΄ν„°λ² μ΄μŠ€μ˜ μš©μ–΄νƒλ°©

09 Jun 2023

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μš©μ–΄ 정리


λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 자주 λ“±μž₯ν•˜λŠ” μš©μ–΄λ“€μ΄ μžˆλ‹€.
SQLλ¬Έμž₯이야 λ‘˜μ§ΈμΉ˜λ”λΌλ„ μš©μ–΄λ₯Ό μ•Œμ•„λ‘λ©΄
의미λ₯Ό μ•Œκ³  ν™œμš©ν•  수 μžˆκ² λ‹€μ‹Άμ–΄ μ •λ¦¬ν•œλ‹€.

ν…Œμ΄λΈ”


ν…Œμ΄λΈ”μ€ ν–‰κ³Ό μ—΄μ˜ 쑰합이닀.
κ·ΈλŸ¬λ‚˜ Relation 즉, λ¦΄λ ˆμ΄μ…˜μ΄λΌλŠ” λ³€μˆ˜λ„ μ‘΄μž¬ν•˜λŠ”λ°
κ΄€κ³„ν˜• DBμ—μ„œ νŠΉλ³„ 쑰건을 μΆ”κ°€ν•  λ•Œ λΆ€λ₯΄λŠ” 이름이닀.
νŠΉλ³„ 쑰건은 첫 째둜 λͺ¨λ“  값이 μœ μΌν•œ 값을 κ°€μ Έμ•Όν•˜κ³ 
λ‘˜ 째둜 동일 λ¦΄λ ˆμ΄μ…˜μ—μ„œ μ€‘λ³΅λ˜λŠ” 행이 μ‘΄μž¬ν•˜λ©΄ μ•ˆλ˜λŠ” 것이닀.
κ·ΈλŸ¬λ‹ˆ ν…Œμ΄λΈ”μ€ λ¦΄λ ˆμ΄μ…˜μ΄ μ•„λ‹ˆμ§€λ§Œ,
λ¦΄λ ˆμ΄μ…˜μ€ ν…Œμ΄λΈ”μ΄ λ§žλ‹€.
κ΄€κ³„ν˜• DBμ—μ„œ 두 쑰건을 μΆ©μ‘±ν•˜λŠ” ν…Œμ΄λΈ”λ§Œμ΄ λ¦΄λ ˆμ΄μ…˜μ΄ λ˜λŠ” 것이닀.

ν–‰


κ°€λ‘œλ‹€. κ°€λ‘œμ— μžˆλŠ” 데이터셋을 μ˜λ―Έν•œλ‹€.
일반적으둜 ν•˜λ‚˜μ˜ 행은 κ°œλ³„ 객체에 λŒ€ν•œ 정보λ₯Ό κ°–κ³  μžˆλ‹€.
μ˜ˆμ»¨λŒ€, userA β€˜κΉ€μ•„λ¬΄κ°œβ€™ β€˜31살’ β€˜010-1234-5678’ μ΄λŸ°μ‹μ΄λ‹€.
κ΄€κ³„ν˜• DB에선 행을 Tuple(νŠœν”Œ) ν˜Ήμ€ Record(λ ˆμ½”λ“œ)라고 λΆ€λ₯Έλ‹€.

μ—΄


μ„Έλ‘œλ‹€. μ„Έλ‘œμ— μžˆλŠ” 데이터셋을 μ˜λ―Έν•œλ‹€.
일반적으둜 열은 속성을 μ˜λ―Έν•˜κ³  ꡬ성값은 같은 Domain(도메인)으둜 λ˜μ–΄μžˆλ‹€.
μœ„μ˜ μ˜ˆμ‹œ 보면 1열은 userλͺ…이고 2열은 이름 3열은 λ‚˜μ΄ λ“± 속성을 μ•Œ μˆ˜μžˆλ‹€.
κ΄€κ³„ν˜• DBλŠ” 열을 Attribute(속성)이라고 λΆ€λ₯Έλ‹€.

도메인


도메인은 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν•„λ“œμ— μ±„μ›Œμ§ˆ 수 μžˆλŠ” κ°’μ˜ 집합이닀.
μ˜ˆμ»¨λŒ€, 도메인이 μ •μˆ˜μΈ 속성 ν•„λ“œμ— λ¬Έμžκ°’μ΄ λ“€μ–΄κ°ˆ 수 μ—†λŠ” 것은
λ¬Έμžκ°’μ΄ 도메인에 ν¬ν•¨λ˜μ§€ μ•ŠλŠ” 값이기 λ•Œλ¬Έμ΄λ‹€.

μŠ€ν‚€λ§ˆ


μŠ€ν‚€λ§ˆλŠ” μ™ΈλΆ€ μŠ€ν‚€λ§ˆ, κ°œλ… μŠ€ν‚€λ§ˆ, λ‚΄λΆ€ μŠ€ν‚€λ§ˆλ‘œ λ‚˜λ‰˜κ³ 
DBMSλŠ” μ™ΈλΆ€ μŠ€ν‚€λ§ˆλ₯Ό κ°œλ… μŠ€ν‚€λ§ˆλ‘œ,
κ°œλ… μŠ€ν‚€λ§ˆλ₯Ό λ‚΄λΆ€ μŠ€ν‚€λ§ˆλ‘œ λ³€ν™˜ν•œλ‹€.
μŠ€ν‚€λ§ˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰
즉, 데이터 λ ˆμ½”λ“œμ˜ 크기, ν‚€μ˜ μ •μ˜, λ ˆμ½”λ“œ κ°„μ˜ 관계 등을
μ „λ°˜μ μœΌλ‘œ κΈ°μˆ ν•œ 것을 μ˜λ―Έν•œλ‹€.

μ™ΈλΆ€ μŠ€ν‚€λ§ˆλŠ” μ‚¬μš©μžμ˜ μž…μž₯μ—μ„œ μ •μ˜ν•œ DB의 논리적 ꡬ쑰λ₯Ό λ§ν•œλ‹€.
λͺ…μ„Έλž€ 데이터λ₯Ό μ–΄λ–€ ν˜•μ‹μ—μ„œ μ–΄λ–€ κ΅¬μ‘°μ—μ„œ μ–΄λ–€ ν™”λ©΄μ—μ„œ
μ‚¬μš©μžμ—κ²Œ 보여쀄 것인지λ₯Ό μ˜λ―Έν•˜λŠ”λ°
μ™ΈλΆ€ μŠ€ν‚€λ§ˆλŠ” 이런 λͺ…μ„Έλ₯Ό μ˜λ―Έν•œλ‹€.
ν•˜λ‚˜μ˜ DBλŠ” μ—¬λŸ¬ 개의 μ™ΈλΆ€ μŠ€ν‚€λ§ˆλ₯Ό κ°€μ§ˆ 수 있고
일반 μ‚¬μš©μžμ—κ²ŒλŠ” μ§ˆμ˜μ–΄λ‘œ μ‰½κ²Œ DBλ₯Ό μ‚¬μš©ν•˜κ²Œλ”ν•˜κ³ 
μ‘μš© ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” μ–Έμ–΄λ‘œ DB에 μ ‘κ·Όν•˜λ„λ‘ ν•œλ‹€.

κ°œλ… μŠ€ν‚€λ§ˆλŠ” 쑰직체 전체λ₯Ό κ΄€μž₯ν•˜λŠ” μž…μž₯μ—μ„œ DBλ₯Ό μ •μ˜ν•œ 것이고
β€˜μŠ€ν‚€λ§ˆβ€™λΌκ³  λ§ν•˜λ©΄ 보톡 κ°œλ… μŠ€ν‚€λ§ˆλ₯Ό μΌμ»«λŠ”λ‹€.
DB에 λŒ€ν•œ λͺ¨λ“  논리적 ꡬ쑰λ₯Ό κΈ°μˆ ν•˜κΈ° λ•Œλ¬Έμ—
ν•˜λ‚˜μ˜ DB에 ν•˜λ‚˜μ˜ κ°œλ… μŠ€ν‚€λ§ˆλ§Œ μ‘΄μž¬ν•œλ‹€.

λ‚΄λΆ€ μŠ€ν‚€λ§ˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ–΄λ–»κ²Œ μ €μž₯ μž₯μΉ˜μ— μ €μž₯될 지에 λŒ€ν•œ λͺ…세이닀
물리적인 μ €μž₯ μž₯μΉ˜μ™€ λ°μ΄ν„°λ² μ΄μŠ€ κ°„μ˜ 관계λ₯Ό μ •μ˜ν•˜λ―€λ‘œ
μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ¨Έλ‚˜ μ‹œμŠ€ν…œ μ„€κ³„μžκ°€ λ³΄λŠ” κ΄€μ μ˜ μŠ€ν‚€λ§ˆλ₯Ό μ˜λ―Έν•œλ‹€.