Home
>
DB
>
πΎ[Database] μ€ν€λ§(Schema)λ 무μμΌκΉμ?
Database
πΎ[Database] μ€ν€λ§(Schema)λ 무μμΌκΉμ?
- μ€ν€λ§(Schema)λ λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰λ₯Ό μ μνλ μ©μ΄λ‘, λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°κ° μ΄λ»κ² μ μ₯λκ³ , μ΄λ»κ² μ‘°μ§νλλμ§λ₯Ό μ€λͺ
νλ λ° μ¬μ©λ©λλ€.
- μ€ν€λ§(Schema)λ λ°μ΄ν°λ² μ΄μ€μ λ
Όλ¦¬μ μ€κ³λ₯Ό λνλ΄λ©΄, ν
μ΄λΈ, λ·°, μΈλ±μ€, νΈλ¦¬κ±°, μ μ₯ νλ‘μμ , μ μ½ μ‘°κ±΄ λ±κ³Ό κ°μ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ€μ΄ μ΄λ»κ² ꡬμ±λλμ§λ₯Ό μ μν©λλ€.
1οΈβ£ μ€ν€λ§μ μ£Όμ μμ.
1οΈβ£ ν
μ΄λΈ(Table).
- μ€ν€λ§(Schema)μμ κ°μ₯ κΈ°λ³Έμ μΈ μμλ‘, λ°μ΄ν°λ₯Ό ν(Row)κ³Ό μ΄(Column) νμμΌλ‘ μ μ₯ν©λλ€.
- κ° ν
μ΄λΈμ νλμ μν°ν°(μ: μ¬μ©μ, μ ν λ±)λ₯Ό νννλ©°, ν
μ΄λΈμ μ΄(Column)μ μμ±μ, νμ κ° κ°μ²΄μ λ°μ΄ν°λ₯Ό λνλ
λλ€.
2οΈβ£ 컬λΌ(Column).
- ν
μ΄λΈμ κ° νλλ₯Ό λνλ΄λ©°, λ°μ΄ν° μ ν(μ μ, λ¬Έμμ΄ λ±)κ³Ό μ μ½ μ‘°κ±΄(μ:
NOT NULL
, UNIQUE
)μ΄ μ€μ λ©λλ€.
- μ€ν€λ§(Schema)μμ 컬λΌ(Column, μ΄)μ μ΄λ¦, λ°μ΄ν° νμ
, ν¬κΈ° λ±μ μ μν©λλ€.
3οΈβ£ κΈ°λ³Έ ν€(Primary Key)
- ν
μ΄λΈμμ κ° ν(Row)μ κ³ μ νκ² μλ³ν μ μλ νΉμ μ΄(λλ μ΄μ μ‘°ν©)μ
λλ€.
- μ€ν€λ§(Schema)μμ κΈ°λ³Έ ν€(Primary Key)λ νΉμ ν
μ΄λΈμμ μ€λ³΅λμ§ μλ κ°μΌλ‘ μ μλ©λλ€.
4οΈβ£ μΈλ ν€(Foreign Key)
- λ€λ₯Έ ν
μ΄λΈμ κΈ°λ³Έ ν€(Primary Key)μ μ°κ²°λλ μ΄(Column)λ‘, λ ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€.
- μ€ν€λ§(Schema)μμ μΈλ ν€(Foreign Key)λ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈ κ°μ μ°Έμ‘° 무결μ±μ μ μ§νλλ‘ ν©λλ€.
5οΈβ£ μΈλ±μ€(Index)
- κ²μ μ±λ₯μ ν₯μμν€κΈ° μν΄ ν
μ΄λΈμ νΉμ μ΄(Column)μ λν μΈλ±μ€λ₯Ό μ μν©λλ€.
- μ€ν€λ§(Schema)μμ μΈλ±μ€λ λ°μ΄ν°μ ν¨μ¨μ μΈ κ²μμ μν μΆκ°μ μΈ κ΅¬μ‘°λ₯Ό λνλ
λλ€.
6οΈβ£ λ·°(View)
- νλ μ΄μμ ν
μ΄λΈμμ λ°μ΄ν°λ₯Ό μΆμΆνμ¬ λ³΄μ¬μ£Όλ κ°μμ ν
μ΄λΈμ
λλ€.
- λ°μ΄ν°λ² μ΄μ€ λ΄μ 물리μ μΌλ‘ μ μ₯λμ§ μκ³ , SQL(Structured Query Language) 쿼리 κ²°κ³Όλ₯Ό ν΅ν΄ μμ±λ©λλ€.
7οΈβ£ μ μ½ μ‘°κ±΄(Constraints)
- λ°μ΄ν° 무결μ±μ 보μ₯νκΈ° μν΄ ν
μ΄λΈμ΄λ μ΄(Column)μ μ μ©λλ κ·μΉμ
λλ€.
- μλ₯Ό λ€μ΄,
NOT NULL
, UNIQUE
, CHECK
, FOREIGN KEY
λ±μ μ μ½ μ‘°κ±΄μ΄ μ€ν€λ§μ μ μλ©λλ€.
2οΈβ£ μ€ν€λ§μ μ’
λ₯.
1οΈβ£ λ
Όλ¦¬μ μ€ν€λ§(Logical Schema)
- λ°μ΄ν°λ² μ΄μ€μ μ 체μ μΈ λ
Όλ¦¬μ ꡬ쑰λ₯Ό λνλ
λλ€.
- ν
μ΄λΈ, λ·°, μΈλ±μ€ λ±μ λ
Όλ¦¬μ μΈ κ΅¬μ‘°λ₯Ό μ μνλ©°, λ°μ΄ν°λ² μ΄μ€ μ¬μ©μλ€μ΄ λ°μ΄ν°λ₯Ό μ΄λ»κ² λ³Όμ§λ₯Ό μ€λͺ
ν©λλ€.
2οΈβ£ 물리μ μ€ν€λ§(Physical Schema)
- λ°μ΄ν°κ° μ€μ λ‘ λ°μ΄ν°λ² μ΄μ€μ μ΄λ»κ² μ μ₯λλμ§λ₯Ό λνλ
λλ€.
- μ΄λ νλμ¨μ΄ λ 벨μμ λ°μ΄ν°κ° μ μ₯λλ λ°©μμ μ€λͺ
νλ©°, λ°μ΄ν° νμΌ, μΈλ±μ€ νμΌ λ±μ΄ ν¬ν¨λ©λλ€.
3οΈβ£ μ¬μ©μ μ€ν€λ§(User Schema)
- νΉμ μ¬μ©μμκ² λ³΄μ¬μ§λ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰λ₯Ό λνλ
λλ€.
- μΌλ°μ μΌλ‘ μ¬μ©μλ μ 체 λ°μ΄ν°λ² μ΄μ€κ° μλ, νΉμ λ·°λ ν
μ΄λΈλ§ μ κ·Όν μ μλλ‘ μ€μ λ©λλ€.
3οΈβ£ μ€ν€λ§ μμ.
- μ€ν€λ§λ SQLμ ν΅ν΄ μ μν μ μμΌλ©°, μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ κ΅¬μ‘°κ° μ€μ λ©λλ€.
- μλ₯Ό λ€μ΄, μ¬μ©μ ν
μ΄λΈμ μ€ν€λ§λ λ€μκ³Ό κ°μ΄ μ μν μ μμ΅λλ€.
CREATE TABLE Users (
user_id INT PRIMARY KEY, -- κΈ°λ³Έ ν€
username VARCHAR(50) NOT NULL -- NULLμ νμ©νμ§ μμ
email VARCHAR(100) UNIQUE, -- κ³ μ ν κ°
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
- μ μ€ν€λ§ μ μμμλ
User
ν
μ΄λΈμ΄ μμ±λλ©°, λ€μκ³Ό κ°μ ꡬ쑰λ₯Ό κ°μ§λλ€.
-
user_id
: κΈ°λ³Έ ν€(Primary Key)λ‘, κ³ μ ν μ¬μ©μ μλ³μμ
λλ€.
-
username
: μ¬μ©μμ μ΄λ¦μ μ μ₯νλ©°, NULL
μ νμ©νμ§ μμ΅λλ€.
-
email
: μ¬μ©μμ μ΄λ©μΌμ μ μ₯νλ©°, κ³ μ ν κ°μ΄μ΄μΌ ν©λλ€.
-
created_at
: μ¬μ©μκ° μμ±λ μκ°μ λνλ΄λ©°, κΈ°λ³Έκ°μΌλ‘ νμ¬ μκ°μ μ μ₯ν©λλ€.
4οΈβ£ μ€ν€λ§μ μν .
-
λ°μ΄ν° ꡬ쑰 μ μ
- μ€ν€λ§λ λ°μ΄ν°λ² μ΄μ€ λ΄μ λͺ¨λ λ°μ΄ν° ꡬ쑰λ₯Ό μ μν©λλ€.
- μ΄λ ν
μ΄λΈ, μ΄(Column), μ μ½ μ‘°κ±΄ λ±μ λͺ
ννκ² μ μν¨μΌλ‘μ¨ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ μ μ§ν©λλ€.
-
λ°μ΄ν° λ¬΄κ²°μ± μ μ§
- μ€ν€λ§λ μ μ½ μ‘°κ±΄κ³Ό κ·μΉμ μ€μ νμ¬ λ°μ΄ν°μ 무결μ±μ 보μ₯ν©λλ€.
- μλ₯Ό λ€μ΄, μΈλ ν€(Foreign Key) μ μ½ μ‘°κ±΄μ λ°μ΄ν° κ°μ μ°Έμ‘° 무결μ±μ μ μ§ν©λλ€.
-
λ°μ΄ν°λ² μ΄μ€ κ΄λ¦¬
- μ€ν€λ§ λ°μ΄ν°λ² μ΄μ€μ κ΄λ¦¬λ₯Ό μ©μ΄νκ² νλ©°, κ°λ°μλ DBA(Database Administrator)κ° λ°μ΄ν° ꡬ쑰λ₯Ό μ€κ³νκ³ μ μ§λ³΄μν μ μλλ‘ λμ΅λλ€.
5οΈβ£ μμ½.
- μ€ν€λ§(Schema)λ λ°μ΄ν°λ² μ΄μ€ ꡬ쑰μ μ€κ³λ₯Ό λνλ΄λ©°, λ°μ΄ν°κ° μ΄λ»κ² μ μ₯λκ³ μ‘°μ§λλμ§λ₯Ό μ μν©λλ€.
- ν
μ΄λΈ(Table), μ΄(Column), μΈλ±μ€(Index), λ·°(View), μ μ½ μ‘°κ±΄(Constraints) λ±μ΄ μ€ν€λ§μ ν¬ν¨λλ©°, μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±κ³Ό 무결μ±μ 보μ₯ν©λλ€.
- μ€ν€λ§(Schema)λ λ°μ΄ν°λ² μ΄μ€μ λ
Όλ¦¬μ ꡬ쑰λ₯Ό μ μνλ λ° λ§€μ° μ€μν μμμ΄λ©°, λ°μ΄ν°λ² μ΄μ€μ ν¨μ¨μ μΈ μ΄μκ³Ό κ΄λ¦¬μ νμμ μ
λλ€.