Computer Science/πΎ Database
[DB] μ κ·ν(Normalization)μ λ°μ κ·ν(De-Normalization)
μ κ·ν(Normalization) 릴λ μ΄μ μ μ¬λ¬ κ°λ‘ λΆλ¦¬νλ κ³Όμ 릴λ μ΄μ κ° μλͺ»λ ν¨μ μ’ μ κ΄κ³λ‘ λ°μνλ κ°μ’ μ½μ /κ°±μ /μμ μ΄μ νμμ ν΄κ²°νκΈ° μν¨ λΆνμν λ°μ΄ν° μ κ±°λ₯Ό ν΅ν΄ μ μ₯ 곡κ°μ ν¨μ¨μ μΌλ‘ μ¬μ© ν¨μ μ’ μ κ΄κ³λ 릴λ μ΄μ λΆλ¦¬(μ κ·ν)μ κΈ°μ€μ΄ λ¨ β» μ½μ /κ°±μ /μμ μ΄μ νμμ κ΄ν λ΄μ©μ μλ ν¬μ€νΈ μ°Έκ³ https://zu-techlog.tistory.com/141 [DB] μ΄μ νμ(Anomaly) κ°λ , μ’ λ₯ μ΄μ νμ(Anomaly) μ€λ³΅μ΄ λ°μνκ³ μ 체μ μΈ λ¬΄κ²°μ±μ΄ μ ν 릴λ μ΄μ μ λν λ°μ΄ν° μ½μ , μμ , μμ μ°μ°μ ν λ λ°μν μ μλ λΆμμ© νμ€μΈκ³μ μ€μ κ°κ³Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ κ°μ΄ μΌ zu-techlog.tistory.com μ 1μ κ·ν(1NF) 릴..
[DB] μ΄μ νμ(Anomaly) κ°λ , μ’ λ₯
μ΄μ νμ(Anomaly) μ€λ³΅μ΄ λ°μνκ³ μ 체μ μΈ λ¬΄κ²°μ±μ΄ μ ν 릴λ μ΄μ μ λν λ°μ΄ν° μ½μ , μμ , μμ μ°μ°μ ν λ λ°μν μ μλ λΆμμ© νμ€μΈκ³μ μ€μ κ°κ³Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ κ°μ΄ μΌμΉνμ§ μλ λ¬Έμ κ° λ°μ μ κ·νλ₯Ό ν΅ν΄ ν΄κ²° κΈ°λ³Έ ν μ΄λΈ μμ) νκ΅ ν μ΄λΈ 1. μ½μ μ΄μ(Insertion Anomaly) νΉμ λ°μ΄ν°κ° μ‘΄μ¬νμ§ μμ μ€μν λ°μ΄ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ½μ ν μ μμ λ λ°μ λ΄κ° μνλ κ°λ§ ν μ΄λΈμ μ½μ νκ³ μΆμλ°, ν μ΄λΈμ νμνμ§ μμ νλλ€ λλ¬Έμ μμΉ μλ νλμ κ°λ μ½μ ν΄μΌ νλ κ²½μ° μ μ€λ 'μνκ³Ό'μλ νμμ΄ μ‘΄μ¬νμ§ μμ ν μ΄λΈμ 'μνκ³Ό' λ°μ΄ν°λ₯Ό μΆκ°ν μ μμ μ κ·νλ₯Ό ν΅ν΄ νμ ν μ΄λΈκ³Ό νκ³Ό ν μ΄λΈλ‘ λΆλ¦¬νλ©΄ ν΄κ²° κ°λ₯ 2. μμ μ΄μ((Deleti..
[DB] SQL μ‘°μΈ(Join) κ°λ , μ’ λ₯
μ‘°μΈ(Join) ν λ°μ΄ν°λ² μ΄μ€ λ΄μ μ¬λ¬ ν μ΄λΈμ λ μ½λλ₯Ό μ‘°ν©νμ¬ νλμ μ΄λ‘ ννν κ²\ λ°μ΄ν°λ² μ΄μ€μλ μλ‘ κ΄κ³μλ λ°μ΄ν°κ° μ¬λ¬ ν μ΄λΈλ‘ λλμ΄ μ μ₯λμμ΄ μ‘°μΈμ ν΅ν΄ κ° ν μ΄λΈμ μ°κ²°νμ¬ ν¨κ³Όμ μΌλ‘ κ²μ λ ν μ΄λΈμ μ‘°μΈμ μν΄μλκΈ°λ³Έν€(PRIMARY KEY, PK)μ μΈλν€(FOREIGN KEY, FK) κ΄κ³λ‘ λ§Ίμ΄μ ΈμΌ ν¨ μ‘°μΈμ μ’ λ₯ λ΄λΆ μ‘°μΈ(INNER JOIN): λ ν μ΄λΈμ μ‘°μΈν λ, λ ν μ΄λΈμ λͺ¨λ μ§μ ν μ΄μ λ°μ΄ν°κ° μμ΄μΌ ν¨ μΈλΆ μ‘°μΈ(OUTER JOIN): λ ν μ΄λΈμ μ‘°μΈν λ, 1κ°μ ν μ΄λΈμλ§ λ°μ΄ν°κ° μμ΄λ κ²°κ³Όκ° λμ΄ μνΈ μ‘°μΈ(CROSS JOIN): νμͺ½ ν μ΄λΈμ λͺ¨λ νκ³Ό λ€λ₯Έ μͺ½ ν μ΄λΈμ λͺ¨λ νμ μ‘°μΈνλ κΈ°λ₯ μ체 μ‘°μΈ(SELF JOIN): μμ μ΄ μ..
[DB] λ°μ΄ν°λ² μ΄μ€ κΈ°μ΄ μ©μ΄, ν€(Key)μ κ°λ κ³Ό μ’ λ₯
λ°μ΄ν°λ² μ΄μ€ κΈ°μ΄ μ©μ΄ 릴λ μ΄μ (Relation) κ΄κ³ν λ°μ΄ν° λͺ¨λΈμμ νλμ κ°μ²΄μ κ΄ν λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν ꡬ쑰 (= ν μ΄λΈ) μ€ν€λ§μ μΈμ€ν΄μ€λ‘ μ΄λ£¨μ΄μ§ μ€ν€λ§(Schema) 릴λ μ΄μ μ μ΄λ¦, κ° μμ±μ μ΄λ¦, νμ , λλ©μΈ λ±μ μ μνλ κ°λ μΈμ€ν΄μ€(Instance) 릴λ μ΄μ μ μ μ₯λλ λ°μ΄ν°(νν)μ μ§ν© μμ±(Attribute) 릴λ μ΄μ μ μ΄(Column) μλ‘ λ€λ₯Έ μ΄λ¦μ κ°μ ΈμΌ ν¨ νν(Tuple) / λ μ½λ(Record) 릴λ μ΄μ μ ν(Row) μ€λ³΅ λΆκ° μ°¨μ(Degree) νλμ 릴λ μ΄μ μμ μμ±μ μ 체 κ°μ μΉ΄λλ리ν°(Cardinality) νλμ 릴λ μ΄μ μμ ννμ μ 체 κ°μ λλ©μΈ(Domain) 릴λ μ΄μ μ μμ±μ΄ κ°μ§ μ μλ μμκ°λ€μ μ§ν© ν€(Key) 릴λ μ΄μ μ ννμ ..
[DB] νΈλμμ (Transaction) κ°λ , νΉμ§, μ°μ°, μν
νΈλμμ (Transaction) λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€λ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μ νκΊΌλ²μ μνλμ΄μΌν μΌλ ¨μ μ°μ° λ°μ΄ν°λ² μ΄μ€ μΌκ΄μ±κ³Ό λ¬΄κ²½μ± λ³΄μ₯ λ°μ΄ν°λ² μ΄μ€μ νλμ μμ μ΄ μνλλ λμ λ€λ₯Έ μμ μ΄ κ°μνμ§ λͺ»νλλ‘ ν¨ λ Όλ¦¬μ μΈ μμ μ μ λͺ¨λ μλ²½νκ² μ²λ¦¬νκ±°λ λλ μ²λ¦¬νμ§ λͺ»ν κ²½μ°μλ μ μνλ‘ λ³΅κ΅¬ν΄μ μμ μ μΌλΆλ§ μ μ©λλ νμμ΄ λ°μνμ§ μκ² λ§λ€μ΄μ£Όλ κΈ°λ₯ νΈλμμ μ°μ° Commit νλμ νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ λλμ λ°μ΄ν°λ² μ΄μ€κ° μΌκ΄μ± μλ μνμ μμμ μλ €μ£ΌκΈ° μν΄ μ¬μ©νλ μ°μ° Rollback νλμ νΈλμμ μ²λ¦¬κ° λΉμ μμ μΌλ‘ μ’ λ£λμ΄ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ κΉ¨λ¨λ Έμ λ, μ΄ νΈλμμ μ μΌλΆκ° μ μμ μΌλ‘ μ²λ¦¬λμλλΌλ νΈλμμ μ μμμ±μ 보μ₯..
[DB] RDBMSμ SQLκ³Ό NoSQL μ°¨μ΄
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€(RDBMS, SQL Database) κ³ μ λ ν(row)κ³Ό μ΄(column)λ‘ κ΅¬μ±λ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ μ₯ ν μ΄λΈμ κ΄κ³κ° ꡬ쑰νλ λ°μ΄ν°μ λͺ¨μμ΄κΈ° λλ¬Έμ ꡬ쑰νλ 쿼리 μΈμ΄(SQL)λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό λ€λ£Έ κ° μ΄μ νλμ μμ±μ λν μ 보λ₯Ό μ μ₯νκ³ , νμλ κ° μ΄μ λ°μ΄ν° νμμ λ§λ λ°μ΄ν°κ° μ μ₯ ν μ΄λΈμ ꡬ쑰μ λ°μ΄ν° νμ λ±μ μ¬μ μ μ μν ν κ·Έ νμμ μ μ§νλ©° λ°μ΄ν° μ‘°μ ν μ΄λΈ κ°μ κ΄κ³λ₯Ό μ§κ΄μ μΌλ‘ νμ ν μ μμ μ₯μ λͺ ννκ² μ μλ μ€ν€λ§, λ°μ΄ν° λ¬΄κ²°μ± λ³΄μ₯ κ΄κ³λ κ° λ°μ΄ν°λ₯Ό μ€λ³΅μμ΄ νλ²λ§ μ μ₯ λ¨μ λ°μ΄ν° μ€ν€λ§λ₯Ό λ³κ²½νκΈ° μ΄λ €μ μ μ°μ±μ΄ λ¨μ΄μ§ κ΄κ³λ₯Ό λ§Ίκ³ μμ΄μ Join λ¬Έμ΄ λ§μ 볡μ‘ν μΏΌλ¦¬κ° λ§λ€μ΄μ§ μ μμ λμ²΄λ‘ μμ§μ νμ₯λ§ κ°λ₯ν¨ λΉκ΄κ³ν..
[DB] μΈλ±μ€(Index) κ°λ , μ₯λ¨μ , μ λ΅, ꡬ쑰
μΈλ±μ€(Index) μ± μ 'μμΈ'κ³Ό κ°μ΄ λ°μ΄ν°λ² μ΄μ€ λ΄ λ°μ΄ν° κ²μ μ±λ₯μ λμ΄κΈ° μν΄ μ¬μ©νλ μλ£ κ΅¬μ‘° νΉμ μΉΌλΌμ μΈλ±μ€λ₯Ό μμ±νλ©΄, ν΄λΉ μΉΌλΌμ λ°μ΄ν°λ₯Ό μ λ ¬νμ¬ λ³λμ λ©λͺ¨λ¦¬ 곡κ°μ λ°μ΄ν°μ 물리μ μ£Όμμ ν¨κ» μ μ₯ λ°μ΄ν°λ₯Ό κ²μνλ 쿼리λ₯Ό μ€ννλ©΄ μ΅ν°λ§μ΄μ λ μΈλ±μ€μ μ μ₯λμ΄ μλ λ°μ΄ν°μ 물리 μ£Όμλ₯Ό μ°Έμ‘°νλ©΄μ κ²μ μλ ν₯μ μΈλ±μ€ μμ± μ λ°μ΄ν°λ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬ μ₯μ κ²μ 쑰건 WHERE μ μμμ ν¨μ¨μ± μΈλ±μ€λ₯Ό μ€μ νμ§ μμΌλ©΄ λ€μ£½λ°μ£½ μμ¬μλ λ°μ΄ν° μ€ κ²μμ νλ €λ©΄ ν μ€μΊ(Full Scan)μ ν΄μΌν¨ μΈλ±μ€ ν μ΄λΈμ λ°μ΄ν°λ€μ΄ μ λ ¬λμ΄ μ μ₯λμ΄ μκΈ° λλ¬Έμ 쑰건(WHEREμ )μ λ§λ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ°Ύμ μ μμ μ λ ¬ ORDER BY μ μμμ ν¨μ¨μ± μΈλ±μ€λ₯Ό μ¬μ©νλ©΄ μ΄λ―Έ ..
[DB] SQL SELECT 쿼리 λ¬Έλ² μμμ μ€ν μμ
SQLμ SELECT μΏΌλ¦¬λ¬Έμ΄ μ΄λ€ μμλ‘ μ€νμ΄ λλμ§λ₯Ό μλ©΄ μ¬λ°λ₯΄κ³ ν¨μ¨μ μΈ μΏΌλ¦¬λ₯Ό μ§λλ°μ λ§μ λμμ΄ λλ€. λ°λΌμ SQL λ¬Έλ² μμμ μ€μ μ€ν μμλ₯Ό λ€μκ³Ό κ°μ΄ μ λ¦¬ν΄ λ³Έλ€. π SQL λ¬Έλ² μμ SELECT FROM WHERE GROUP BY HAVING ORDER BY π SQL μ€μ μ€ν μμ FROM : κ° ν μ΄λΈ νμΈ ON : μ‘°μΈ μ‘°κ±΄ νμΈ JOIN : ν μ΄λΈ μ‘°μΈ (λ³ν©) WHERE : λ°μ΄ν° μΆμΆ 쑰건 νμΈ GROUP BY : νΉμ μΉΌλΌμΌλ‘ λ°μ΄ν° κ·Έλ£Ήν HAVING : κ·Έλ£Ήν μ΄ν λ°μ΄ν° μΆμΆ 쑰건 νμΈ SELECT : λ°μ΄ν° μΆμΆ DISTINCT : μ€λ³΅ μ κ±° ORDER BY : λ°μ΄ν° μ λ ¬