Bibi's DevLog πŸ€“πŸŽ

[DB] 1:1, 1:N, N:M 관계 λ³Έλ¬Έ

πŸ–₯ BE λ°±μ—”λ“œ/Database

[DB] 1:1, 1:N, N:M 관계

λΉ„λΉ„ bibi 2021. 4. 30. 19:47

[DB] 1:1, 1:N, N:M 관계

이 글을 보고 μš”μ•½ 정리함. 원본이 훨씬 λ‚«μŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 1:N관계λ₯Ό 잘 μ΄ν•΄ν•˜μ§€ λͺ»ν•˜κ³  μžˆλŠ” 것 κ°™μ•„μ„œ μ’€ μ°Ύμ•„λ³΄μ•˜λ‹€γ… 

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ '관계'

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 엔티티끼리 관계λ₯Ό 맺을 수 있기 λ•Œλ¬Έμ— κ΄€κ³„ν˜•μ΄λΌλŠ” 말이 뢙은 것이닀.

  • μ—”ν‹°ν‹° Entity : DB에 ν‘œν˜„ν•˜λ €κ³  ν•˜λŠ” μœ ν˜•/λ¬΄ν˜•μ˜ κ°μ²΄λ‘œμ„œ μ„œλ‘œ κ΅¬λ³„λ˜λŠ” 것.
  • 관계 Relationship : 두 μ—”ν‹°ν‹°κ°€ μ„œλ‘œ 관련이 μžˆμ„ λ•Œ.
    • 1:1, 1:N, N:M 관계λ₯Ό 맺을 수 μžˆλ‹€.

1:1 관계

μ—”ν‹°ν‹° Aκ°€ μƒλŒ€ μ—”ν‹°ν‹° B와 단 ν•˜λ‚˜μ˜ κ΄€κ³„λ§Œ κ°–λŠ” 것.

(μ—”ν‹°ν‹°B도 μ—”ν‹°ν‹°A와 단 ν•˜λ‚˜μ˜ κ΄€κ³„λ§Œ κ°–λŠ”λ‹€)

ex) μš°λ¦¬λ‚˜λΌμ—μ„œμ˜ 결혼 μ œλ„(μΌλΆ€μΌμ²˜μ œ)

1:N 관계

μ—”ν‹°ν‹° Aκ°€ μ—¬λŸ¬ 개의 μƒλŒ€ μ—”ν‹°ν‹°Bμ™€μ˜ 관계λ₯Ό κ°–λŠ” 것.

  • μ—”ν‹°ν‹°AλŠ” μ—¬λŸ¬ 개의 μ—”ν‹°ν‹°Bλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
    • μ—”ν‹°ν‹°AλŠ” μ—”ν‹°ν‹°Bλ₯Ό μ†Œμœ ν•œλ‹€ (Entity A has Entity B)
  • λ°˜λŒ€λ‘œ μ—”ν‹°ν‹° BλŠ” ν•˜λ‚˜μ˜ μ—”ν‹°ν‹°Aλ§Œμ„ κ°€μ§ˆ 수 μžˆλ‹€.

ex) λΆ€λͺ¨μ™€ μžμ‹ 관계 - λΆ€λͺ¨λŠ” μ—¬λŸ¬ μžμ‹μ„ κ°€μ§ˆ 수 μžˆμ§€λ§Œ, μžμ‹μ€ ν•˜λ‚˜μ˜ λΆ€λͺ¨λ§Œμ„ κ°–λŠ”λ‹€.

  • 계측 ꡬ쑰둜 이해할 수 μžˆλ‹€ (μ—”ν‹°ν‹°A = λΆ€λͺ¨ ν…Œμ΄λΈ”, μ—”ν‹°ν‹°B = μžμ‹ ν…Œμ΄λΈ”)
  • 1:N κ΄€κ³„λŠ” N:Mκ΄€κ³„μ²˜λŸΌ μƒˆλ‘œμš΄ ν…Œμ΄λΈ”μ„ λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€
  • λΆ€λͺ¨ ν…Œμ΄λΈ”μ€ μžμ‹ ν…Œμ΄λΈ”μ˜ 정보λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•ŠμœΌλ‚˜, μžμ‹ ν…Œμ΄λΈ”μ€ μžμ‹ μ΄ μ†ν•œ λΆ€λͺ¨ ν…Œμ΄λΈ” 정보λ₯Ό ν•„μš”λ‘œ ν•œλ‹€.
    • λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ PKλ₯Ό μžμ‹ ν…Œμ΄λΈ”μ˜ FK둜 λ„£μŒμœΌλ‘œμ¨ 1:N관계λ₯Ό ν‘œν˜„ν•œλ‹€.

PK : primary key. (=κΈ°λ³Έν‚€) μ—”ν‹°ν‹°λ₯Ό μ‹λ³„ν•˜λŠ” λŒ€ν‘œν‚€. uniqueν•˜λ©° null일 수 μ—†λ‹€

FK : foreign key. λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ PKλ₯Ό μ°Έμ‘°ν•˜λŠ” ν‚€. μ°Έμ‘°ν•˜λŠ” PK와 λ™μΌν•œ domain을 κ°–λŠ”λ‹€.

N:M 관계

μ—”ν‹°ν‹°A와 μ—”ν‹°ν‹°Bκ°€ μ„œλ‘œμ„œλ‘œ 1:N관계인 관계.

  • μ—”ν‹°ν‹°AλŠ” μ—¬λŸ¬ 개의 μ—”ν‹°ν‹°Bλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
  • μ—”ν‹°ν‹°B도 μ—¬λŸ¬ 개의 μ—”ν‹°ν‹°Aλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

ex) 학생과 학원 관계 - 학생도 μ—¬λŸ¬ 개의 학원을 닀닐 수 있고, 학원도 μ—¬λŸ¬ λͺ…μ˜ 학생을 받을 수 μžˆλ‹€.

  • μ–‘μͺ½ μ—”ν‹°ν‹°κ°€ μ„œλ‘œλ₯Ό 1:Nκ΄€κ³„λ‘œ 가지기 λ•Œλ¬Έμ—, μ„œλ‘œμ˜ PKλ₯Ό μžμ‹ μ˜ FK 컬럼으둜 κ°–λŠ”λ‹€.
  • 일반적으둜 N:Mκ΄€κ³„λŠ” 두 ν…Œμ΄λΈ”μ˜ PKλ₯Ό 컬럼으둜 κ°–λŠ” 또 λ‹€λ₯Έ ν…Œμ΄λΈ”μ„ μƒμ„±ν•΄μ„œ κ΄€λ¦¬ν•œλ‹€.