λ°μ΄ν°λ² μ΄μ€ μ κ·νλ 무μμΈκ°
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ€κ³νλ€ λ³΄λ©΄ μ’
μ’
λκ°ν μν©μ λ§μ£Όνκ³€ νλ€.
κ°μ μ λ³΄κ° μ¬λ¬ κ³³μ μ€λ³΅λμ΄ μ μ₯λκ±°λ,
νλμ ν
μ΄λΈμ λ무 λ§μ μ λ³΄κ° λ΄κ²¨μμ΄ κ΄λ¦¬νκΈ° μ΄λ €μ΄ κ²½μ° λ§μ΄λ€.
μ΄λ λ§μΉ μ±
μ μλμ μ 리νμ§ μκ³ μ¬μ©νλ κ²κ³Ό λΉμ·νλ€.
μ²μμ νΈν μ§ λͺ°λΌλ, μκ°μ΄ μ§λ μλ‘
κ°μ λ¬Όκ±΄μ΄ μ¬λ¬ μλμ ν©μ΄μ Έμκ³ ,
νμν 물건μ μ°ΎκΈ° μν΄ λͺ¨λ μλμ λ€μ ΈμΌ νλ μν©μ΄ μ¨λ€.
λ°μ΄ν°λ² μ΄μ€ μ κ·ν(Normalization)λ λ°λ‘ μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν 체κ³μ μΈ λ°©λ²μ΄λ€.
λ°μ΄ν°μ μ€λ³΅μ μ΅μννκ³ , λ°μ΄ν° 무결μ±μ μ μ§νλ©°,
ν¨μ¨μ μΈ λ°μ΄ν° κ΄λ¦¬λ₯Ό κ°λ₯νκ² νλ μ€κ³ κΈ°λ²μ΄λ€.
μ λ°μ΄ν°λ² μ΄μ€ μ κ·νκ° νμν κΉ?
μ κ·νλ₯Ό νμ§ μμ λ°μ΄ν°λ² μ΄μ€λ μ¬λ¬ λ¬Έμ λ₯Ό μΌκΈ°νλ€.
첫째, μ€λ³΅ μ΄μ(Redundancy Anomaly)μ΄ λ°μνλ€.
κ°μ μ λ³΄κ° μ¬λ¬ κ³³μ μ μ₯λμ΄ μμΌλ©΄ λ°μ΄ν°λ₯Ό μμ ν λ
λͺ¨λ μμΉλ₯Ό μ°Ύμμ μμ ν΄μΌ νλλ°,
νλλΌλ λλ½λλ©΄ λ°μ΄ν° λΆμΌμΉκ° λ°μνλ€.
λμ§Έ, μ½μ
μ΄μ(Insertion Anomaly)μ΄ λ°μνλ€.
μλ‘μ΄ λ°μ΄ν°λ₯Ό μ
λ ₯ν λ λΆνμν μ 보κΉμ§ ν¨κ» μ
λ ₯ν΄μΌ νκ±°λ,
νΉμ μ 보 μμ΄λ λ°μ΄ν°λ₯Ό μ
λ ₯ν μ μλ μν©μ΄ μκΈ΄λ€.
μ
μ§Έ, μμ μ΄μ(Deletion Anomaly)μ΄ λ°μνλ€.
μ΄λ€ μ 보λ₯Ό μμ ν λ ν¨κ» 보κ΄νκ³ μΆμ λ€λ₯Έ μ 보κΉμ§
ν¨κ» μμ λλ λ¬Έμ κ° λ°μνλ€.
λ·μ§Έ, κ°±μ μ΄μ(Update Anomaly)μ΄ λ°μνλ€.
λ°μ΄ν°λ₯Ό μμ ν λ μΌλΆλ§ μμ λμ΄
λ°μ΄ν°μ μΌκ΄μ±μ΄ κΉ¨μ§λ κ²½μ°κ° μκΈ΄λ€.
μ κ·νμ λ¨κ³λ³ μ΄ν΄
λ°μ΄ν°λ² μ΄μ€ μ κ·νλ μ¬λ¬ λ¨κ³λ‘ λλμ΄μ Έ μλ€.
κ° λ¨κ³λ₯Ό μ κ·ν(Normal Form)μ΄λΌκ³ λΆλ₯΄λ©°,
μ 1μ κ·νλΆν° μ 5μ κ·νκΉμ§ μ‘΄μ¬νλ€.
μ€λ¬΄μμλ λ³΄ν΅ μ 3μ κ·νκΉμ§ μ μ©νλ κ²μ΄ μΌλ°μ μ΄λ€.
μ 1μ κ·ν (1NF: First Normal Form)
μ 1μ κ·νμ κ°μ₯ κΈ°λ³Έμ μΈ μ κ·ν λ¨κ³λ‘,
λͺ¨λ μμ± κ°μ΄ μμκ°(Atomic Value)μ κ°μ ΈμΌ νλ€λ κ·μΉμ΄λ€.
μ½κ² λ§ν΄, νλμ μΉΈμλ νλμ κ°λ§ λ€μ΄κ°μΌ νλ€λ μλ―Έλ€.
λ°°μ΄μ΄λ 리μ€νΈ κ°μ λ³΅ν© κ°μ νμ©λμ§ μλλ€.
μ κ·ν μ μμ:
| νμID | νμμ΄λ¦ | μκ°κ³Όλͺ© |
|---|---|---|
| 1 | κΉμ² μ | μν, μμ΄, κ΅μ΄ |
| 2 | μ΄μν¬ | κ³Όν, μν |
μ 1μ κ·ν μ μ© ν:
| νμID | νμμ΄λ¦ | μκ°κ³Όλͺ© |
|---|---|---|
| 1 | κΉμ² μ | μν |
| 1 | κΉμ² μ | μμ΄ |
| 1 | κΉμ² μ | κ΅μ΄ |
| 2 | μ΄μν¬ | κ³Όν |
| 2 | μ΄μν¬ | μν |
μ΄μ κ° μΉΈμλ νλμ κ°λ§ λ€μ΄κ°κ² λμλ€.
λ¨, μ΄ μνμμλ νμ μ λ³΄κ° μ€λ³΅λλ λ¬Έμ κ° μλ€.
μ 2μ κ·ν (2NF: Second Normal Form)
μ 2μ κ·νμ μ 1μ κ·νμ λ§μ‘±νλ©΄μ,
λΆλΆ ν¨μ μ’
μμ±μ μ κ±°ν μνλ₯Ό μλ―Ένλ€.
λΆλΆ ν¨μ μ’
μμ±μ΄λ κΈ°λ³Έν€μ μΌλΆλΆμλ§ μ’
μλλ μμ±μ λ§νλ€.
볡ν©ν€(μ¬λ¬ μμ±μΌλ‘ μ΄λ£¨μ΄μ§ κΈ°λ³Έν€)κ° μμ λ λ°μνλ€.
μ κ·ν μ μμ:
| νμID | κ³Όλͺ©μ½λ | νμμ΄λ¦ | κ³Όλͺ©μ΄λ¦ | μ±μ |
|---|---|---|---|---|
| 1 | M01 | κΉμ² μ | μν | A |
| 1 | E01 | κΉμ² μ | μμ΄ | B |
| 2 | M01 | μ΄μν¬ | μν | A+ |
κΈ°λ³Έν€: (νμID, κ³Όλͺ©μ½λ)
λ¬Έμ : νμμ΄λ¦μ νμIDμλ§ μ’
μ, κ³Όλͺ©μ΄λ¦μ κ³Όλͺ©μ½λμλ§ μ’
μ
μ 2μ κ·ν μ μ© ν:
νμ ν μ΄λΈ:
| νμID | νμμ΄λ¦ |
|---|---|
| 1 | κΉμ² μ |
| 2 | μ΄μν¬ |
κ³Όλͺ© ν μ΄λΈ:
| κ³Όλͺ©μ½λ | κ³Όλͺ©μ΄λ¦ |
|---|---|
| M01 | μν |
| E01 | μμ΄ |
μκ° ν μ΄λΈ:
| νμID | κ³Όλͺ©μ½λ | μ±μ |
|---|---|---|
| 1 | M01 | A |
| 1 | E01 | B |
| 2 | M01 | A+ |
μ΄μ κ° μ λ³΄κ° μ μ ν ν
μ΄λΈλ‘ λΆλ¦¬λμλ€.
μ 3μ κ·ν (3NF: Third Normal Form)
μ 3μ κ·νμ μ 2μ κ·νμ λ§μ‘±νλ©΄μ,
μ΄ν ν¨μ μ’
μμ±μ μ κ±°ν μνλ₯Ό μλ―Ένλ€.
μ΄ν ν¨μ μ’
μμ±μ΄λ A β B, B β CμΌ λ A β Cκ° μ±λ¦½νλ κ΄κ³λ₯Ό λ§νλ€.
μ¦, κΈ°λ³Έν€κ° μλ μμ±μ΄ λ€λ₯Έ λΉκΈ°λ³Έν€ μμ±μ κ²°μ νλ κ²½μ°λ€.
μ κ·ν μ μμ:
| νμID | νμμ΄λ¦ | νκ³Όμ½λ | νκ³Όμ΄λ¦ | νκ³Όμ₯ |
|---|---|---|---|---|
| 1 | κΉμ² μ | CS | μ»΄ν¨ν°κ³΅ν | λ°κ΅μ |
| 2 | μ΄μν¬ | EE | μ μ곡ν | μ΅κ΅μ |
| 3 | λ°λ―Όμ | CS | μ»΄ν¨ν°κ³΅ν | λ°κ΅μ |
κΈ°λ³Έν€: νμID
λ¬Έμ : νμID β νκ³Όμ½λ β νκ³Όμ΄λ¦, νκ³Όμ₯ (μ΄ν μ’
μ)
μ 3μ κ·ν μ μ© ν:
νμ ν μ΄λΈ:
| νμID | νμμ΄λ¦ | νκ³Όμ½λ |
|---|---|---|
| 1 | κΉμ² μ | CS |
| 2 | μ΄μν¬ | EE |
| 3 | λ°λ―Όμ | CS |
νκ³Ό ν μ΄λΈ:
| νκ³Όμ½λ | νκ³Όμ΄λ¦ | νκ³Όμ₯ |
|---|---|---|
| CS | μ»΄ν¨ν°κ³΅ν | λ°κ΅μ |
| EE | μ μ곡ν | μ΅κ΅μ |
μ΄μ νκ³Ό μ λ³΄κ° μ€λ³΅λμ§ μκ³ ,
νκ³Όμ₯μ΄ λ°λμ΄λ ν κ³³λ§ μμ νλ©΄ λλ€.
μ κ·νμ μ₯μ κ³Ό λ¨μ
π’ μ κ·νμ μ₯μ
-
λ°μ΄ν° μ€λ³΅ μ΅μν
κ°μ λ°μ΄ν°λ₯Ό μ¬λ¬ κ³³μ μ μ₯νμ§ μμ μ μ₯ 곡κ°μ μ μ½ν μ μλ€. -
λ°μ΄ν° λ¬΄κ²°μ± ν₯μ
μ€λ³΅μ΄ μμΌλ―λ‘ λ°μ΄ν° λΆμΌμΉ λ¬Έμ κ° λ°μνμ§ μλλ€. -
μ΄μ νμ λ°©μ§
μ½μ , μμ , κ°±μ μ λ°μν μ μλ μ΄μ νμμ μλ°©ν μ μλ€. -
μ μ§λ³΄μ μ©μ΄
λ°μ΄ν° κ΅¬μ‘°κ° λͺ ννμ¬ μμ μ΄ νμν λ μν₯ λ²μκ° λͺ ννλ€. -
νμ₯μ± ν₯μ
μλ‘μ΄ λ°μ΄ν° μΆκ° μ κΈ°μ‘΄ ꡬ쑰μ μν₯μ μ΅μνν μ μλ€.
π΄ μ κ·νμ λ¨μ
-
μ‘°μΈ μ°μ° μ¦κ°
ν μ΄λΈμ΄ λΆλ¦¬λλ©΄μ λ°μ΄ν°λ₯Ό μ‘°νν λ μ¬λ¬ ν μ΄λΈμ μ‘°μΈν΄μΌ νλ€. -
μ±λ₯ μ ν κ°λ₯μ±
μ‘°μΈ μ°μ°μ΄ λ§μμ§λ©΄ 쿼리 μ±λ₯μ΄ μ νλ μ μλ€. -
볡μ‘λ μ¦κ°
ν μ΄λΈ μκ° λ§μμ Έ μ΄κΈ° μ€κ³μ 쿼리 μμ±μ΄ 볡μ‘ν΄μ§ μ μλ€.
λ°μ κ·ν (Denormalization)
μ κ·νκ° νμ μ λ΅μ μλλ€.
λλ‘λ μλμ μΌλ‘ μ κ·νλ₯Ό νμ΄μΌ νλ κ²½μ°λ μλ€.
λ°μ κ·νλ μ±λ₯ ν₯μμ μν΄ μλμ μΌλ‘ μ€λ³΅μ νμ©νλ κΈ°λ²μ΄λ€.
νΉν μ‘°ν μ±λ₯μ΄ μ€μν μμ€ν
μμ μμ£Ό μ¬μ©λλ€.
π·οΈ λ°μ κ·νλ₯Ό κ³ λ €ν΄μΌ νλ κ²½μ°
- μ‘°μΈ μ°μ°μ΄ λ무 λ§μ μ±λ₯μ΄ μ¬κ°νκ² μ νλλ κ²½μ°
- νΉμ ν
μ΄λΈμ μ‘°ν λΉλκ° λ§€μ° λμ κ²½μ°
- ν΅κ³λ μ§κ³ λ°μ΄ν°λ₯Ό μμ£Ό μ¬μ©νλ κ²½μ°
- μ΄λ ₯ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ‘°νν΄μΌ νλ κ²½μ°
λ¨, λ°μ κ·νλ₯Ό μ μ©ν λλ λ°λμ λ€μμ κ³ λ €ν΄μΌ νλ€:
- λ°μ΄ν° μΌκ΄μ± μ μ§ λ°©μ λ§λ ¨
- νΈλ¦¬κ±°λ μ ν리μΌμ΄μ
λ‘μ§μΌλ‘ μ€λ³΅ λ°μ΄ν° λκΈ°ν
- μ±λ₯ κ°μ ν¨κ³Ό μΈ‘μ
μ€μ μμ: μΌνλͺ° λ°μ΄ν°λ² μ΄μ€ μ κ·ν
μ€μ μΌνλͺ° λ°μ΄ν°λ² μ΄μ€λ₯Ό μ κ·ννλ κ³Όμ μ μ΄ν΄λ³΄μ.
μ κ·ν μ :
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_name VARCHAR(100),
customer_email VARCHAR(100),
customer_phone VARCHAR(20),
product_name VARCHAR(100),
product_price DECIMAL(10,2),
quantity INT,
order_date DATE
);
μ΄ κ΅¬μ‘°λ μ¬λ¬ λ¬Έμ κ° μλ€:
- κ³ κ° μ 보 μ€λ³΅
- μν μ 보 μ€λ³΅
- ν μ£Όλ¬Έμ μ¬λ¬ μνμ λ΄μ μ μμ
μ κ·ν ν (μ 3μ κ·ν):
-- κ³ κ° ν
μ΄λΈ
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
customer_name VARCHAR(100) NOT NULL,
customer_email VARCHAR(100) UNIQUE NOT NULL,
customer_phone VARCHAR(20)
);
-- μν ν
μ΄λΈ
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
product_price DECIMAL(10,2) NOT NULL,
stock_quantity INT DEFAULT 0
);
-- μ£Όλ¬Έ ν
μ΄λΈ
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
total_amount DECIMAL(10,2),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
-- μ£Όλ¬Έ μμΈ ν
μ΄λΈ
CREATE TABLE order_details (
order_detail_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
μ΄μ λ€μκ³Ό κ°μ μ΄μ μ μ»μ μ μλ€:
- κ³ κ° μ 보λ ν κ³³μμλ§ κ΄λ¦¬
- μν κ°κ²© λ³κ²½ μ ν λ²λ§ μμ
- ν μ£Όλ¬Έμ μ¬λ¬ μνμ λ΄μ μ μμ
- μ£Όλ¬Έ μμ μ κ°κ²©μ order_detailsμ μ μ₯νμ¬ μ΄λ ₯ κ΄λ¦¬ κ°λ₯
μ κ·ν μ μ© μ μ£Όμμ¬ν
-
κ³Όλν μ κ·ν μ§μ
μ 3μ κ·νκΉμ§λ§ μ μ©ν΄λ λλΆλΆμ κ²½μ° μΆ©λΆνλ€.
무쑰건 λμ μ κ·νμ μ μ©νλ©΄ μ€νλ € 볡μ‘λλ§ μ¦κ°νλ€. -
λΉμ¦λμ€ μꡬμ¬ν μ°μ
μ±λ₯μ΄ μ€μν κ³³μ λ°μ κ·νλ₯Ό κ³ λ €ν΄μΌ νλ€.
μ΄λ‘ μ μλ²½ν¨λ³΄λ€ μ€μ©μ±μ΄ μ€μνλ€. -
μΈλ±μ€ νμ©
μ κ·νλ‘ μ‘°μΈμ΄ λ§μμ‘λ€λ©΄ μ μ ν μΈλ±μ€λ₯Ό μμ±νμ¬
μ±λ₯ μ νλ₯Ό μ΅μνν΄μΌ νλ€. -
λ¬Έμν
μ κ·ν κ²°κ³Όμ ν μ΄λΈ κ° κ΄κ³λ₯Ό λͺ νν λ¬Έμννμ¬
λ€λ₯Έ κ°λ°μλ μ½κ² μ΄ν΄ν μ μλλ‘ νλ€.
λ§λ¬΄λ¦¬
λ°μ΄ν°λ² μ΄μ€ μ κ·νλ λ¨μν μ΄λ‘ μ κ°λ
μ΄ μλλΌ
μ€μ νλ‘μ νΈμμ λ°μ΄ν° νμ§κ³Ό μ μ§λ³΄μμ±μ κ²°μ νλ μ€μν κΈ°λ²μ΄λ€.
μ²μ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ€κ³ν λ μ κ·νλ₯Ό κ³ λ €νλ©΄
λμ€μ λ°μν μ μλ λ§μ λ¬Έμ λ₯Ό μλ°©ν μ μλ€.
νμ§λ§ λ§Ήλͺ©μ μΌλ‘ μ κ·νλ§ μΆκ΅¬ν기보λ€λ
νλ‘μ νΈμ νΉμ±κ³Ό μꡬμ¬νμ κ³ λ €νμ¬
μ μ ν μμ€μ μ κ·νλ₯Ό μ μ©νλ κ²μ΄ μ€μνλ€.
μ€λ¬΄ κ²½νμ μλ€ λ³΄λ©΄ μΈμ μ κ·νλ₯Ό μ μ©νκ³
μΈμ λ°μ κ·νλ₯Ό κ³ λ €ν΄μΌ νλμ§ κ°κ°μ΄ μκΈ΄λ€.
μ΄ κΈμ΄ κ·Έ μμμ μ΄ λκΈΈ λ°λλ€.