λ°μ΄ν°μ μ€λ³΅μ μμ 무결μ±μ μ μ§νλ©΄μ, μ΄μνμμ΄ μλ 릴λ μ΄μ
μ λΆν΄νμ¬ μ΄μνμμ μμ λ κ³Όμ
( μ κ·νμ΄ λμμ§ μλ‘ μ΄μνμμ μ€μ΄λ¦ )
릴λ μ΄μ
νκ³Ό μ΄λ‘ ꡬμ±λ ν μ΄λΈ
[μ°Έκ³ ] https://terms.naver.com/entry.naver?docId=3431156&cid=58430&categoryId=58430
λ°μ΄ν°λ² μ΄μ€μ μ€κ³μ κ΄λ ¨
( μ€κ³κ° κ²°λ‘ μ μΌλ‘ λ°μ΄ν°κ° μ΄λ»κ² μ μ₯λ μ§μ λν ꡬ쑰λ₯Ό μ ν΄μ£Όλ κ²μ΄κΈ° λλ¬Έ )
λ°μ κ°λ₯ν λ¬Έμ μ
- μΌκ΄λ μλ£ μ²λ¦¬μ μ΄λ €μ
- μ μ₯ κ³΅κ° λλΉ
- λ°μ΄ν° ν¨μ¨μ± κ°μ
- κ°±μ μ΄μ (update anomaly)
β λμΌν λ°μ΄ν°κ° μ¬λ¬ ν(λ μ½λ)μ κ±Έμ³μμ λ μ΄λ λ°μ΄ν°λ₯Ό κ°±μ ν΄μΌνλμ§μ λν λ Όλ¦¬μ μΌκ΄μ±μ΄ μμ΄ λ°μ
β - μ½μ μ΄μ (insertion anomaly)
β λ°μ΄ν°λ₯Ό μΆκ°ν λ ν 컬λΌμ λν λ°μ΄ν°κ° μμ§ μ ν΄μ Έ μμ§ μμ κ²½μ° μΆκ°νμ§ λͺ»νκ² λλ κ²½μ° λ°μ
β - μμ μ΄μ (deletion anomaly)
β λ°μ΄ν°μ νΉμ λΆλΆμ μ§μΈ λ, μλμΉμκ² λ€λ₯Έ λΆλΆλ€λ κ°μ΄ μ§μμ§λ νμ
λ°μ΄ν° λ³κ²½μ, μ΄μ νμ μ κ±° κ°λ₯
μλ‘μ΄ λ°μ΄ν° νμ μΆκ°λ‘ ꡬ쑰λ₯Ό νμ₯ν λ, κ·Έ ꡬ쑰λ₯Ό λ³κ²½νμ§ μμλ λκ±°λ μΌλΆλ§ λ³κ²½ν΄λ λ¨
λ°μ΄ν°λ² μ΄μ€μ μ°λλ μμ© νλ‘κ·Έλ¨μ μ΅μνμ μν₯λ§μ λ―Έμ³ μμ© νλ‘κ·Έλ¨μ μλͺ μ°μ₯μν΄
ν ν
μ΄λΈμ λ°μ΄ν° μ©λμ΄ μ΅μνλ¨
( λ°μ΄ν° μ€λ³΅ μ κ±°νμ¬ λμΌν μλ―Έμ μΌλ° μμ±μ΄ νλμ ν
μ΄λΈλ‘ μ§μ½λκΈ° λλ¬Έ )
릴λ μ΄μ μ λΆν΄λ‘ μΈν 릴λ μ΄μ κ°μ JOIN μ°μ°μ΄ λ§μμ§
쿼리문 μ§μμ λν μλ΅ μκ°μ΄ λλ €μ§ μλ μκ³
( But, ν ν
μ΄λΈ λ΄μμλ μλ΅μκ°μ΄ λΉ λ₯Ό μλ μμ )
λ§μ½ μ‘°μΈμ΄ λ§μ΄ λ°μνμ¬ μ±λ₯ μ νκ° λνλλ©΄ λ°μ κ·ν(De-normalization)λ₯Ό μ μ©ν μλ μμ
[μ°Έκ³ ] https://www.w3schools.in/dbms/database-normalization
λ°μ΄ν°λ₯Ό μ μν λ μ¬μ©νλ μΈμ΄
λ°μ΄ν°λ² μ΄μ€μ ν
μ΄λΈκ³Ό κ°μ μ€λΈμ νΈλ₯Ό μ μν λ μ¬μ©
Ex. CREATE, DROP λ±
λ°μ΄ν°λ² μ΄μ€μ λν μ κ·Ό κΆνκ³Ό κ΄λ ¨λ λ¬Έλ²
μ΄λ μ μ κ° λ°μ΄ν°λ² μ΄μ€μ μ κ·Όν μ μλμ§ κΆν μ€μ
Ex. GRANT, REVOKE λ±
Ex.
SELECT CASE WHEN CustomerId <= 25 THEN 'GROUP 1' WHEN CustomerId <= 50 THEN 'GROUP 2' ELSE 'GROUP 3' END FROM customers
β CustomerId νλκ°μ λ°λΌ 3κ°μ κ·Έλ£Ή(
GROUP 1
,GROUP 2
,GROUP 3
)μΌλ‘ λλ
( CustomerId νλκ°μ΄ 25 μ΄νμΈ κ²½μ°μλGROUP 1
, 26 ~ 50μΈ κ²½μ°μλGROUP 2
, 51 μ΄μμGROUP 3
μΌλ‘ λΆλ₯ )
쿼리문μ μμ±ν λ μκ΄νΈλ‘ κ°μΈ λ€λ₯Έ 쿼리문μ ν¬ν¨νλ κ²
( μ΄ λ, ν¬ν¨λλ μΏΌλ¦¬λ¬Έμ΄ μλΈμΏΌλ¦¬ )
IN
, NOT IN
/ EXISTS
, NOT EXISTS
/ FROM
λ±μ μ¬μ© κ°λ₯
EXISTS
μ‘°ννλ €λ λ μ½λκ° μ‘΄μ¬νλ€λ©΄ μ°Έ(TRUE)μ, κ·Έλ μ§ μμ κ²½μ°μλ κ±°μ§(FALSE)μ 리ν΄
Ex.
SELECT * FROM customers WHERE CustomerId IN (SELECT CustomerId FROM customers WHERE CustomerId < 10)
β CustomerIdκ° 10 μ΄νμΈ λ°μ΄ν°μμ μ 체 μ λ
( μ‘°νλ λ°μ΄ν°μ CustomerIdλ 10 μ΄ν )
SELECT EmployeeId FROM employees e WHERE EXISTS ( SELECT 1 FROM customers c WHERE c.SupportRepId = e.EmployeeId ) ORDER BY EmployeeId
β μλΈμΏΌλ¦¬λ‘ customers ν μ΄λΈμ SupportRepId νλκ°κ³Ό employees ν μ΄λΈμ EmployeeId νλκ°μ λΉκ΅ν΄ μΌμΉνλ λ μ½λλ€μ κ°μ Έμμ μ‘°ν
SELECT * FROM ( SELECT CustomerId FROM customers WHERE CustomerId < 10 )
β CustomerIdκ° 10 μ΄νμΈ λ°μ΄ν°μμ μ 체 μ λ
( μ‘°νλ λ°μ΄ν°μ CustomerIdλ 10 μ΄ν )
μ¬μ€ μμ§ μ΄λ ΅κΈ΄ νμ§λ§ κ·Έλλ μ²μ μ νμ λ보λ€λ λ§μ΄ μκ²λ κ² κ°λ€ !
νμ΄λ΅