λ°μ΄ν° λͺ¨λΈκ³Ό SQL
β’
β’
β’
μ κ·ν
μ΄μ νμμ ν΄κ²°νκΈ° μν΄ λ°μ΄ν°λ₯Ό λΆν΄νλ κ³Όμ
β’
λ°μ΄ν° μ€λ³΅ μ΅μν
β’
λ°μ΄ν° μ μ°μ± μ΅λν
1μ κ·ν | 2μ κ·ν | 3μ κ·ν | BCNF | 4μ κ·ν | 5μ κ·ν |
λ | λΆ | μ΄ | κ²° | λ€ | μ‘° |
μ΄μνμ
λ°μ΄ν°μ μ€λ³΅μ±κ³Ό μ’
μμ±μΌλ‘ μΈν΄ λ°μνλ νμ
β’
μ’
λ₯
μ΄μ νμ | μ€λͺ
|
μ½μ
μ΄μ
(Insertion Anomaly) | λ°μ΄ν°λ₯Ό μΆκ°νκΈ° μν΄ νμν μ λ³΄κ° λΆμ‘±νμ¬ λ°μνλ νμ |
κ°±μ μ΄μ
(Update Anomaly) | λ°μ΄ν° μΌλΆλ₯Ό μ
λ°μ΄νΈν λ μΌκ΄μ±μ΄ μλ λ°μ΄ν° λ³κ²½μ΄ λ°μνλ νμ |
μμ μ΄μ
(Deletion Anomaly) | νΉμ νμ μμ ν λ μμΉ μλ λ°μ΄ν° μμ€μ΄ λ°μνλ νμ |
μ κ·ν μ μ°¨
β’
μ 1μ κ·ν
β’
μ 2μ κ·ν
β’
μ 3μ κ·ν
β’
BCNF (Boyce-Codd Normal Form)
β’
μ 4μ κ·ν
β’
μ 5μ κ·ν
μ 1μ κ·ν
κ° μ΄μ΄ μμμ (Atomic)μΈ κ°μ κ°μ§λλ‘ ν
μ΄λΈμ λΆν΄νλ κ³Όμ
κ° μ΄μλ νλμ κ°λ§ ν¬ν¨λμ΄μΌ ν©λλ€. λ§μ½ μ¬λ¬ κ°μ ν¬ν¨νκ³ μλ€λ©΄ μ΄λ₯Ό λ³λμ νμΌλ‘ λΆλ¦¬ν©λλ€.
μ 2μ κ·ν
λΆλΆ ν¨μ μ’
μμ΄ μλ μνλ‘ ν
μ΄λΈμ λΆν΄νλ κ³Όμ
μ 3μ κ·ν
μ΄ν ν¨μ μ’
μμ΄ μλ μνλ‘ ν
μ΄λΈμ λΆν΄νλ κ³Όμ
BCNF (Boyce-Codd Normal Form)
λͺ¨λ κ²°μ μκ° ν보 ν€(candidate key)μΈ μνλ‘ ν
μ΄λΈμ μ¬κ΅¬μ±νλ κ³Όμ
μ 4μ κ·ν
λ€μΉ μ’
μμ±μ΄ μ κ±°νκΈ° μν΄ ν
μ΄λΈμ λΆν΄νλ κ³Όμ
μ 5μ κ·ν
μ‘°μΈ μ’
μμ±μ΄ μ κ±°νκΈ° μν΄ ν
μ΄λΈμ λΆν΄νλ κ³Όμ
ν¨μμ μ’ μμ±
β’
λΆλΆ ν¨μ μ’
μμ±
β’
μμ ν¨μ μ’
μμ±
β’
μ΄ν(μ μ΄) ν¨μ μ’
μμ±
β’
λ€μΉ ν¨μ μ’
μμ±
λΆλΆ ν¨μ μ’ μμ±
ν μμ±μ΄ λ€λ₯Έ μμ±μ μΌλΆμ λν΄λ§ ν¨μμ μΌλ‘ μ’
μ
: (A,B)
C + B
D
μμ ν¨μ μ’ μμ±
ν μμ±μ΄ λ€λ₯Έ μμ±μ λͺ¨λ λΆλΆμ λν΄ ν¨μμ μΌλ‘ μ’
μ
: (A,B)
C
μ΄ν(μ μ΄) ν¨μ μ’ μμ±
ν μμ±μ΄ λ€λ₯Έ μμ±μ ν΅ν΄ κ°μ μ μΌλ‘ ν¨μμ μΌλ‘ μ’
μ
: A
B
C
λ€μΉ ν¨μ μ’ μμ±
ν μμ±μ΄ 2κ° μ΄μμ μμ±μ ν¨μμ μΌλ‘ μ’
μ
μ κ·νμ νκ³(λ¬Έμ μ )
μν°ν°λ₯Ό λ무 λ§μ΄ λΆν΄νλ©΄, μ‘°ν μ μ¦μ μ‘°μΈμ μ λ°νλ€.
μ‘°ν μ±λ₯ μ ν μ λ°(μλ λλ €μ§)
λ°μ κ·ν
μ κ·νλ μν°ν°λ₯Ό ν©μΉκ±°λ μ€λ³΅ λ°μ΄ν°λ₯Ό νμ©νλ κ³Όμ
λ°μ κ·νκ° νμν κ²½μ°
β’
μμ½/μ§κ³ μ λ³΄κ° μꡬλλ κ²½μ°
β’
νΉμ λ²μμ λ°μ΄ν°λ§ μμ£Ό μ‘°ννλ κ²½μ°
β’
λ€λμ λ²μλ₯Ό μμ£Ό μ²λ¦¬νλ κ²½μ°
β’
μ κ·νλ‘ μΈν΄ μν μλκ° λλ €μ§λ κ²½μ°
λ°μ κ·ν κΈ°λ²
1.
κ³μ°λ μ»¬λΌ μΆκ°
2.
ν
μ΄λΈ μμ§ λΆν
3.
ν
μ΄λΈ μν λΆν
4.
ν
μ΄λΈ λ³ν©
λ°μ κ·ν κΈ°λ² | μ€λͺ
|
κ³μ°λ μ»¬λΌ μΆκ° | βν©κ³, νκ· λ± μμ£Ό μ¬μ©λλ κ³μ°λ λ°μ΄ν°λ₯Ό λ§€λ² μ‘°μΈ λ° ν¨μ μ¬μ©μ νμ§ μκ³ λ°°μΉλ₯Ό λλ € 미리 κ³μ°ν κ°μ 컬λΌμ μΆκ°ν΄λλ κΈ°λ²β μ‘°ν μ±λ₯μ ν₯μμν€κ³ , 볡μ‘ν μ°μ°μ μ€μ¬μ€. |
ν
μ΄λΈ μμ§ λΆν | β컬λΌμ κΈ°μ€μΌλ‘ λΆν β. ν ν
μ΄λΈμ 컬λΌμ λ κ° μ΄μμ ν
μ΄λΈλ‘ λλλ κΈ°λ². μμ£Ό μ¬μ©νλ 컬λΌκ³Ό κ·Έλ μ§ μμ 컬λΌμ λ³λμ ν
μ΄λΈλ‘ λΆλ¦¬νμ¬ μ‘°ν μ±λ₯μ ν₯μμν΄. |
ν
μ΄λΈ μν λΆν | βκ°μ κΈ°μ€μΌλ‘ λΆν β. ν ν
μ΄λΈμ λ‘μ°λ₯Ό λ κ° μ΄μμ ν
μ΄λΈλ‘ λλλ κΈ°λ². μμ£Ό μ¬μ©λλ λ‘μ°μ κ·Έλ μ§ μμ λ‘μ°λ₯Ό λ³λμ ν
μ΄λΈλ‘ λΆλ¦¬νμ¬ μ‘°ν μ±λ₯μ ν₯μμν΄. |
ν
μ΄λΈ λ³ν© | λ κ° μ΄μμ ν
μ΄λΈμ νλμ ν
μ΄λΈλ‘ ν©μΉλ κΈ°λ². μ¬λ¬ ν
μ΄λΈ κ°μ μ‘°μΈμ μ€μ¬μ μ‘°ν μ±λ₯μ ν₯μμν΄. λ¨, λ°μ΄ν° μ€λ³΅μ΄ λ°μν μ μμ. |
νν°μ (Partition) κΈ°λ²
λμ©λμ λ°μ΄ν°λ₯Ό λ μμ λ
Όλ¦¬μ λ¨μλ‘ λΆν νμ¬ λ°μ΄ν° μ±λ₯μ ν₯μμν€λ κΈ°λ²
νν°μ
κΈ°λ² | μ€λͺ
|
Range Partition | μ°μλ λ²μλ₯Ό κΈ°λ°μΌλ‘ λ°μ΄ν°λ₯Ό λΆν νμ¬ νν°μ
μ μμ±ν¨. |
List Partition | λͺ©λ‘μ λ°λΌ λ°μ΄ν°λ₯Ό λΆν νμ¬ νν°μ
μ μμ±ν¨. |
Hash Partition | ν΄μ ν¨μλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λΆν νμ¬ νν°μ
μ μμ±ν¨. |
Composite Partition | λ κ° μ΄μμ νν°μ
ν€λ₯Ό μ‘°ν©νμ¬ λ°μ΄ν°λ₯Ό λΆν ν¨. |
Super Type & Sub Type
λΆλͺ¨μ μμ κ°μ κ΄κ³λ‘, μμ μν°ν°μ νμ μν°ν°λ₯Ό λνλ΄λ κ°λ
ex) κ³ κ° μν°ν°
β’
Super Type : κ³ κ° μν°ν°
β¦
Sub Type : κ°μΈ κ³ κ° μν°ν°
β¦
Sub Type : λ²μΈ κ³ κ° μν°ν°
Super Type & Sub Type λ³ν λ°©λ²
λ³ν λ°©λ² | μ€λͺ
|
OneToOne Type | - νμ μ νλ€μ΄ μμ μ νκ³Ό μΌλμΌ κ΄κ³λ₯Ό κ°μ§.
- ν
μ΄λΈ μ : κ°λ³ ν
μ΄λΈ [ μνΌ(1), μλΈ(1) ]
- μ‘°μΈ μ±λ₯ : λμ¨ |
Plus Type | - νμ μ νλ€μ΄ μλ‘ μ€λ³΅λμ§ μκ³ , μμ μ νκ³Ό μΌλλ€ κ΄κ³λ₯Ό κ°μ§.
- ν
μ΄λΈ μ : κ°λ³ ν
μ΄λΈ [ μνΌ(1), μλΈ(1) ]
- μ‘°μΈ μ±λ₯ : λμ¨ |
Single Type | - νμ μ νλ€μ΄ μλ‘ μ€λ³΅λ μ μκ³ , μμ μ νκ³Ό λ€λλ€ κ΄κ³λ₯Ό κ°μ§.
- ν
μ΄λΈ μ : λ¨μΌ ν
μ΄λΈ [ μνΌ+μλΈ(1) ]
- μ‘°μΈ μ±λ₯ : μ’μ
* μ
μΆλ ₯ μ±λ₯ λμ¨ |
κ΄κ³μ μ‘°μΈ
κ΄κ³(Relationship)
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μμλ μν°ν°κ°μ μ°κ²°μ κ΄κ³λ‘ μ μνλ€.
β’
M:N (λ€λλ€)μ κ΄κ³λ μν°ν°λ‘ λ³ννλ€.
β’
1:N (μΌλλ€)μ κ΄κ³λ μΈλν€λ‘ λ³ννλ€.
β’
1:1 (μΌλμΌ)μ κ΄κ³λ μΈλν€λ‘ λ³ννλ€.
ex) βνμμ΄ μνμ μ£Όλ¬Έν μ μλ€.β
μ‘°μΈ
2κ° μ΄μμ ν
μ΄λΈλ€μ κ²°ν©νμ¬ νλμ κ²°κ³Ό μ§ν©μΌλ‘ κ°μ Έμ€λ μ°μ°
μ κ·ν&λ°μ κ·νμ μ‘°μΈ
μ κ·νλ₯Ό νλ©΄ ν
μ΄λΈλ€μ΄ μ¬λ¬ κ°λ‘ μͺΌκ°μ§κΈ° λλ¬Έμ, κ²°ν¨λ μλ―Έλ₯Ό κ°λ λ°μ΄ν°λ₯Ό μ‘°ννκΈ° μν΄μ μ¬λ¬ ν
μ΄λΈμ μ‘°μΈν΄μΌνκΈ° λλ¬Έμ, μ‘°μΈμ λ°λ₯Έ μ‘°ν μ±λ₯μ΄ μ νλ μ μλ€.
μ΄λ₯Ό ν΄κ²°νκΈ° μν΄, μ μ νκ² λ°μ κ·νλ₯Ό νμ¬ ν
μ΄λΈμ λ³ν©νκ² λλ©΄ μ‘°μΈμμ΄λ μ‘°νκ° κ°λ₯νμ¬ μ‘°ν μ±λ₯μ ν₯μ μν¬ μ μλ€.
β’
μ κ·ν
β¦
λ°μ΄ν°μ 무결μ±κ³Ό μΌκ΄μ± 
β¦
μ‘°ν μ±λ₯ 
β’
λ°μ κ·ν
β¦
λ°μ΄ν°μ 무결μ±κ³Ό μΌκ΄μ±
β¦
μ‘°ν μ±λ₯ 
β¦
νΈλμμ
λ°μ΄ν°λ² μ΄μ€μμ μνλλ μμ
μ λ
Όλ¦¬μ λ¨μ
β’
νλ μ΄μμ SQL λͺ
λ Ήλ¬Έμ ν¬ν¨
β’
ACID μμ±μ μ€μνμ¬ μ€νλμ΄μΌν¨.
νΈλμμ νΉμ§
νΉμ§ | μ€λͺ
|
μμμ± (Atomicity) | νΈλμμ
μ λͺ¨λ μμ
μ΄ μλ£λκ±°λ μ ν μνλμ§ μμμΌ ν©λλ€. μ¦, νΈλμμ
λ΄μ λͺ¨λ μμ
μ μμμ μΌλ‘ μ€νλμ΄μΌ ν©λλ€. |
μΌκ΄μ± (Consistency) | νΈλμμ
μ μν μ κ³Ό νμ λ°μ΄ν°λ² μ΄μ€λ μΌκ΄λ μνλ₯Ό μ μ§ν΄μΌ ν©λλ€. μ¦, νΈλμμ
μ΄ μ€νλλ λμ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ΄ μ μ§λμ΄μΌ ν©λλ€. |
κ²©λ¦¬μ± (Isolation) | λμμ μ€νλλ μ¬λ¬ νΈλμμ
μ μλ‘ μν₯μ λ―ΈμΉμ§ μκ³ λ
립μ μΌλ‘ μ€νλμ΄μΌ ν©λλ€. μ¦, ν νΈλμμ
μ κ²°κ³Όκ° λ€λ₯Έ νΈλμμ
μ μν₯μ μ£Όμ§ μμμΌ ν©λλ€. |
μ§μμ± (Durability) | νΈλμμ
μ΄ μ±κ³΅μ μΌλ‘ μλ£λ κ²½μ°, ν΄λΉ κ²°κ³Όλ μꡬμ μΌλ‘ μ μ§λμ΄μΌ ν©λλ€. μ¦, νΈλμμ
μ΄ μ»€λ°λ νμλ κ·Έ κ²°κ³Όκ° μ§μλμ΄μΌ ν©λλ€. |
μλ³κ΄κ³ vs λΉμλ³κ΄κ³
μλ³μ κ΄κ³
λΆλͺ¨ μν°ν°μ κΈ°λ³Έ ν€κ° μμ μν°ν°μ κ³ μ ν€(μ£Ό μλ³μ)λ‘ μ¬μ©λλ κ΄κ³
λΉμλ³μ κ΄κ³
λΆλͺ¨ μν°ν°μ κΈ°λ³Έ ν€κ° μμ μν°ν°μ κ³ μ ν€(μ£Ό μλ³μ)λ‘ μ¬μ©λμ§ μλ κ΄κ³
κ°ν κ°μ²΄ VS μ½ν κ°μ²΄
νΉμ§ | κ°ν κ°μ²΄ (Strong Entity) | μ½ν κ°μ²΄ (Weak Entity) |
μλ³μ | μ체μ μΈ μλ³μκ° μμ | λΆλͺ¨ μν°ν°μ μμ‘΄μ μ΄λ©°, μ체μ μΈ μλ³μκ° μμ |
λ
λ¦½μ± | λ
립μ μΌλ‘ μ‘΄μ¬ν μ μμ | λΆλͺ¨ μν°ν°μ κ΄λ ¨μ΄ μμΌλ©°, λΆλͺ¨ μν°ν° μμ΄ μ‘΄μ¬ν μ μμ |
μμ± κ·μΉ | μμ μ μλ³μλ₯Ό μμ±ν μ μμ | λΆλͺ¨ μν°ν°μ μλ³μμ μ°κ²°λλ€. μλ³μ μμ± κ·μΉμ΄ νμν¨ |
μλͺ
μ£ΌκΈ° | λ
립μ μΈ μλͺ
μ£ΌκΈ°λ₯Ό κ°μ§ μ μμ | λΆλͺ¨ μν°ν°μ μ°κ΄λ μλͺ
μ£ΌκΈ°λ₯Ό κ°μ§ |
μμ | μλμ°¨ (μ°¨λλ²νΈ, λͺ¨λΈ, μ μ‘°μ¬) | μ£Όλ¬Έ μμΈ (μ£Όλ¬Έλ²νΈ, μνλ²νΈ, μλ) |
νμ (νλ², μ΄λ¦, μ 곡) | μν νμ (μνID, μ¬μ©μID, νμ ) | |
μ£Όλ¬Έ (μ£Όλ¬Έλ²νΈ, λ μ§, κ°κ²©) | κ²μκΈ λκΈ (κ²μκΈID, μ¬μ©μID, λ΄μ©) |
NULL
κ°μ΄ μ‘΄μ¬νμ§ μμμ λνλ΄λ κ².
NULL κ΄λ ¨ μ¬ν
β’
NULL κ³Όμ μ°μ°
β’
NULL μ²λ¦¬ ν¨μ
β’
COUNT() ν¨μμ NULL κ΄κ³
NULL κ³Όμ μ°μ°
NULL + ? = NULL
NULL μ²λ¦¬ ν¨μ
κ°μ΄ NULL μΌ λ, λ€λ₯Έ κ°μΌλ‘ λ체νλ ν¨μ
DBMS | ν¨μ | μ€λͺ
|
Oracle | NVL(expr1, expr2) | expr1μ΄ NULLμ΄λ©΄ expr2λ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ expr1μ λ°νν©λλ€. |
NVL2(expr1, expr2, expr3) | expr1μ΄ NULLμ΄ μλλ©΄ expr2λ₯Ό, κ·Έλ μ§ μμΌλ©΄ expr3λ₯Ό λ°νν©λλ€. | |
COALESCE(expr1, expr2, ...) | NULLμ΄ μλ 첫 λ²μ§Έ μΈμλ₯Ό λ°νν©λλ€. | |
MySQL | IFNULL(expr1, expr2) | expr1μ΄ NULLμ΄λ©΄ expr2λ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ expr1μ λ°νν©λλ€. |
COALESCE(expr1, expr2, ...) | NULLμ΄ μλ 첫 λ²μ§Έ μΈμλ₯Ό λ°νν©λλ€. | |
MS SQL Server | ISNULL(expr1, expr2) | expr1μ΄ NULLμ΄λ©΄ expr2λ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ expr1μ λ°νν©λλ€. |
COALESCE(expr1, expr2, ...) | NULLμ΄ μλ 첫 λ²μ§Έ μΈμλ₯Ό λ°νν©λλ€. |
μ΄λ¬ν ν¨μλ€μ μ¬μ©νμ¬ κ° λ°μ΄ν°λ² μ΄μ€ μμ€ν
μμ NULL κ°μ μ²λ¦¬ν μ μμ΅λλ€.
COUNT() ν¨μμ NULL κ΄κ³
β’
COUNT() ν¨μ
ν
μ΄λΈμ νμ μ(κ°μ)λ₯Ό λ°ννλ ν¨μ
ν¨μ | μ€λͺ
|
COUNT(*) | ν
μ΄λΈμ μλ λͺ¨λ λ μ½λμ μλ₯Ό λ°νν©λλ€. |
COUNT(column) | μ§μ λ μ΄μ κ°μ΄ NULLμ΄ μλ λ μ½λμ μλ₯Ό λ°νν©λλ€. |
COUNT(DISTINCT column) | μ§μ λ μ΄μ μ€λ³΅λμ§ μλ κ°λ€μ μλ₯Ό λ°νν©λλ€. |
μ΄λ¬ν ν¨μλ€μ μ¬μ©νμ¬ νΉμ μ΄μ΄λ λ μ½λμ μλ₯Ό κ³μ°νκ³ , μ€λ³΅μ μ κ±°ν κ°μ μΈλ λ± λ€μν μ§κ³ μμ
μ μνν μ μμ΅λλ€.

















