κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©νμ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. νΈλμμ
νΈλμμ
μ κ°λ
νΈλμμ
(transaction) => DBMSμμ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ
Όλ¦¬μ μΈ μμ
μ λ¨μ λ°μ΄ν°λ² μ΄μ€μμ νΈλμμ
μ μ μνλ μ΄μ λ‘λ 1. DBMSμμ μ₯μ κ° μΌμ΄λ λ λ°μ΄ν°λ₯Ό 볡ꡬνλ μμ
μ λ¨μκ° λ¨ 2. DBMSμμ μ¬λ¬ μμ
μ΄ λμμ κ°μ λ°μ΄ν°λ₯Ό λ€λ£° λ μμ
μ μλ‘ λΆλ¦¬νλ λ¨μκ° λ¨ νΈλμμ
μ μ μ²΄κ° μνλκ±°λ λλ μ ν μνλμ§ μμμΌ ν¨(all or nothing) μλ₯Ό λ€μ΄ μ΄ν΄λ³΄λ©΄ μν μ
무λ₯Ό 보λλ° Aκ³μ’ (λ°μ§μ±)μμ B κ³μ’(κΉμ°μ)λ‘ 10000μμ μ΄μ²΄ν κ²½μ° μ΄λ°μμΌλ‘ νΈλμμ
μ΄ μνλλλ° νΈλμμ
μ μ’
λ£..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©νμ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. μ΄μνμ(anomaly) 1.1 μ΄μνμμ κ°λ
μ΄μνμ(Anomaly)μ΄λ μλͺ» μ€κ³λ ν
μ΄λΈλ‘ μΈν΄ μ½μ
, μμ , μμ κ°μ λ°μ΄ν° μ‘°μ μ λ°μ΄ν° μΌκ΄μ±μ΄ κΉ¨μ§λ νμ! => λΆμΌμΉ(inconsistency : μΌκ΄μ± μμ) λ¬Έμ λ°μ μ΄μνμμλ μμ μ΄μ(deletion anomly)ν¬ν μμ μ κ°μ΄ μ μ₯λ λ€λ₯Έ μ 보κΉμ§ μ°μμ μΌλ‘ μμ λλ νμ(μ°μμμ λ¬Έμ λ°μ) μ½μ
μ΄μ(insrtion anomly)ν¬ν μ½μ
μ νΉμ μμ±μ ν΄λΉνλ κ°μ΄ μμ΄ NULL κ°μ μ
λ ₯ν΄μΌ νλ νμ(NULL κ° λ¬Έμ λ°μ) μμ μ΄μ(update anoml..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©νμ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. λ°μ΄ν° λͺ¨λΈλ§μ κ°λ
1.1 λ°μ΄ν° λͺ¨λΈλ§μ μ€μμ± 1.2 λ°μ΄ν°λ² μ΄μ€ μλͺ
μ£ΌκΈ° λ°μ΄ν°λ² μ΄μ€ μλͺ
μ£ΌκΈ° (database life cycle)μ λ°μ΄ν°λ² μ΄μ€μ μμ±κ³Ό μ΄μμ κ΄λ ¨λ νΉμ§μΌλ‘ 1. μꡬμ¬ν μμ§ λ° λΆμ : μ¬μ©μλ€μ μꡬμ¬νμ λ£κ³ λΆμνμ¬ λ°μ΄ν°λ² μ΄μ€ ꡬμΆμ λ²μλ₯Ό μ νλ λ¨κ³ 2. μ€κ³ : λΆμλ μꡬμ¬νμ κΈ°μ΄λ‘ μ£Όμ κ°λ
κ³Ό μ
무 νλ‘μΈμ€ λ±μ μλ³νκ³ (κ°λ
μ μ€κ³) μ¬μ©νλ DBMSμ μ’
λ₯μ λ§κ² λ³ν(λ
Όλ¦¬μ μ€κ³)ν ν, λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό λμΆ(물리μ μ€κ³)ν¨ 3. ꡬν : μ€κ³ λ¨κ³μμ μμ±ν μ€ν€..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©ν μ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. λ°μ΄ν°λ² μ΄μ€ νλ‘κ·Έλλ°μ κ°λ
νλ‘κ·Έλλ° : νλ‘κ·Έλ¨μ μ€κ³νκ³ μμ€μ½λλ₯Ό μμ±νμ¬ λλ²κΉ
νλ κ³Όμ λ°μ΄ν°λ² μ΄μ€ νλ‘κ·Έλλ° => DBMSμ λ°μ΄ν°λ₯Ό μ μνκ³ μ μ₯λ λ°μ΄ν°λ₯Ό μ½μ΄μ λ°μ΄ν°λ₯Ό λ³κ²½νλ νλ‘κ·Έλ¨μ μμ±νλ κ³Όμ (μΌλ° νλ‘κ·Έλλ°κ³Όλ λ°μ΄ν°λ² μ΄μ€ μΈμ΄μΈ SQLμ ν¬ν¨νλ€λ μ μ΄ λ€λ¦) λ°μ΄ν°λ² μ΄μ€ νλ‘κ·Έλλ° λ°©λ² 1. SQL μ μ© μΈμ΄λ₯Ό μ¬μ©νλ λ°©λ² SQL μ체μ κΈ°λ₯μ νμ₯νμ¬ λ³μ, μ μ΄, μ
μΆλ ₯ λ±μ κΈ°λ₯μ μΆκ°ν μλ‘μ΄ μΈμ΄λ₯Ό μ¬μ©νλ λ°©λ² Oracleμ PL/SQL μΈμ΄λ₯Ό μ¬μ©νλ©°, MS-SQL Serverλ T-SQLμ΄λΌλ μΈμ΄λ₯Ό μ¬μ©ν¨..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©ν μ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. λ΄μ₯ν¨μ SQL λ΄μ₯ ν¨μ SQLμμλ ν¨μμ κ°λ
μ μ¬μ©νλλ° μνμ ν¨μμ λ§μ°¬κ°μ§λ‘ νΉμ κ°μ΄λ μ΄μ κ°μ μ
λ ₯ λ°μ κ·Έ κ°μ κ³μ°νμ¬ κ²°κ³Ό κ°μ λλ €μ€λ€ => SQLμ ν¨μλ DBMSκ° μ 곡νλ λ΄μ₯ ν¨μ(bulit-in function)μ μ¬μ©μκ° νμμ λ°λΌ μ§μ λ§λλ μ¬μ©μ μ μ ν¨μ (user-defined function)λ‘ λλ¨ SQL λ΄μ₯ ν¨μλ μμλ μμ± μ΄λ¦μ μ
λ ₯ κ°μΌλ‘ λ°μ λ¨μΌ κ°μ κ²°κ³Όλ‘ λ°ννλ€ => λͺ¨λ λ΄μ₯ ν¨μλ μ΅μ΄μ μ μΈλ λ μ ν¨ν μ
λ ₯ κ°μ λ°μμΌ ν¨ μ«μ ν¨μ λ¬Έμ ν¨μ λ μ§ · μκ° ν¨μ NULL κ° μ²λ¦¬ N..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©ν μ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. SQL κ°μ SQL κΈ°λ₯μ λ°λ₯Έ λΆλ₯ λ°μ΄ν° μ μμ΄ (DDL) ν
μ΄λΈμ΄λ κ΄κ³μ ꡬ쑰λ₯Ό μμ±νλ λ° μ¬μ© CREATE, ALTER, DROP λ¬Έ λ±μ΄ μμ λ°μ΄ν° μ‘°μμ΄ (DML) ν
μ΄λΈμ λ°μ΄ν°λ₯Ό κ²μ, μ½μ
, μμ , μμ νλλ° μ¬μ© SELECT, INSERT, DELETE, UPDATE λ¬Έ λ±μ΄ μμ SELECT λ¬Έμ νΉλ³ν μ§μμ΄(query)λΌκ³ ν¨ λ°μ΄ν° μ μ΄μ΄ (DCL) λ°μ΄ν°μ μ¬μ© κΆνμ κ΄λ¦¬νλ λ° μ¬μ© GRANT, REVOKE λ¬Έ λ±μ΄ μμ 2. λ°μ΄ν° μ‘°μμ΄ - κ²μ SELECT λ¬Έ μ΄κ²μ κ² λ§μμ μ΄λ €μ보μ΄μ§λ§ κ²°κ΅ SELECT μμ± μ΄λ¦ ..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©ν μ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. κ΄κ³ λ°μ΄ν° λͺ¨λΈμ κ°λ
릴λ μ΄μ
릴λ μ΄μ
(relation) : νκ³Ό μ΄λ‘ ꡬμ±λ ν
μ΄λΈ κ΄κ³(relationship) => 1. 릴λ μ΄μ
λ΄μμ μμ±λλ κ΄κ³ : 릴λ μ΄μ
λ΄ λ°μ΄ν°λ€μ κ΄κ³ (κ°κ°μ μ΄(=μ§ν©) μμ μμ ν κ°μ©μ μ ννμ¬ νλμ νμ΄ λ§λ€μ΄μ§ κ²μΌλ‘ μ΄ μμλ€μ΄ κ΄κ³λ₯Ό λ§Ίκ³ μμ) => 2. 릴λ μ΄μ
κ°μ μμ±λλ κ΄κ³ : 릴λ μ΄μ
κ°μ κ΄κ³ 릴λ μ΄μ
μ€ν€λ§μ μΈμ€ν΄μ€ μ€ν€λ§μ μμ μμ±(attribute) : 릴λ μ΄μ
μ€ν€λ§μ μ΄ λλ©μΈ(domain) : μμ±μ΄ κ°μ§ μ μλ κ°μ μ§ν© (κ°μ§ μ μλ κ°μ λ²μ λ±) μ°¨μ(degree..
κ΅λ―Όλνκ΅μμ "μ€λΌν΄λ‘ λ°°μ°λ λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅(2ν)" μ μ΄μ©ν μ μΈμ κ΅μλμ κ°μ κ΅μμ μ΄μ©νμ¬ μμ
λ΄μ©μ μ 리νμμ΅λλ€ 1. λ°μ΄ν°λ² μ΄μ€μ λ°μ΄ν°λ² μ΄μ€ μμ€ν
1. λ°μ΄ν°, μ 보, μ§μ λ°μ΄ν° : κ΄μ°°μ κ²°κ³Όλ‘ λνλ μ λμ νΉμ μ μμ μΈ μ€μ κ° μ 보 : λ°μ΄ν°μ μλ―Έλ₯Ό λΆμ¬ν κ² μ§μ : μ¬λ¬Όμ΄λ νμμ λν μ΄ν΄ 2. μΌμμνμ λ°μ΄ν°λ² μ΄μ€ λ°μ΄ν°λ² μ΄μ€ : μ‘°μ§μ νμν μ 보λ₯Ό μ»κΈ° μν΄ λ
Όλ¦¬μ μΌλ‘ μ°κ΄λ λ°μ΄ν°λ₯Ό λͺ¨μ ꡬ쑰μ μΌλ‘ ν΅ν©ν΄ λμ κ² λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ λ°μ΄ν°μ κ²μκ³Ό λ³κ²½ μμ
μ μ£Όλ‘ μνν¨ ⇒ λ³κ²½μ΄λ μκ°μ λ°λΌ λ³νλ λ°μ΄ν° κ°μ λ°μ΄ν°λ² μ΄μ€μ λ°μνκΈ° μν΄ μννλ μ½μ
, μμ , μμ λ±μ μμ
μ λ§ν¨ ν΅ν©λ λ°μ΄ν°(integrated data) : λ°μ΄..
λ°μ΄ν° μ‘°μ λ°μ΄ν° μ½μ
1. μμ ν ν μ½μ
μ΄ λ°©λ²μ μ½λ©μ μ§§κ² ν΄λ λλ€λ μ₯μ μ΄ μλ λ°λ©΄ λ°μ΄ν°λ₯Ό μ½μ
νλ κ°μ μμκ° λ³κ²½λ κ²½μ° ν
μ΄λΈμ΄ λ§κ°μ§ μ μλ€λ μνμ΄ μλ€ INSERT INTO ν
μ΄λΈλͺ
VALUES (κ°1, κ°2, κ°3); 2. μ΄ μ΄λ¦κ³Ό ν¨κ» μμ ν ν μ½μ
INSERT INTO ν
μ΄λΈλͺ
(μ΄ μ΄λ¦1, μ΄ μ΄λ¦2, μ΄ μ΄λ¦3) VALUES (κ°1, κ°2, κ°3); 3. λΆλΆ ν μ½μ
INSERT INTO ν
μ΄λΈλͺ
(μ΄ μ΄λ¦1, μ΄ μ΄λ¦3) VALUES(κ°1, κ°3); 4. SQL λ¬Έμ₯ κ²°κ³Όλ₯Ό μ½μ
INSERT INTO ν
μ΄λΈλͺ
1(μ΄ μ΄λ¦1, μ΄ μ΄λ¦2, μ΄ μ΄λ¦3) SELECT μ΄ μ΄λ¦1, μ΄ μ΄λ¦2, μ΄ μ΄λ¦3 FROM ν
μ΄λΈλͺ
2 WHERE 쑰건μ ; 1. CUST_PARTY ν
..
νμ 쿼리μ μ΄ν΄ FROMμ μ νμ 쿼리 1. 쑰건μ λ§λ λμμ μ μ ν μμ½ν λ μ΄ λ°©λ²μ 쑰건μ λ§λ λμμλ₯Ό μ μ ν ν λ°μ΄ν°λ₯Ό μμ½ν λ λ§μ΄ μ¬μ©λλ€ => ν
μ΄λΈ λ³μΉμ μ£Όμ§ μμΌλ©΄ μλ¬κ° λ°μνκΈ° λλ¬Έμ νμ 쿼리λ₯Ό μμ±ν ν ν
μ΄λΈ λ³μΉμ κΌ μ£Όμ΄μΌ νλ€ SELECT μ΄ μ΄λ¦1, μ΄ μ΄λ¦2 FROM (SELECT * FROM ν
μ΄λΈλͺ
WHERE 쑰건μ ) (AS) λ³μΉ WHERE 쑰건μ ; 2. ν
μ΄λΈ μ‘°μΈμ ν λ ν
μ΄λΈ μ‘°μΈμ ν λ νμν μ λ³΄λ§ μ‘°μΈν μ μλλ‘ κ³ μλ λ°©λ²μ΄λ€ SELECT λ³μΉ1.μ΄ μ΄λ¦1, λ³μΉ2.μ΄ μ΄λ¦2 FROM ν
μ΄λΈλͺ
1 (AS) λ³μΉ1 LEFT OUTER JOIN (SELECT μ΄ μ΄λ¦1, μ΄ μ΄λ¦2 FROM ν
μ΄λΈλͺ
2 WHERE 쑰건μ ) (AS) λ³μΉ2 ..
μ΄(Column) ν©μΉκΈ° λ΄λΆ μ‘°μΈ 1. FROM/WHEREλ₯Ό μ¬μ© λ΄λΆ μ‘°μΈμ λ ν
μ΄λΈμ ν€κ°μ΄ 맀μΉλ κ²½μ° μ νλ λͺ¨λ μ΄μ λνλ SELECT ν
μ΄λΈλͺ
1.μ΄ μ΄λ¦1, ν
μ΄λΈλͺ
2.μ΄ μ΄λ¦2 FROM ν
μ΄λΈλͺ
1, ν
μ΄λΈλͺ
2 WHERE ν
μ΄λΈλͺ
1.KEY=ν
μ΄λΈλͺ
2.KEY; 2. FROM/WHEREμ λ³μΉμ μ¬μ© μ€λΌν΄μ ν¬ν¨ν λͺλͺ DBMSλ ν
μ΄λΈλͺ
λ³μΉμ μ€ λ AS ν€μλκ° μ§μλμ§ μμΌλ―λ‘ ASλ₯Ό λΉΌκ³ ν
μ΄λΈ λ³μΉμ μ€μ ν΄μΌν¨! SELECT λ³μΉ1.μ΄ μ΄λ¦1, λ³μΉ2.μ΄ μ΄λ¦2 FROM ν
μ΄λΈλͺ
1(AS) λ³μΉ1, ν
μ΄λΈλͺ
2(AS) λ³μΉ2 WHERE λ³μΉ1.KEY=λ³μΉ2.KEY; 3. INNER JOINμ μ¬μ© INNER JOINμ μ¬μ©νμ¬ λ ν
μ΄λΈμ ν©μΉ μ μλ€ => ON λ€μ λ ν
μ΄λΈμ ..
λ°μ΄ν°μ κ·Έλ£Ήν GROUB BY 1. μ΄ μ΄λ¦μΌλ‘ κ·Έλ£Ήν μ§κ³ ν¨μλ₯Ό μ μΈν SELECTλ¬Έμ λͺ¨λ μ΄μ GROUB BYμ μ μμ΄μΌν¨ SELECT κ·Έλ£Ήνν μ΄ μ΄λ¦1, κ·Έλ£Ήνν μ΄ μ΄λ¦2, μ§κ³ ν¨μ FROM ν
μ΄λΈλͺ
WHERE 쑰건μ GROUB BY μ΄ μ΄λ¦1, μ΄ μ΄λ¦2; 2. μ΄ μμΉλ‘ κ·Έλ£Ήν SELECT κ·Έλ£Ήνν μ΄ μ΄λ¦1, κ·Έλ£Ήνν μ΄ μ΄λ¦2, μ§κ³ ν¨μ FROM ν
μ΄λΈλͺ
WHERE 쑰건μ GROUB BY 1, 2; 1. PPC_201312 ν
μ΄λΈμ μ¬μ©νμ¬ κ³ κ°λ±κΈλ³ μΈλΉ νκ· μ° μμ΅μ κ³μ°νλ €λ©΄? SELECT SEG, ANNL_REV FROM PPC_201312 GROUP BY SEG; 2. PPC_201312 ν
μ΄λΈμ μ¬μ©νμ¬ μΉ΄λμνκ³Ό λμΆμν 보μ κ°μ κ΄κ³λ₯Ό μμλ³΄λ €λ©΄? SELECT ..