λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Computer Science/λ°μ΄ν„°λ² μ΄μŠ€

[λ°μ΄ν„°λ² μ΄μŠ€] κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ N:M 관계 λž€?

by Jay Din 2023. 11. 7.
728x90
λ°˜μ‘ν˜•

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDBMS) λž€?

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” 데이터λ₯Ό ν–‰κ³Ό μ—΄λ‘œ ν…Œμ΄λΈ” ν˜•νƒœλ₯Ό κ΅¬μ„±ν•©λ‹ˆλ‹€.

μ‹€μ œλ‘œ 각 데이터 ν•­λͺ©λ“€μ€ ν–‰(row)에 μ €μž₯되고, ν•­λͺ©μ˜ 속성은 μ—΄(column)이라고 ν‘œν˜„ν•©λ‹ˆλ‹€.

열은 ν•­λͺ©μ˜ 속성인 만큼 μž…λ ₯λ˜λŠ” λ°μ΄ν„°μ˜ μœ ν˜•μ΄ μ •ν•΄μ§‘λ‹ˆλ‹€.

* μ—΄(column)
ν•„λ“œ(field)라고도 λΆ€λ₯΄λ©°, ν•­λͺ©μ˜ 속성(λͺ…μΉ­)을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
ν•„λ“œ λ§ˆλ‹€ 각각 μ •μˆ˜, ν…μŠ€νŠΈ 같은 데이터 μœ ν˜•μ„ μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

* ν–‰(row)
λ ˆμ½”λ“œ(record)라고도 λΆ€λ₯΄λ©°, 각 데이터 ν•­λͺ©μ„ μ €μž₯ν•©λ‹ˆλ‹€.

* μŠ€ν‚€λ§ˆ(schema)
ν•„λ“œλŠ” 데이터 μœ ν˜•λΏλ§Œ μ•„λ‹ˆλΌ μ œμ•½μ‚¬ν•­λ„ 지정할 수 μžˆλŠ”λ° μ΄λŸ¬ν•œ μ œμ•½μ‚¬ν•­μ„ μŠ€ν‚€λ§ˆλΌκ³  λΆ€λ¦…λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, ν•„λ“œλŠ” 쀑볡 값을 ν•΄λ‹Ή 행에 μ €μž₯ν•  수 μ—†λ‹€κ±°λ‚˜, λ°˜λ“œμ‹œ 값을 κ°€μ Έμ•Ό ν•œλ‹€(not null)λŠ” 쑰건 등을 κ±Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ N:M κ΄€κ³„λž€?

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ–‘μͺ½ entity(table) λͺ¨λ‘κ°€ μ„œλ‘œμ—κ²Œ 1:N 관계λ₯Ό κ°–λŠ” ꡬ쑰λ₯Ό λ§ν•©λ‹ˆλ‹€.

 

1:N

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν•˜λ‚˜μ˜ entity(table)κ°€ 관계λ₯Ό 맺은 entity의 μ—¬λŸ¬ 객체λ₯Ό κ°€μ§ˆ 수 μžˆλŠ” ꡬ쑰λ₯Ό λ§ν•©λ‹ˆλ‹€.

두 tableκ°„μ˜ 관계λ₯Ό mapping cardinality둜 ν‘œν˜„ν•˜κ³ , μ’…λ₯˜λŠ” 크게 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • 1:1
  • 1:N
  • N:M

μ‹€λ¬΄μ—μ„œ κ°€μž₯ 자주 λ“±μž₯ν•˜λŠ” 1:N ꡬ쑰인 고객-μ£Όλ¬Έ 관계λ₯Ό μ˜ˆμ‹œλ‘œ λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

1:N ꡬ쑰

1:N κ΅¬μ‘°μ—μ„œλŠ” 보톡 primary key - foreign keyλ₯Ό μ‚¬μš©ν•˜μ—¬ 관계λ₯Ό λ§ΊμŠ΅λ‹ˆλ‹€.

Foreign key(μ™Έλž˜ν‚€)λŠ” λ‹€λ₯Έ table의 Primary key columnκ³Ό μ—°κ²°λ˜λŠ”(μ°Έμ‘°λ˜λŠ”) table의 column을 μ˜λ―Έν•©λ‹ˆλ‹€.

즉, 두 table을 μ—°κ²°ν•  λ•ŒλŠ” ν•œ table의 μ™Έλž˜ν‚€κ°€ λ‹€λ₯Έ ν•˜λ‚˜μ˜ table의 κΈ°λ³Έν‚€κ°€ λ©λ‹ˆλ‹€.

 

그림의 μ˜ˆμ‹œμ™€ 같은 μƒν™©μ—μ„œ 고객의 정보가 λ³€κ²½λœλ‹€κ³  해도, μ£Όλ¬Έλ‚΄μ—­ table은 μˆ˜μ •ν•  ν•„μš”κ°€ μ „ν˜€ μ—†κ²Œ λ˜μ–΄ 효율적인 λ°μ΄ν„°λ² μ΄μŠ€ 운영이 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

 

 

λ°˜μ‘ν˜•

 

N:M

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ–‘μͺ½ entity λͺ¨λ‘κ°€ μ„œλ‘œμ—κ²Œ 1:N 관계λ₯Ό κ°–λŠ” ꡬ쑰λ₯Ό λ§ν•©λ‹ˆλ‹€.

N:M κ΅¬μ‘°μ—μ„œλŠ” 보톡 μƒˆλ‘œμš΄ table(Mapping table)을 ν†΅ν•΄μ„œ 관계λ₯Ό λ§ΊμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μΉœμˆ™ν•œ N:M ꡬ쑰인 학생-μˆ˜μ—… 관계λ₯Ό μ˜ˆμ‹œλ‘œ λ³΄κ² μŠ΅λ‹ˆλ‹€.

N:M ꡬ쑰
Mapping table

 

 

 

 

 

 


μ°Έκ³ 

https://www.ibm.com/kr-ko/topics/relational-databases

https://www.notion.so/850170dad1e04d0aa211645cb54c36ac

 

 

728x90
λ°˜μ‘ν˜•