λ°μ΄ν°?
: μΈ‘μ λ° μμ§ν κ°
μ 보?
: λ°μ΄ν°λ₯Ό κ°κ³΅νμ¬ μλ―Έλ₯Ό λΆμ¬ν κ²
λ°μ΄ν°λ² μ΄μ€ (DataBase)
: βλ°μ΄ν° μ μ₯μβ
λ°μ΄ν° + λ² μ΄μ€
β’
λ°μ΄ν° : μΈ‘μ λ° μμ§ν κ°
β’
λ² μ΄μ€ : κΈ°μ§
β’
λ°μ΄ν°λ² μ΄μ€ : λ°μ΄ν°κ° μ μ₯λ κΈ°μ§; βλ°μ΄ν° μ μ₯μβ
곡μ νκΈ° μν΄ ν΅ν©νμ¬ μ μ₯ν μ΄μ λ°μ΄ν°μ μ§ν©
λ°μ΄ν°λ² μ΄μ€ νΉμ§
λ°μ΄ν°λ₯Ό νμΌ μμ€ν
μΌλ‘ κ΄λ¦¬νλ©΄ λ°μ΄ν°κ° μ€λ³΅ λ° λλ½λ κ°λ₯μ±μ΄ λΉκ΅μ λ ν¬λ€. λν, μ¬λ¬ μμ€ν
κ°μ λ°μ΄ν°λ₯Ό 곡μ νλ κ²μ΄ μ΄λ ΅λ€. νμ§λ§, λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ©΄, μ¬λ¬ μμ€ν
μ μ¬μ©νλλΌλ λ°μ΄ν°λ₯Ό μ€λ³΅ λ° λλ½μ μ΅μνν μ μμΌλ©° μμ€ν
κ° μ€μκ° λ°μ΄ν° 곡μ κ° κ°λ₯νλ€.
λ°μ΄ν°λ² μ΄μ€ μμ€ν
λ°μ΄ν°λ² μ΄μ€ μμ€ν
: μ¬μ©μ + μΈν°νμ΄μ€ + DBMS + λ°μ΄ν°λ² μ΄μ€(λ°μ΄ν°μ¬μ , μ μ₯DB)
β’
μ¬μ©μ
: μΌλ° μ¬μ©μ, κ°λ°μ, SQL μ¬μ©μ, DBA
β’
μΈν°νμ΄μ€
: UI, DB API, DB TOOL
β¦
UI
: μ¬μ©μκ° λ°μ΄ν°λ₯Ό μμ²νλ νλ©΄
βͺ
μΉ, μ±, νλ‘κ·Έλ¨ νλ©΄
β¦
DB API
: κ°λ°μκ° κ°λ°νλ νλ‘κ·Έλ¨κ³Ό μ°κ²°λ μΈν°νμ΄μ€
βͺ
DB λλΌμ΄λ² (JDBC λ±)
β¦
DB TOOL
: λ°μ΄ν° κ΄λ¦¬μκ° DBMS λ₯Ό μ¬μ©νλ νλ‘κ·Έλ¨
βͺ
SQL Developer, Workbench, DBeaver, Toad λ±
β’
λ°μ΄ν°λ² μ΄μ€
: λ°μ΄ν° μ¬μ + μ μ₯ λ°μ΄ν°λ² μ΄μ€
β¦
λ°μ΄ν° μ¬μ
βͺ
λ©ν ν
μ΄ν°κ° μ μ₯λλ κ³³
βͺ
λ©νλ°μ΄ν° : λ°μ΄ν°λ² μ΄μ€ ꡬ쑰, μ€ν€λ§, ν
μ΄λΈ μ μ, μ μ½ μ‘°κ±΄, μΈλ±μ€, λ·° λ±
β¦
μ μ₯ λ°μ΄ν°λ² μ΄μ€
βͺ
μ€μ λ°μ΄ν°κ° μ μ₯λλ κ³³
β’
DBMS
: λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬νλ μμ€ν
β¦
μ£Όμ μ ν : ORACLE, MySQL, MS-SQL
λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ ꡬμ±μμλ μ¬μ©μ, μΈν°νμ΄μ€, DBMS, λ°μ΄ν°λ² μ΄μ€ μ
λλ€.
μ¬μ©μλ,
λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ μ¬μ©νλ μ¬λ λλ μμ© νλ‘κ·Έλ¨μ λ§ν©λλ€. μ¬μ©μλ λ°μ΄ν°λ₯Ό μ‘°ν, μΆκ°, μμ , μμ νκ³ λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ κΈ°λ₯μ νμ©ν μ μμ΅λλ€.
μΈν°νμ΄μ€λ,
μ¬μ©μμ λ°μ΄ν°λ² μ΄μ€ μμ€ν
κ°μ μνΈ μμ©μ μν 맀κ°μ²΄λ‘, λͺ
λ Ήμ μ
λ ₯νκ³ κ²°κ³Όλ₯Ό νμνλ λ°©μμ μ 곡ν©λλ€. μΈν°νμ΄μ€λ λͺ
λ Ή μ€ μΈν°νμ΄μ€(CLI), κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€(GUI), μμ© νλ‘κ·Έλ¨ API λ± λ€μν ννλ‘ μ‘΄μ¬ν μ μμ΅λλ€.
DBMS(Database Management System) λ,
λ°μ΄ν°λ² μ΄μ€ μμ€ν
μ ν΅μ¬ κ΅¬μ± μμλ‘, λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ μ‘°μνλ λ° μ¬μ©λλ μννΈμ¨μ΄μ
λλ€. DBMSλ λ°μ΄ν°λ² μ΄μ€ μμ±, μ‘°μ, μ μ§ κ΄λ¦¬, 보μ, λ¬΄κ²°μ± λ±μ κΈ°λ₯μ μ 곡ν©λλ€.
λ°μ΄ν°λ² μ΄μ€λ,
μ€μ λ°μ΄ν°κ° μ μ₯λλ μ₯μμ
λλ€. λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν° μ¬μ (λ©νλ°μ΄ν°)κ³Ό μ μ₯ λ°μ΄ν°λ² μ΄μ€λ‘ ꡬμ±λ©λλ€. λ°μ΄ν° μ¬μ μ λ°μ΄ν°μ λν μ 보λ₯Ό ν¬ν¨νκ³ , μ μ₯ λ°μ΄ν°λ² μ΄μ€λ μ€μ λ°μ΄ν° λ μ½λλ₯Ό 보μ ν©λλ€.
λ°μ΄ν° λͺ¨λΈ
: λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©μμ κ°λ¨νκ² μ€λͺ
ν΄μ£Όλ ꡬ쑰
( λͺ¨λΈ : μ€μ²΄λ₯Ό κ°λ¨νκ² μ€λͺ
ν΄μ£Όλ μμ ꡬ쑰 )
λ°μ΄ν° λͺ¨λΈμ μ’ λ₯
β’
κ³μΈ΅ν
β’
λ€νΈμν¬ν
β’
κ°μ²΄μ§ν₯ν
β’
κ΄κ³ν
κ΄κ³ν λ°μ΄ν° λͺ¨λΈ
: νκ³Ό μ΄μ κ°λ 2μ°¨μ ꡬ쑰μ ν
μ΄λΈ ννλ₯Ό ν΅νμ¬ μλ£λ₯Ό νννλ κ²
κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ ν΅μ¬ κ΅¬μ± μμ
β’
κ°μ²΄(Entity) = 릴λ μ΄μ
(μ€μ DBμ ν
μ΄λΈκ³Ό λμ)
β’
μμ±(Attriute)
β’
κ΄κ³(Relationship)
릴λ μ΄μ μ ꡬμ±μμ
β’
릴λ μ΄μ
(Relation) : λ°μ΄ν°λ€μ 2μ°¨μ ν
μ΄λΈμ κ΅¬μ‘°λ‘ μ μ₯ν κ²(ν
μ΄λΈ)
β’
μμ±(Attribute) : 릴λ μ΄μ
μ μ΄ (컬λΌ; column)
β’
νν(Tuple) : 릴λ μ΄μ
μ ν (λ‘μ°; row)
β’
μ°¨μ(Degree) : 릴λ μ΄μ
μμ±μ κ°μ
β’
μΉ΄λλ리ν°(Cardinality) : 릴λ μ΄μ
μ μ
λ ₯λ ννμ κ°μ
β’
λλ©μΈ(Domain) : νλμ μμ±μ΄ κ°μ§ μ μλ κ°μ λ²μ
릴λ μ΄μ μ νΉμ§
β’
ννμ μμ±μ νλμ λ°μ΄ν°λ§ μ μ₯νλ€
β’
ννμ λͺ¨λ λ€λ₯Έ λ°μ΄ν°λ‘ μ μΌν κ°μ κ°λλ€
β’
νν κ°μ μμλ μλ―Έκ° μλ€
β’
μμ± κ°μ μμλ μλ―Έκ° μλ€
β’
μμ±μ λΆν΄λμ§ μλ μμκ°λ₯Ό κ°λλ€ (νλμ μμ±μ νλμ κ°λ§ κ°λλ€)
λ°μ΄ν° λͺ¨λΈμ λ°μ΄ν°λ₯Ό μ μ₯νλ λ°©μμ μ΄ν΄νκΈ° μ½κ² λ¨μνν ꡬ쑰μ΄λ€.
λ°μ΄ν° λͺ¨λΈμ λν μ°κ΅¬κ° μ§νλλ©΄μ, λ€μν ννμ λ°μ΄ν° λͺ¨λΈμ΄ λ±μ₯νμμΌλ, νμ¬κΉμ§ κ°μ₯ λ리 μ¬μ©λλ λ°μ΄ν° λͺ¨λΈμ λ°λ‘ κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ΄λ€. κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ νκ³Ό μ΄λ‘ ꡬμ±λ νμ νν, μ¦ ν
μ΄λΈμ΄λΌλ κΈ°λ³Έ κ΅¬μ‘°λ‘ λ°μ΄ν°λ₯Ό νννκ³ κ΄λ¦¬νλ ꡬ쑰μ΄λ€.
κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰λ₯Ό λͺ
ννκ² μ μνμ¬ λ°μ΄ν°μ μΌκ΄μ±, 무결μ±, 보μ λ±μ μ μ§νκ³ κ΄λ¦¬νκΈ°μ μ ν©ν λ°©λ² μ€ νλμ΄λ€. μ΄λ¬ν κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ κΈ°λ°μΌλ‘ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°μ΄ν° μ μ₯μλ₯Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λΌκ³ νλ€. μ½κ² λ§ν΄, νκ³Ό μ΄μ 2μ°¨μ κ΅¬μ‘°μΈ ν
μ΄λΈμ κΈ°λ³ΈμΌλ‘ λ€λ£¨λ λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λΌκ³ ν μ μλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€
: κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ κΈ°λ°ν λ°μ΄ν°λ² μ΄μ€
RDBMS(Relational Database Management System)
: κ΄κ³ν λ°μ΄ν° λͺ¨λΈμ λ°νμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ λ° κ΄λ¦¬νλ μμ€ν
SQL (Sturctrured Query Language)
: "ꡬ쑰νλ μ§μμ΄"
RDBMS μμ λ°μ΄ν°λ₯Ό λ€λ£¨κ³ κ΄λ¦¬νλ μ§μ μΈμ΄
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ μ ν
β’
ORACLE
β’
MySQL
β’
MS-SQL
SQL λΆλ₯
μ’
λ₯ | μ€λͺ
|
DDL | - DB μ κ°μ²΄ λ° κ΅¬μ‘°λ₯Ό μ μνλ μΈμ΄
- Data Definition Language
- CREATE, ALTER, DROP, RENAME, TRUNCATE |
DML | - λ°μ΄ν°λ₯Ό μ
λ ₯, μ‘°ν, μμ , μμ νλ μΈμ΄
- Data Manipulation Language
- INSERT, SELECT, UPDATE, DELETE |
DCL | - μ¬μ©μμκ² κΆν λΆμ¬ λ° νμνλ μΈμ΄
- Data Control Language
- GRANT, REVOKE |
TCL | - νΈλμμ
μ μ μ΄νλ μΈμ΄
- Transaction, Control Language
- COMMIT, ROLLBACK, SAVEPOINT |
DDL (λ°μ΄ν° μ μμ΄)
: ν
μ΄λΈμ ν¬ν¨ν μ¬λ¬ κ°μ²΄ μμ±, μμ , μμ νλ λͺ
λ Ήμ΄
- CREATE : κ°μ²΄ μμ±
- ALTER : κ°μ²΄ μμ
- DROP : κ°μ²΄ μμ
- TRUNCATE : λ΄λΆμ λ΄μ©μ μμ
Plain Text
볡μ¬
DML (λ°μ΄ν° μ‘°μμ΄)
: ν
μ΄λΈ λ΄μ λ°μ΄ν°λ₯Ό μ‘°ν, μΆκ°, μμ , μμ νλ λͺ
λ Ήμ΄
- SELECT : λ°μ΄ν° μ‘°ν
- INSERT : λ°μ΄ν° μΆκ°
- UPDATE : λ°μ΄ν° μμ
- DELETE : λ°μ΄ν° μμ
Plain Text
볡μ¬
DCL (λ°μ΄ν° μ μ΄μ΄)
: λ°μ΄ν°μ λν μ¬μ© κΆνμ λΆμ¬νκ±°λ ν΄μ νλ λͺ
λ Ήμ΄
- GRANT : κΆν λΆμ¬
- REVOKE : κΆν ν΄μ
Plain Text
볡μ¬
TCL (νΈλμμ μ μ΄μ΄)
: νΈλμμ
λ¨μλ‘ λ°μ΄ν° λ³κ²½μ¬νμ μꡬ μ μ₯νκ±°λ λλ리λ λͺ
λ Ήμ΄
- COMMIT : νΈλμμ
μμ λ³κ²½ μ¬νμ μꡬμ μΌλ‘ μ μ₯νλ λͺ
λ Ή
- ROLLBACK : νΈλμμ
μμ λ³κ²½ μ¬νμ μ·¨μνκ³ μ΄μ μνλ‘ λλ리λ λͺ
λ Ή
Plain Text
볡μ¬
νΈλμμ ? (Transaction)
: DBMS μμ λ°μνλ νλμ λ
Όλ¦¬μ μμ
λ¨μ
νΈλμμ μ νΉμ§ - ACID
β’
A
β¦
μμμ± (Atomicity): νλμ νΈλμμ
μ λͺ¨λ μ°μ°μ΄ μμ ν μνλκ±°λ μλ¬΄λ° μ°μ°λ μνλμ§ μμ μνλ‘ μ μ§λμ΄μΌ ν¨μ μλ―Έν©λλ€. μ¦, νΈλμμ
λ΄μ λͺ¨λ μμ
μ ν¨κ» μ€νλκ±°λ μ무κ²λ μ€νλμ§ μμμΌ ν©λλ€.
β’
C
β¦
μΌκ΄μ± (Consistency): νΈλμμ
μλ£ νμ λ°μ΄ν°λ² μ΄μ€λ 미리 μ μλ μΌκ΄λ μνμ μμ΄μΌ ν©λλ€. νΈλμμ
μμ
μ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ μ μ§ν΄μΌ ν©λλ€.
β’
I
β¦
κ²©λ¦¬μ± (Isolation): λμμ μ¬λ¬ νΈλμμ
μ΄ μ€νλ λ, ν νΈλμμ
μ μμ
μ΄ λ€λ₯Έ νΈλμμ
μ μν₯μ λ―ΈμΉμ§ μλλ‘ κ²©λ¦¬λμ΄μΌ ν©λλ€. κ° νΈλμμ
μ λ€λ₯Έ νΈλμμ
μ μμ
μ λͺ¨λ₯΄κ³ λ
립μ μΌλ‘ μ²λ¦¬λμ΄μΌ ν©λλ€.
β’
D
β¦
μμμ± (Durability): νΈλμμ
μ΄ μ±κ³΅μ μΌλ‘ μλ£λλ©΄ κ·Έ κ²°κ³Όλ μꡬμ μΌλ‘ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λμ΄μΌ ν©λλ€. μμ€ν
μ₯μ λλ λΉμ μ μ’
λ£κ° λ°μνλλΌλ λ°μ΄ν°μ μ§μμ±μ΄ 보μ₯λμ΄μΌ ν©λλ€.
μ΄λ¬ν νΈλμμ
μ νΉμ§μΌλ‘ μΈν΄, λ°μ΄ν°λ² μ΄μ€μ 무결μ±κ³Ό μΌκ΄μ±μ 보μ₯ν μ μλ€.