Database
πΎ Database Systemμ΄λ!?
- κ° μ‘°μ§μμ μ¬μ©νλ λ°μ΄ν°λ₯Ό λͺ¨μμ ν΅ν©νκ³ μλ‘ κ³΅μ νμ¬ μκΈ°λ μ₯μ μ μ΄μ©νλ μμ€ν μ΄λ€
πꡬμ±
1) λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν
(DBMS) : μ¬μ©μμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°κ²°μμΌμ£Όλ μννΈμ¨μ΄
2) λ°μ΄ν°λ² μ΄μ€ (Database) : 물리μ μΌλ‘ μ»΄ν¨ν° λ΄λΆμ νλλμ€ν¬μ μ μ₯
3) λ°μ΄ν° λͺ¨λΈ(Data Model) : λ°μ΄ν°κ° μ μ₯λλ κΈ°λ²(μ€κ³λλ₯Ό λ§λλ κ³Όμ )
<νμΌ μ²λ¦¬ μμ€ν vs. λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν λΉκ΅>
<DBMS κ³Όμ μ ννν κ·Έλ¦Ό>
πΎ λ°μ΄ν°λ² μ΄μ€κ΄λ¦¬μμ€ν
(DBMS)
πκΈ°λ₯
1. μ μ κΈ°λ₯(definition) : λ°μ΄ν°μ νν, ꡬ쑰, λ°μ΄ν°λ² μ΄μ€μ μ μ₯μ κ΄ν λ΄μ© μ μ
2. μ‘°μ κΈ°λ₯(manipulation) : μ¬μ©μμ μꡬμ λ°λΌ κ²μ, κ°±μ , μ½μ
, μμ λ±μ μ§μ
3. μ μ΄ κΈ°λ₯(control) : λ°μ΄ν°λ² μ΄μ€μ λ΄μ©μ λν΄ μ νμ±κ³Ό μμ μ±μ μ μ§νλ κΈ°λ₯ (λ¬΄κ²°μ± μ μ§, 보μ, λ³ν μν μ μ΄)
π¨οΈλ°μ΄ν° μΈμ΄
1) DDL (Data Definition Language) λ°μ΄ν° μ μμ΄ <-- DB μ€κ³μ
2) DML (Data Manipulation language) λ°μ΄ν° μ‘°μμ΄ <-- μμ© νλ‘κ·Έλλ¨Έ(application programmer)
3) DCL (Data Control Language) λ°μ΄ν° μ μ΄μ΄ <--DBκ΄λ¦¬μ (DBA)
βοΈMetadata
- λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°μ΄ν° (μΌλ°μ μΌλ‘ λ°μ΄ν°μ κ΄ν ꡬ쑰νλ λ°μ΄ν°)
ex. System metadata(critical in a DBMS), Business metadata (critical in a data warehouse)
πΎ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ (Relational DataBase)
π릴λ μ΄μ
- 릴λ μ΄μ
(ν
μ΄λΈ)μΌλ‘ ꡬμ±λ λ°μ΄ν° νλͺ©λ€μ μ§ν©
- 릴λ μ΄μ
= ν(row)& μ΄(column)λ‘ κ΅¬μ±λ 2μ°¨μ ν
μ΄λΈμ λ°μ΄ν°λ₯Ό μ μ₯
1. μ€ν€λ§
: κ° νλͺ©μ μ μνμ¬ λ§λ ν μ΄λΈμ ν/ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λλ λ°μ΄ν° ꡬ쑰μ μ μ½μ‘°κ±΄μ μ μν κ²
(ex. νμ = μ΄λ¦, νλ², νκ³Ό, μΆμλ λ)
- μμ : μμ±(attribute), λλ©μΈ(domain), μ°¨μ(degree)
1) μμ±(attribute) : 릴λ μ΄μ
μ κ° μ΄(column)μ λΆμ¬λ μ΄λ¦
2) λλ©μΈ(domain) : μμ± νλκ° κ°μ§ μ μλ κ°μ μ§ν© (ex. μ±λ³ μμ±μ λλ©μΈμ 'λ¨' λλ 'μ¬')
3) μ°¨μ(degree) : ννμ ꡬμ±νλ μμ±μ κ°μ.
2. μΈμ€ν΄μ€
: μ μλ μ€ν€λ§μ λ°λΌ λ°μ΄ν°λ² μ΄μ€μ μ€μ λ‘ μ μ₯λ κ°.
- μμ :
1) νν(tuple) : 릴λ μ΄μ
μ κ° ν. νν νΉμ λ μ½λλΌκ³ ν¨.
2) μΉ΄λλ 리ν°(cardinality) : ννμ κ°μ
* λ(null) : μμ± κ°μ΄ μ ν΄μ§μ§ μμκ±°λ μλ κ²½μ°μ κ° (unknown data)
3. 릴λ μ΄μ μ νΉμ§
1) μμ±μ λ¨μΌ κ°μ κ°μ§. λλ©μΈμ μ μλ κ°λ§μ κ°μ§.
2) μμ±μ ν 릴λ μ΄μ
μμ μλ‘ λ€λ₯Έ μ΄λ¦μ κ°μ§.
3) ν μμ±μ κ°μ λͺ¨λ κ°μ λλ©μΈ κ°μ κ°μ§.
4) 릴λ μ΄μ
λ΄μ μ€λ³΅λ ννμ νμ©X.
4. ν€(key)
: 릴λ μ΄μ
μμ ννμ μ μΌνκ² μλ³ν μ μλ νλ μ΄μμ μμ± λͺ¨μ.
1) ν보 ν€ (candidate key): κ° ννμ ꡬλΆν μ μλ μ΅μνμ μμ±λ§μΌλ‘ ꡬμ±λ ν€
2) κΈ°λ³Έ ν€ (primary key) : ν보 ν€κ° λ κ° μ΄μμΌ λ λνλ‘ μΌμ ν€. (NULLκ° νμ©X)
3) λ체 ν€ (alternate key) : κΈ°λ³Έ ν€ μλ ν보ν€
4) λ리 ν€ (surrogate key) / μΈμ‘° ν€ (artificial key) : κΈ°λ³Έ ν€κ° 보μμ μνκ±°λ, μ¬λ¬ κ°μ μμ±μΌλ‘ ꡬμ±λμ΄ λ³΅μ‘νκ±°λ, λ§λ
ν κΈ°λ³Έ ν€κ° μμ λλ μΌλ ¨ λ²νΈ κ°μ κ°μμ μμ±μ λ§λ€μ΄ κΈ°λ³Έ ν€λ‘ μΌλ κ²½μ°.
5) μΈλ ν€ (foreign key) : λ€λ₯Έ 릴λ μ΄μ
μ κΈ°λ³Έ ν€λ₯Ό μ°Έμ‘°νλ©° 릴λ μ΄μ
κ° κ΄κ³λ₯Ό λνλ΄λ ν€. (NULL κ°κ³Ό μ€λ³΅ κ° νμ©/ μκΈ° μμ μ κΈ°λ³Έ ν€λ₯Ό μ°Έμ‘°νλ μΈλ ν€λ κ°λ₯)
* sql(Structured Query Language) : κ΄κ³ν λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬ μμ€ν
(RDBMS)μ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν΄ μ€κ³λ νΉμ λͺ©μ μ νλ‘κ·Έλλ° μΈμ΄.
πλ¬΄κ²°μ± μ μ½ μ‘°κ±΄
: λλ©μΈ 무결μ±, κ°μ²΄ 무결μ±, μ°Έμ‘° 무결μ±
- DBμνκ° λ§μ‘±ν΄μΌ νλ 쑰건μΌλ‘ DB κ°±μ μ λ§λ€ DBMSκ° μλκ²μ¬
1) λλ©μΈ λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ : κ° μμ±μ κ°μ λ°λμ λλ©μΈμ μ§μ λ κ°λ§ κ°μ ΈμΌν¨.(μμ±μ κΈ°λ³Έ κ°, λ°μ΄ν° νμ, λ κ°μ νμ© μ¬λΆ, μ²΄ν¬ λ±μ μ§μ )
2) κ°μ²΄ λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ : κΈ°λ³Έ ν€λ₯Ό ꡬμ±νλ μ΄λ€ μμ±λ λ κ°μ κ°μ§ μ μμΌλ©°, μ€μ§ νλμ κ°λ§ μ‘΄μ¬
3) μ°Έμ‘° λ¬΄κ²°μ± μ μ½ μ‘°κ±΄ : μμ 릴λ μ΄μ
μ μΈλ ν€μ κ°μ μ°Έμ‘°λ λΆλͺ¨ 릴λ μ΄μ
μ κΈ°λ³Έ ν€ κ°κ³Ό κ°μμΌ ν¨. μμ 릴λ μ΄μ
μ κ°μ΄ λ³κ²½λ λ λΆλͺ¨ 릴λ μ΄μ
μ μ μ½μ λ°μ.
πκ΄κ³λμ (Relational Algebra)
: 릴λ μ΄μ μμ μνλ κ²°κ³Όλ₯Ό μ»κΈ° μν΄ μνμ λμμ κ°μ μ°μ°μ μ΄μ©νμ¬ μ§μνλ λ°©λ²μ κΈ°μ νλ μΈμ΄
1) μ§ν© μ°μ° (set operations)
: 릴λ μ΄μ μ νμ μ§ν©μΌλ‘ λ³΄κ³ μ μ©. -> ν©μ§ν©(union), κ΅μ§ν©(intersection), μ°¨μ§ν©(difference), μΉ΄ν°μ νλ‘λνΈ(cartesian product)
- ν©μ§ν©(union) : λ κ°μ 릴λ μ΄μ
μ ν©νμ¬ νλμ 릴λ μ΄μ
μ λ°νν¨. (μλ‘ κ°μ μμ± μμμ λλ©μΈμ κ°μ ΈμΌ ν¨)
- κ΅μ§ν©(intersection) : ν©λ³ κ°λ₯ν λ 릴λ μ΄μ
μ λμμΌλ‘ νλ©°, λ 릴λ μ΄μ
μ΄ κ³΅ν΅μΌλ‘ κ°μ§κ³ μλ ν¬νμ λ°νν¨.
- μ°¨μ§ν©(difference) : 첫 λ²μ§Έ 릴λ μ΄μ
μλ μνκ³ λ λ²μ§Έ 릴λ μ΄μ
μλ μνμ§ μλ ννμ λ°νν¨.
- μΉ΄ν°μ νλ‘λνΈ (cartesian product) : λͺ¨λ κ²½μ°μ μ / ν 릴λ μ΄μ
μ μν λͺ¨λ κ° νλ€μ λ€λ₯Έ 릴λ μ΄μ
μ λͺ¨λ νκ³Ό μ°κ²°μν¨ κ²°κ³Ό νμΌλ‘ ꡬμ±λ 릴λ μ΄μ
μ λ§λ€μ΄ λ.
2) κ΄κ³ μ°μ° (relational operations)
: 릴λ μ΄μ μ μ μ©ν μ μλλ‘ νΉλ³ν κ°λ°λ κ΄κ³ μ°μ° -> select, project, join
- μ νμ°μ°(selection) : 릴λ μ΄μ
μμ μ£Όμ΄μ§ 쑰건μ(predicate)μ λ§μ‘±νλ νλ€μ μ ννλ μ°μ°.(μνμ λΆλΆμ§ν©)
- μΆμΆμ°μ°(projection) : 릴λ μ΄μ
μμ νΉμ μμ±(column)μ μ ννλ μ°μ°. (μμ§μ λΆλΆμ§ν©)
- μ‘°μΈμ°μ°(join) : λ κ°μ 릴λ μ΄μ
μμ νΉμ μ΄ κ° κ°μ λΉκ΅ 쑰건μ λ§μ‘±νλ νλ€μ μ°κ²°νμ¬ κ²°κ³Ό 릴λ μ΄μ
μ λ§λ€μ΄λ΄λ μ°μ°. λ κ°μ 릴λ μ΄μ
μ μ°κ²°νλ μΉ΄ν°μ νλ‘λνΈμ 쑰건μ λ§μ‘±νλ νμ μ ννλ μ νμ°μ°μ κ²°ν©μ΄λΌκ³ λ³Ό μ μμ.
πΎλ°μ΄ν° λͺ¨λΈλ§
: λ°μ΄ν°λ² μ΄μ€ μ€κ³ κ³Όμ μμ μ»΄ν¨ν°μ μ μ₯ν λ°μ΄ν°μ ꡬ쑰λ₯Ό λ
Όλ¦¬μ μΌλ‘ νννκΈ° μν΄ μ¬μ©νλ λꡬ
: λͺ¨λΈμ νμ€μΈκ³μ ꡬ쑰μ λν μΈμμ νν
-> λ°μ΄ν° λͺ¨λΈλ§ κ³Όμ μ μ΄ μΈμμ λν μ€λ₯λ₯Ό μμ νλ κ³Όμ
-> λ°μ΄ν° λͺ¨λΈλ§ κ³Όμ μμ κ΄μ μ μ μ νκ³ , μΆμν νλ μΌμ ν¨
1. κ°λ μ λͺ¨λΈλ§ (conceptual data model)
: νμ€ μΈκ³μ μ‘΄μ¬νλ 무μν λ§μ κ°μ²΄(entity)λ€ μ€ λ°μ΄ν°λ² μ΄μ€μ μ μ₯ν λμλ€μ μΆμΆ -> μ΄λ₯Ό μΆμν μν¨ κ°λ μΌλ‘ νννλ κ³Όμ . (μꡬμ¬ν μμ§&λΆμν κ²°κ³Όλ₯Ό ν λλ‘ μ 무μ ν΅μ¬κ°λ ꡬλΆ, μ 체μ λΌλ λ§λλ κ³Όμ )
ex. E-R Model
2. λ Όλ¦¬μ λͺ¨λΈλ§ (logical data model)
: κ°λ μ λ°μ΄ν° λͺ¨λΈμ μ»΄ν¨ν°(DBMS)κ° μ΄ν΄ν μ μλλ‘ λ³ν. κ°λ μ λͺ¨λΈλ§μμ λ§λ ERDλ₯Ό μ¬μ©νκ³ μ νλ DBMSμ λ§κ² λ§€ννμ¬ μ€μ λ°μ΄ν°λ² μ΄μ€λ‘ ꡬννκΈ° μν λͺ¨λΈμ λ§λλ κ³Όμ .
πEntity-Relationship Model (E-R Model)
: μΈμμ μ¬λ¬Όμ κ°μ²΄(entity)μ κ°μ²΄ κ°μ κ΄κ³(relationship)λ‘ νν.
ꡬμ±μμ
1. Entity κ°μ²΄
: μ 무μ λμμΌλ‘μ μ νμκ° μμΌλ©° 보κ΄ν νμκ° μλ μ€μν μ 보. (λͺ μ¬ν/ μ¬λ¬Όμ λ²μ£Όλ μ ν)
μ¬λ¬ κ°μ occurrenceλ₯Ό κ°μ§ μ μμ.
μ΄λ¦μ λ¨μνμ μ μΌν μ΄λ¦ μ¬μ©, λλ¬Έμ μ¬μ©.
2. Attribute μμ±
: entityλ₯Ό κΈ°μ νλ ꡬ체μ μΈ μ 보. μν°ν°λ₯Ό μλ³νκ±°λ κ³λνμν€κ±°λ μνλ₯Ό λνλΌ μ μλ λͺ¨λ νλͺ©. (μν°ν° μ§μ - μμ± μ¬λ², μ΄λ¦, μ§κΈ λ±λ±)/ λ¨μν, μλ¬Έμ/ νμν μμ± '*', κ·Έλ μ§ μμΌλ©΄ 'o' λΆμ΄κΈ°.
3. Relationship κ΄κ³
: entityκ°μ κ΄κ³. μ
무μμ μꡬλλ μ 보λ€μ μ°κ²°νλ μ
무κ·μΉ.
4. UID unique identifiers
: μν°ν°μ κ° occurrenceλ₯Ό μλ³νκΈ° μν΄ μ¬μ©λλ μμ±μ΄λ κ΄κ³μ μ‘°ν©. '#'λΆμ¬μ£ΌκΈ°, secondary UIDλ '(#)' λΆμ΄κΈ°.
- Each EMPLOYEE must be assigned to one and only one DEPARTMENT.
- Each DEPARTMENT may be composed of one or more EMPLOYEEs.
<κ΄κ³μ± μμ>
• Many-to-One (M : 1) : κ³ κ°κ³Ό μμ
μ¬μ, λΆμμ μ§μ
• Many-to-Many (M : M) : νμμ κ°νΈμ¬, μ£Όλ¬Έκ³Ό μν, νμκ³Ό μκ°κ³Όλͺ©
• One-to-One (1 : 1) : μμ κ±°μ μμ κ±° μ μ, μ λκ³Ό μ λΆ
• λ€λλ€ κ΄κ³ Resolving Many-to-Many relationships
: λκ°μ μν°ν° μ¬μ΄μ λ νλμ μν°ν°λ₯Ό μΆκ°νμ¬ νλμ M:M relationshipμ λ κ°μ M:1 relationshipμΌλ‘ μ νν μ μμ.
• Intersection Entity : M:M -> M:1 μ νκ³Όμ μμ μλ‘μ΄ μΆκ°λλ μν°ν°. Intersection entityμ UIDλ μ’ μ’ μλμ μν°ν°λ€μ UIDλ€λ‘ ꡬμ±λ¨. >> μ΄λ° κ²½μ° relationshipμ λνλ΄λ μ μ UID barλ₯Ό μ¬μ©νμ¬ νν.
'Programming > SQL, Oracle' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
SQL 2. λ°μ΄ν° μ ν λ° μ λ ¬ (WHERE/ORDER BY) (0) | 2023.09.04 |
---|---|
SQL 1. SELECTλ¬Έμ μ¬μ©νλ λ°μ΄ν° κ²μ (0) | 2023.08.22 |
μ€λΌν΄ λ°μ΄ν°λ² μ΄μ€ (0) | 2023.08.22 |
SQL*plus (2) | 2023.08.21 |
Oracle μ μ νκΈ° (0) | 2023.08.21 |