β λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°κ° ꡬμ±λλ λ°©μκ³Ό μλ‘ λ€λ₯Έ μν°ν° κ°μ κ΄κ³μ λν μ€λͺ
( λ°μ΄ν°λ² μ΄μ€μ κ° ν
μ΄λΈμ ꡬ쑰μ ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό ννν κ²μ΄λΌκ³ μκ°νλ©΄ λ¨ )
Ex. μκ°μ μ² μμ€ν λ§λ€ λ,
μΌλ¨ μ 체μ μΈ νλ©΄ ꡬμ±(μ΄λ€ λ°μ΄ν°κ° μ΄λ»κ² ννλλλ)μ μκ°νμ¬ Teachers, Students, Classes λ±μ ν μ΄λΈμ λ§λ€μ΄ λ°μ΄ν°λ₯Ό μ μνλ λ°©λ²μ΄ μ€ν€λ§
κ³ μ ν μ 보μ λ¨μ
λ°μ΄ν°λ² μ΄μ€μμ κ° ν μ΄λΈμ μν°ν°λΌκ³ ν μ μμ
ν΄λΉ ν μ΄λΈ λ΄μ μμ(μ΄)λ€
μν°ν°μ νΉμ±μ μ€λͺ
ν ν
μ΄λΈ(μν°ν°) μμλ ID νλκ° ν¬ν¨λ¨
β κ° νλμ κ³ μ ν IDλ€ = ν΄λΉ ν
μ΄λΈμ κΈ°λ³Έ ν€(Primary key) μν
ν ν
μ΄λΈ(μν°ν°) μμ λ€λ₯Έ ν
μ΄λΈμ Primary key(ID νλ)λ₯Ό κ°μ Έμ μ°Έμ‘°ν λ,
κ·Έ κ°μ νΉμ λ μ½λλ₯Ό κ³ μ νκ² μλ³νλ μΈλ ν€ (foreign key)λΌκ³ ν¨
Ex. Orders ν μ΄λΈκ³Ό Customers ν μ΄λΈμ΄ μμ λ,
Orders ν μ΄λΈμ Customers ν μ΄λΈμ primary key(customersID)κ° μ°Έμ‘°λμ΄μλ€κ³ νλ©΄,
- Orders.customersID β foreign key
- Customers.customersID β primary key
Ex. μμ μμμ κ°μ΄ Users ν μ΄λΈκ³Ό Phonebook ν μ΄λΈμ΄ μλ€κ³ κ°μ νλ©΄,
β
Users ν μ΄λΈμ ID, name, phone_id λΌλ μ΄μ κ°μ§κ³ μκ³ ,
( μ¬κΈ°μ phone_idλ Phonebook ν μ΄λΈμ IDμ μ°κ²°λ μΈλν€(foreign key) )
Phonebook ν μ΄λΈμ IDμ phone_numberλ₯Ό κ°μ§κ³ μλ€.
β
μ΄ μμμμ, ν phone_numberμ λ¨ νλͺ μ userλ§ κ°μ§ μ μκ³ ,
λ°λμ κ²½μ°λ κ°λ₯νλ€λ©΄,
β μ΄ λ ν μ΄λΈμ κ΄κ³λ 1:1 κ΄κ³λΌκ³ ν μ μμ
β
( User ν μ΄λΈμ phone_idλ₯Ό λμ ν΄ phone_numberλ₯Ό μ§μ μ μ₯νλ κ² λμ μ μμ )
Ex1. μμ μμμ κ°μ΄ Users ν μ΄λΈκ³Ό Phonebook ν μ΄λΈμ΄ μλ€κ³ κ°μ νλ©΄,
β
Users ν μ΄λΈμ ID, name μ΄λΌλ μ΄μ κ°μ§κ³ μκ³ ,
Phonebook ν μ΄λΈμ phone_id, phone_number, user_idλ₯Ό κ°μ§κ³ μλ€.
( μ¬κΈ°μ user_idλ User ν μ΄λΈμ user_idλ₯Ό μ°Έμ‘°ν μΈλν€(foreign key) )
β
μ΄ μμμμ, νλͺ μ userλ μ¬λ¬ phone_numberλ₯Ό κ°μ§ μ μμ§λ§,
μ¬λ¬λͺ μ userκ° νλμ phone_numberλ₯Ό κ°μ§ μλ μλ€.
β μ΄ λ ν μ΄λΈμ κ΄κ³λ 1:N κ΄κ³λΌκ³ ν μ μμ
Ex2. Teachers ν μ΄λΈκ³Ό Classes ν μ΄λΈμ΄ μμ λ,
μ¬λ¬ μ μλμ΄ ν κ³Όλͺ©μ κ°λ₯΄μΉλ€ 보λ€λ <ν μ μλμ΄ μ¬λ¬ κ³Όλͺ©μ κ°λ₯΄μΉλ€>λΌκ³ λ§ν μ μμ
(Teachersκ° 1, Classesκ° λ€)
β
μ΄ κ²½μ°, Teachers ν μ΄λΈμ κ° νλ(μ μλ λͺ©λ‘)μ Classes ν μ΄λΈμ κ° νλμ primary key(κ³Όλͺ©λ€ κ°λ¦¬ν€λ ID)λ₯Ό μ°Έμ‘°νλ€κ³ ν λ (1μ Nμ μ°Έμ‘°νλ€κ³ ν λ),
β
λ¬Έμ μ 1) ν μ΄λΈμ μμ±νλ©΄ ν΄λΉ μ΄μ ν¬κΈ°λ μ ν΄μ ΈμκΈ° λλ¬Έμ κ³Όλͺ© μκ° λ§μμ§λ€λ©΄ μμ IDλ₯Ό λ΄μ 곡κ°μ΄ λΆμ‘±ν μ μμ
β
λ¬Έμ μ 2) ν΄λΉ κ³Όλͺ©μ λ΄λΉνλ μ μλμ μμ보기 μν 볡μ‘λκ° λμμ§λ€λ λ¬Έμ μ μ΄ μμ
β
β 1:N κ΄κ³μΌ λ 1μ Nμ μ°Έμ‘°νμ§ μκ³ Nμ 1μ μ°Έμ‘°
Classes ν μ΄λΈ λ΄ κ° νλμ Teachersμ foreign key(μ μλ ID)λ₯Ό μ°Έμ‘°νλ€λ©΄ ν¨μ¨μ μΌλ‘ μ¬μ© κ°λ₯
Ex1. μ¬νμ μμλ‘ λ€μ΄, μμ μμμ κ°μ΄ Customer ν μ΄λΈκ³Ό Package ν μ΄λΈμ΄ μμ λ,
β
Customer ν μ΄λΈμ ID, name μ΄λΌλ μ΄μ κ°μ§κ³ μκ³ ,
μ¬ν Package ν μ΄λΈμ ID, name, package_idλ₯Ό κ°μ§κ³ μλ€.
β β
μ΄ μμμμ, νλͺ μ Customerλ μ¬λ¬ Package μνμ ꡬ맀ν μ μκ³ ,
λ°λλ‘, νλμ Package μνμ μ¬λ¬ Customerμ΄ κ΅¬λ§€ν μ μλ€
β μ΄ λ ν μ΄λΈμ κ΄κ³λ N:M κ΄κ³λΌκ³ ν μ μμ
β
μ¬κΈ°μ λ ν μ΄λΈμ κ΄κ³λ₯Ό λνλ΄λ €λ©΄ κ° ν μ΄λΈμλ€ κ° ν μ΄λΈμ primary keyλ€μ μ°Έμ‘°ν΄μΌνλλ°,
β μ΄ λ, μμ κ°μ΄ Join ν μ΄λΈ(λ ν μ΄λΈμ΄ μ°Έμ‘°λ μ ν μ΄λΈ)μ λ§λ€μ΄μ μ°Έμ‘°ν μ μμ
β
Join ν μ΄λΈμΈ customer_package ν μ΄λΈμ customer_idμ package_idλ₯Ό λ¬Άμ΄μ£Όλ μν μ΄κ³ ,
μ΄ ν μ΄λΈμ ν΅ν΄ μ΄λ€ κ³ κ°μ΄ λͺκ°μ μ¬νμνμ ꡬ맀νλμ§ / μ΄λ€ μ¬νμνμ΄ λͺλͺ μ κ³ κ°μ κ°μ§κ³ μλμ§ νμΈ κ°λ₯
( Join ν μ΄λΈλ§μ primary keyλ λ¬Όλ‘ μμ±ν΄μΌν¨ )
β
(μ΄λ 1:Nκ΄κ³λ₯Ό λλ² μ΄κ±°λ λ§μ°¬κ°μ§)
Ex. μμ μμμμ,
User ν μ΄λΈμ recommend_idλ User ν μ΄λΈμ user_idμ μ°κ²°λμ΄ μμ
β
ν λͺ μ μ μ (user_id)λ ν λͺ μ μΆμ²μΈ(recommend_id)λ₯Ό κ°μ§ μ μκ³ ,
μ¬λ¬ λͺ μ΄ ν λͺ μ μ μ λ₯Ό μΆμ²μΈμΌλ‘ λ±λ‘ν μ μμ
β μ΄ κ²½μ°, μκΈ° μ°Έμ‘° κ΄κ³
λ§μ½ μΈλν€λ₯Ό 리μ€νΈ νμμΌλ‘ κ΄λ¦¬νλ νλκ° μλ€λ©΄, μ΄λ€ λ¬Έμ κ° λ°μν μ μμκΉ?
( μ‘°μΈ ν
μ΄λΈ μ¬μ©νμ§ μμ λμ λ¬Έμ μ )
λ¬Έμ μ 1. ν μ΄λΈμ μμ±νλ©΄ ν΄λΉ μ΄μ ν¬κΈ°λ μ ν΄μ ΈμκΈ° λλ¬Έμ μ°Έμ‘°ν λ°μ΄ν°κ° λ§μ λ κ·Έλ₯Ό λ΄μ 곡κ°μ΄ λΆμ‘±ν΄ μ μ₯μ λͺ»ν μ μμ
λ¬Έμ μ 2. λ°μ΄ν°λ₯Ό μ‘°ννλλ° λ§μ λΉμ©μ΄ λ°μνκ² λ¨
λ¬Έμ μ 3. λ°μ΄ν°λ₯Ό μμ ν λ λ κ³³μ μμ μ΄ μ λμλμ§ νμΈμ΄ λΆνΈ (μ€μ μ λ° κ°λ₯)
μΈμ€νκ·Έλ¨μ κ° κΈ°λ₯λ€μ ν
μ΄λΈλ‘ νμ¬ μ€ν€λ§ λμμΈμ ν΄λ³΄μλ€!
κ° ν μ΄λΈ λ° νλλ₯Ό μ€λͺ νμλ©΄,
Users ν
μ΄λΈ
κ³ μ primary keyμΈ id / name / email / password νλλ₯Ό κ°μ§
Following ν
μ΄λΈ
κ³ μ primary keyμΈ id / following_count / follower_count / user_id νλλ₯Ό κ°μ§
- ν userκ° μ¬λ¬λͺ μ following κ°λ₯ (μ΄κ² μ μΌ ν·κ°λ¦Ό γ λ°λλ κ°λ₯νκ°..?)
β 1:N κ΄κ³ (user_idμ μ°Έμ‘°ν¨) (μΌλ¨ μ΄λ κ² μκ°ν΄μ μ΄λ° μμΌλ‘ ꡬνν¨)
(μ΄λ μ°¨μ°¨ μμλ³΄κ³ λ€μ μμ ν κ²!)
Post ν
μ΄λΈ
κ³ μ primary keyμΈ id / user_id / img / comments_id / created_At νλλ₯Ό κ°μ§
HashTag ν
μ΄λΈ
Post_HashTag ν
μ΄λΈ
( μ Post ν
μ΄λΈκ³Ό HashTag ν
μ΄λΈμ Join ν
μ΄λΈ )
κ³ μ primary keyμΈ id / hashTag_id / post_id νλλ₯Ό κ°μ§
- ν post μμ μ¬λ¬κ°μ hashTag κ°λ₯ (μλμ κ°μ΄ λ°λλ κ°λ₯)
β N:M κ΄κ³ (hashTag_idμ μ°Έμ‘°ν¨)
β - ν hashTag λλ₯΄λ©΄ μ¬λ¬κ°μ post λ³Ό μ μμ (μμ κ°μ΄ λ°λλ κ°λ₯)
β N:M κ΄κ³ (post_idμ μ°Έμ‘°ν¨)
β
( μ Post ν μ΄λΈκ³Ό HashTag ν μ΄λΈμ N:M κ΄κ³λ₯Ό Join ν μ΄λΈλ‘ λ°λ‘ λΉΌμ νν )
Comments ν
μ΄λΈ
κ³ μ primary keyμΈ id / comments / user_id / post_idνλλ₯Ό κ°μ§
- ν userκ° μ¬λ¬κ°μ comments μ¬λ¦¬κΈ° κ°λ₯ (λ°λλ λΆκ°λ₯)
β 1:N κ΄κ³ (user_idμ μ°Έμ‘°ν¨)
β - ν postμ μ¬λ¬κ°μ comments μμ (λ°λλ λΆκ°λ₯)
β 1:N κ΄κ³ (post_idμ μ°Έμ‘°ν¨)
Likes ν
μ΄λΈ
κ³ μ primary keyμΈ id / user_id / post_id νλλ₯Ό κ°μ§
- ν userκ° μ¬λ¬κ°μ likes κ°λ₯ (λ°λλ λΆκ°λ₯)
β 1:N κ΄κ³ (user_idμ μ°Έμ‘°ν¨)
β - ν postμ μ¬λ¬κ°μ likes κ°λ₯ (λ°λλ λΆκ°λ₯)
β 1:N κ΄κ³ (post_idμ μ°Έμ‘°ν¨)
μΌλ¨ μ΄λ° μμΌλ‘ λμμΈμ ν΄λ³΄κΈ΄ νλλ° λ§κ² ν 건μ§λ μ¬μ€ λͺ¨λ₯΄κ² λ€ ~,,
μλλ https://dbdiagram.io/home μμ μ μ€ν€λ§ λμμΈ ν λ μ μλ λ¬Έμ₯λ€μ΄λ€! β¬οΈ
( μ νν 쿼리문μ μλκ³ λ€μ΄μ΄κ·Έλ¨ λ¬Έλ²μ κ°κΉλ€ )
TABLE Users {
id int
name varchar
email varchar
password password
}
ref {
Users.id > Post.user_id
}
TABLE Following {
id int
following_id int
user_id int
}
ref {
Following.user_id > Users.id
}
TABLE Likes {
id int
user_id int
post_id int
}
ref {
Likes.user_id > Users.id
}
ref {
Likes.post_id > Post.id
}
TABLE HashTag {
id int
hashTag varchar
}
TABLE Post {
id int
user_id int
img varchar
comments_id int
created_At timestamp
}
TABLE Comments {
id int
comments varchar
post_id int
user_id int
}
ref {
Comments.user_id > Users.id
}
ref {
Comments.post_id > Post.comments_id
}
TABLE Post_HashTag {
id int
hashTag_id int
post_id int
}
ref {
Post_HashTag.hashTag_id > HashTag.id
}
ref {
Post_HashTag.post_id > Post.id
}
λμμΈ κ΅¬μνλ κ² λ무 ν·κ°λ Έλ€!!
μ²μμ κ°λ μμ‘νμ 'λ μ΄λ»κ² ν΄μΌνλ κ±°μ§..??' νλ€κ°
λ€λ₯Έ λΆλ€μ΄ νμ μ€ν€λ§ λμμΈμ λ³΄κ³ μ΄λ€ κ΅¬μ‘°λ‘ μ΄λ£¨μ΄μ Έμ λμμΈνλ κ±΄μ§ μ΄ν΄λΆν° νλ€
μ£Όμ΄μ§ 4μκ° μ€μ 2μκ° μ λλ₯Ό μ΄ν΄νλλ° μΌλλ° μ¬μ€ μ λλ‘ μ΄ν΄ν 건μ§λ λͺ¨λ₯΄κ² μ§λ§
λ§κ² μ§..~~..
κ·Έλλ λλ΄ κ΅¬νμ νκΈ΄ νλλ° ν
μ΄λΈ κ°μ κ΄κ³λ₯Ό νννλ λΆλΆμ΄ μ μΌ ν·κ°λ¦°λ€
λκ° μ΄λμ μ°Έμ‘°λμΌν μ§ λ¨Έλ¦¬λ‘λ§ μκ°νλ €λ λ§λ§ν΄μ μ’
μ΄μ μ°λ©΄μ ꡬνμ λλλ€