Home > Backend Development > ๐Ÿ“š[Backend Development] ERD(Entity-Relationship Diagram) ์„ค๊ณ„ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๐Ÿ“š[Backend Development] ERD(Entity-Relationship Diagram) ์„ค๊ณ„ ์™„๋ฒฝ ๊ฐ€์ด๋“œ
Backend Development Database ERD Entity Relationship Diagram

๐ŸŽฏ ERD(Entity-Relationship Diagram) ์„ค๊ณ„ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๐Ÿค” ์™œ ์ด ๊ฐ€์ด๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‚˜?

Java Spring ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ERD ์ž‘์„ฑ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ , ERD ์ž‘์„ฑ ์ˆœ์„œ์™€ ๋ฌด์—‡์„ ๊ธฐ์ค€ ์‚ผ์•„์„œ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•œ ์›์น™๊ณผ ํŒจํ„ด์„ ์•Œ์ง€ ๋ชปํ•ด ์ •๋ฆฌํ•œ ์‹ค์ „ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

๐ŸŽฏ ํ•™์Šต ๋ชฉํ‘œ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ธ ERD ์ž‘์„ฑ ๋ฐฉ๋ฒ•๊ณผ ์›์น™, ๊ทธ๋ฆฌ๊ณ  ์ฒด๊ณ„์ ์ธ ์ž‘์„ฑ ์ˆœ์„œ๋ฅผ ์™„๋ฒฝํžˆ ๋งˆ์Šคํ„ฐํ•˜์ž!


๐Ÿ“‹ ๋ชฉ์ฐจ

  1. ERD๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. ERD ์ž‘์„ฑ ๊ธฐ์ค€๊ณผ ์ถœ๋ฐœ์ 
  3. ERD ์ž‘์„ฑ 4๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค
  4. ERD ์ž‘์„ฑ ํ•ต์‹ฌ ์›์น™
  5. ์‹ค์ „ ERD ์ž‘์„ฑ ์˜ˆ์‹œ
  6. ERD ๊ฒ€ํ†  ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๐ŸŽจ ERD๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๐Ÿ’ก ์ •์˜: โ€œ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐํ™”ํ•œ ์„ค๊ณ„๋„โ€

ERD๋Š” ์‹œ์Šคํ…œ์—์„œ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜(Entity), ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ–๋Š” ์†์„ฑ(Attribute), ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์—ฐ๊ด€์„ฑ(Relationship) ์„ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋„์ž…๋‹ˆ๋‹ค.

๐ŸŽฏ ERD์˜ ํ•ต์‹ฌ ๋ชฉ์ 

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์‹œ๊ฐํ™”: ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ํ•œ๋ˆˆ์— ํŒŒ์•…
  • ์„ค๊ณ„ ๊ฒ€์ฆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ• ์ „ ๊ตฌ์กฐ์  ๋ฌธ์ œ์  ๋ฏธ๋ฆฌ ๋ฐœ๊ฒฌ
  • ํŒ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜: ๊ฐœ๋ฐœํŒ€๊ณผ ๊ธฐํšํŒ€ ๊ฐ„์˜ ๋ช…ํ™•ํ•œ ์†Œํ†ต ๋„๊ตฌ
  • ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ: ์‹ค์ œ ํ…Œ์ด๋ธ” ์„ค๊ณ„์™€ JPA Entity ์ž‘์„ฑ์˜ ๊ธฐ์ค€์ 

๐Ÿ” ERD ์ž‘์„ฑ ๊ธฐ์ค€๊ณผ ์ถœ๋ฐœ์ 

๐Ÿ“Š ํ•ต์‹ฌ ๊ธฐ์ค€: โ€œ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญโ€

ERD๋Š” ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ญ ๊ธฐ์ค€์  ์ฐพ๊ธฐ ์งˆ๋ฌธ๋“ค

  1. โ€œ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?โ€
  2. โ€œ์‚ฌ์šฉ์ž๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š”๊ฐ€?โ€
  3. โ€œ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์€ ๋ฌด์—‡์ธ๊ฐ€?โ€ (์˜ˆ: ํ•œ ๋ช…์˜ ํšŒ์›์€ ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ ๊ฐ€๋Šฅ)
  4. โ€œ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ์ œ์•ฝ์‚ฌํ•ญ์€ ๋ฌด์—‡์ธ๊ฐ€?โ€ (์˜ˆ: ์ฃผ๋ฌธ์—๋Š” ๋ฐ˜๋“œ์‹œ ํšŒ์›์ด ํ•„์š”)

๐ŸŽฏ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ์˜ˆ์‹œ: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ

ํ•ต์‹ฌ ๊ธฐ๋Šฅ:
- ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
- ์ƒํ’ˆ ์กฐํšŒ/๊ฒ€์ƒ‰
- ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ
- ์ฃผ๋ฌธ/๊ฒฐ์ œ
- ์ฃผ๋ฌธ๋‚ด์—ญ ์กฐํšŒ

โžœ ํ•„์š”ํ•œ ์ฃผ์š” ๋ฐ์ดํ„ฐ: ํšŒ์›, ์ƒํ’ˆ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์ฃผ๋ฌธ, ์ฃผ๋ฌธ์ƒํ’ˆ

๐Ÿ”„ ERD ์ž‘์„ฑ 4๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค

1๏ธโƒฃ ์—”ํ‹ฐํ‹ฐ(Entity) ๋„์ถœ - ํ•ต์‹ฌ ๋ช…์‚ฌ ์ฐพ๊ธฐ

๐ŸŽฏ ์ž‘์—… ๋‚ด์šฉ

์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ โ€˜๋ช…์‚ฌโ€™๋“ค์„ ์ฐพ์•„๋‚ด์–ด ์—”ํ‹ฐํ‹ฐ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ๋„์ถœ ๋ฐฉ๋ฒ•

  • ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ๋ช…์‚ฌ ์ถ”์ถœ
  • ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ธ์ง€ ํ™•์ธ
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ

๐Ÿ“ ์˜ˆ์‹œ: ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ

์ถ”์ถœ๋œ ๋ช…์‚ฌ: ํšŒ์›, ์ƒํ’ˆ, ์นดํ…Œ๊ณ ๋ฆฌ, ์ฃผ๋ฌธ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๋ฆฌ๋ทฐ, ์ฟ ํฐ

์—”ํ‹ฐํ‹ฐ ํ›„๋ณด:
โœ… Member (ํšŒ์›)
โœ… Product (์ƒํ’ˆ) 
โœ… Category (์นดํ…Œ๊ณ ๋ฆฌ)
โœ… Order (์ฃผ๋ฌธ)
โœ… Cart (์žฅ๋ฐ”๊ตฌ๋‹ˆ)
โœ… Review (๋ฆฌ๋ทฐ)
โœ… Coupon (์ฟ ํฐ)

2๏ธโƒฃ ์†์„ฑ(Attribute) ์ •์˜ - ๊ฐ ์—”ํ‹ฐํ‹ฐ์˜ ์ •๋ณด ๋‚˜์—ด

๐ŸŽฏ ์ž‘์—… ๋‚ด์šฉ

๊ฐ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ์†์„ฑ(์ปฌ๋Ÿผ)๋“ค์„ ์ •์˜ํ•˜๊ณ  ๊ธฐ๋ณธ ํ‚ค(PK)๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ์†์„ฑ ์ •์˜ ์›์น™

  • ๊ธฐ๋ณธ ํ‚ค(PK): ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„
  • ํ•„์ˆ˜ ์†์„ฑ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ƒ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์ •๋ณด
  • ์„ ํƒ ์†์„ฑ: ์žˆ์œผ๋ฉด ์ข‹์ง€๋งŒ ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ ์ •๋ณด

๐Ÿ“ ์˜ˆ์‹œ: ์ฃผ์š” ์—”ํ‹ฐํ‹ฐ๋ณ„ ์†์„ฑ

Member (ํšŒ์›)
โ”œโ”€โ”€ memberId (PK) - ํšŒ์› ๊ณ ์œ  ID
โ”œโ”€โ”€ email - ์ด๋ฉ”์ผ (์œ ๋‹ˆํฌ)
โ”œโ”€โ”€ password - ๋น„๋ฐ€๋ฒˆํ˜ธ
โ”œโ”€โ”€ memberName - ํšŒ์›๋ช…
โ”œโ”€โ”€ phoneNumber - ์ „ํ™”๋ฒˆํ˜ธ
โ”œโ”€โ”€ address - ์ฃผ์†Œ
โ”œโ”€โ”€ createdAt - ๊ฐ€์ž…์ผ์‹œ
โ””โ”€โ”€ status - ํšŒ์›์ƒํƒœ

Product (์ƒํ’ˆ)
โ”œโ”€โ”€ productId (PK) - ์ƒํ’ˆ ๊ณ ์œ  ID
โ”œโ”€โ”€ productName - ์ƒํ’ˆ๋ช…
โ”œโ”€โ”€ productPrice - ์ƒํ’ˆ๊ฐ€๊ฒฉ
โ”œโ”€โ”€ stockCount - ์žฌ๊ณ ์ˆ˜๋Ÿ‰
โ”œโ”€โ”€ description - ์ƒํ’ˆ์„ค๋ช…
โ”œโ”€โ”€ categoryId (FK) - ์นดํ…Œ๊ณ ๋ฆฌ ID
โ”œโ”€โ”€ createdAt - ๋“ฑ๋ก์ผ์‹œ
โ””โ”€โ”€ status - ์ƒํ’ˆ์ƒํƒœ

Order (์ฃผ๋ฌธ)
โ”œโ”€โ”€ orderId (PK) - ์ฃผ๋ฌธ ๊ณ ์œ  ID
โ”œโ”€โ”€ memberId (FK) - ํšŒ์› ID
โ”œโ”€โ”€ orderDate - ์ฃผ๋ฌธ์ผ์‹œ
โ”œโ”€โ”€ totalAmount - ์ด ์ฃผ๋ฌธ๊ธˆ์•ก
โ”œโ”€โ”€ deliveryAddress - ๋ฐฐ์†ก์ฃผ์†Œ
โ””โ”€โ”€ orderStatus - ์ฃผ๋ฌธ์ƒํƒœ

3๏ธโƒฃ ๊ด€๊ณ„(Relationship) ์„ค์ • - ์—”ํ‹ฐํ‹ฐ ๊ฐ„ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ ์ •์˜

๐ŸŽฏ ์ž‘์—… ๋‚ด์šฉ

์—”ํ‹ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„(1:1, 1:N, N:M)๋ฅผ ์ •์˜ํ•˜๊ณ  ์™ธ๋ž˜ ํ‚ค(FK)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ๊ด€๊ณ„ ์œ ํ˜•๋ณ„ ํŠน์ง•

๊ด€๊ณ„ ์œ ํ˜• ์„ค๋ช… ์˜ˆ์‹œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•
1:1 ์ผ๋Œ€์ผ ๊ด€๊ณ„ ํšŒ์› โ†” ํšŒ์›์ƒ์„ธ์ •๋ณด ์–ด๋А ์ชฝ์ด๋“  FK ๋ณด์œ 
1:N ์ผ๋Œ€๋‹ค ๊ด€๊ณ„ ํšŒ์› โ†” ์ฃผ๋ฌธ (ํ•œ ํšŒ์›์ด ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ) N์ชฝ์— FK ๋ณด์œ 
N:M ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„ ์ƒํ’ˆ โ†” ์ฃผ๋ฌธ (ํ•œ ์ฃผ๋ฌธ์— ์—ฌ๋Ÿฌ ์ƒํ’ˆ) ์ค‘๊ฐ„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

๐Ÿ“ ์˜ˆ์‹œ: ๊ด€๊ณ„ ์„ค์ •

์ฃผ์š” ๊ด€๊ณ„:
1. Member 1:N Order (ํ•œ ํšŒ์›์ด ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ ๊ฐ€๋Šฅ)
2. Category 1:N Product (ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์— ์—ฌ๋Ÿฌ ์ƒํ’ˆ)
3. Member 1:N Cart (ํ•œ ํšŒ์›์ด ์—ฌ๋Ÿฌ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์•„์ดํ…œ)
4. Order N:M Product (ํ•œ ์ฃผ๋ฌธ์— ์—ฌ๋Ÿฌ ์ƒํ’ˆ, ํ•œ ์ƒํ’ˆ์ด ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ)
   โžœ OrderProduct ์ค‘๊ฐ„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

4๏ธโƒฃ ๊ฒ€ํ†  ๋ฐ ์ •๊ทœํ™” - ๊ตฌ์กฐ ์ตœ์ ํ™”

๐ŸŽฏ ์ž‘์—… ๋‚ด์šฉ

๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ์ •๊ทœํ™” ๊ณผ์ •์„ ํ†ตํ•ด ERD๋ฅผ ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹ ์ •๊ทœํ™” ์ฒดํฌํฌ์ธํŠธ

  • ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ: ๊ฐ™์€ ์ •๋ณด๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ์— ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก
  • ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ: FK ๊ด€๊ณ„๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ: ์—…๋ฐ์ดํŠธ ์‹œ ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€

๐ŸŽจ ERD ์ž‘์„ฑ ํ•ต์‹ฌ ์›์น™

๐Ÿ’ก 1. ์ •๊ทœํ™” (Normalization)

โ€œ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์ œ์ž๋ฆฌ์—, ๋‹จ ํ•œ ๋ฒˆ๋งŒ ์ €์žฅํ•œ๋‹คโ€

โŒ ์ž˜๋ชป๋œ ์˜ˆ์‹œ:
Order ํ…Œ์ด๋ธ”์— memberName, memberEmail ์ง์ ‘ ์ €์žฅ

โœ… ์˜ฌ๋ฐ”๋ฅธ ์˜ˆ์‹œ:
Order ํ…Œ์ด๋ธ”์— memberId(FK)๋งŒ ์ €์žฅ, ํšŒ์› ์ •๋ณด๋Š” Member ํ…Œ์ด๋ธ” ์ฐธ์กฐ

๐Ÿท๏ธ 2. ๋ช…ํ™•ํ•œ ์ด๋ฆ„ ๊ทœ์น™

์ผ๊ด€๋œ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ ์ ์šฉ

์—”ํ‹ฐํ‹ฐ๋ช…: ๋‹จ์ˆ˜ ๋ช…์‚ฌ (Member, Product, Order)
์†์„ฑ๋ช…: camelCase (memberId, productName, createdAt)
๊ธฐ๋ณธํ‚ค: ์—”ํ‹ฐํ‹ฐ๋ช… + Id (memberId, productId, orderId)
์™ธ๋ž˜ํ‚ค: ์ฐธ์กฐ์—”ํ‹ฐํ‹ฐ๋ช… + Id (memberId, categoryId)

๐Ÿ”‘ 3. ๊ธฐ๋ณธ ํ‚ค(PK) ์ •์˜

๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋Š” ์œ ์ผํ•œ ์‹๋ณ„์ž ํ•„์ˆ˜

๊ถŒ์žฅ์‚ฌํ•ญ:
- ์˜๋ฏธ ์—†๋Š” ๋Œ€๋ฆฌํ‚ค ์‚ฌ์šฉ (UUID, Auto Increment)
- ๋ณตํ•ฉํ‚ค๋ณด๋‹ค๋Š” ๋‹จ์ผ ์ปฌ๋Ÿผ ๊ธฐ๋ณธํ‚ค
- ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์œผ๋กœ ์„ค์ •

๐Ÿ”— 4. ๊ด€๊ณ„์˜ ๋ช…ํ™•์„ฑ

๋‹ค๋Œ€๋‹ค(N:M) ๊ด€๊ณ„๋Š” ์ค‘๊ฐ„ ํ…Œ์ด๋ธ”๋กœ ํ•ด๊ฒฐ

N:M ๊ด€๊ณ„ ํ•ด๊ฒฐ ํŒจํ„ด:
Order โ†โ†’ Product (๋‹ค๋Œ€๋‹ค)
    โ†“
Order 1:N OrderProduct N:1 Product (์ผ๋Œ€๋‹ค ร— 2)

๐Ÿš€ ์‹ค์ „ ERD ์ž‘์„ฑ ์˜ˆ์‹œ

๐Ÿ“ ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ ERD ๊ตฌ์กฐ

erDiagram
    Member ||--o{ Order : "์ฃผ๋ฌธํ•œ๋‹ค"
    Member ||--o{ Cart : "์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๋Š”๋‹ค"
    Member ||--o{ Review : "๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค"
    
    Category ||--o{ Product : "ํฌํ•จํ•œ๋‹ค"
    Product ||--o{ Cart : "๋‹ด๊ฒจ์ง„๋‹ค"
    Product ||--o{ Review : "๋ฆฌ๋ทฐ๊ฐ€ ๋‹ฌ๋ฆฐ๋‹ค"
    Product ||--o{ OrderProduct : "์ฃผ๋ฌธ๋œ๋‹ค"
    
    Order ||--o{ OrderProduct : "์ƒํ’ˆ์„ ํฌํ•จํ•œ๋‹ค"
    
    Member {
        string memberId PK
        string email UK
        string password
        string memberName
        string phoneNumber
        string address
        datetime createdAt
        string status
    }
    
    Product {
        string productId PK
        string categoryId FK
        string productName
        int productPrice
        int stockCount
        string description
        datetime createdAt
        string status
    }
    
    Category {
        string categoryId PK
        string categoryName
        string description
    }
    
    Order {
        string orderId PK
        string memberId FK
        datetime orderDate
        int totalAmount
        string deliveryAddress
        string orderStatus
    }
    
    OrderProduct {
        string orderProductId PK
        string orderId FK
        string productId FK
        int quantity
        int price
    }
    
    Cart {
        string cartId PK
        string memberId FK
        string productId FK
        int quantity
        datetime addedAt
    }
    
    Review {
        string reviewId PK
        string memberId FK
        string productId FK
        int rating
        string content
        datetime createdAt
    }

โœ… ERD ๊ฒ€ํ†  ์ฒดํฌ๋ฆฌ์ŠคํŠธ

๐Ÿ“ ์—”ํ‹ฐํ‹ฐ ๊ฒ€ํ† 

  • ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ ๊ฐ€๋Šฅํ•œ๊ฐ€?
  • ์—”ํ‹ฐํ‹ฐ๋ช…์ด ๋‹จ์ˆ˜ ๋ช…์‚ฌ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘๋ช…๋˜์—ˆ๋Š”๊ฐ€?
  • ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ์ถฉ์กฑํ•˜๋Š”๊ฐ€?

๐Ÿ”‘ ์†์„ฑ ๊ฒ€ํ† 

  • ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ์— ๊ธฐ๋ณธ ํ‚ค(PK) ๊ฐ€ ์ •์˜๋˜์—ˆ๋Š”๊ฐ€?
  • ์†์„ฑ๋ช…์ด ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๋Š”๊ฐ€?
  • ํ•„์ˆ˜ ์†์„ฑ๊ณผ ์„ ํƒ ์†์„ฑ์ด ์ ์ ˆํžˆ ๊ตฌ๋ถ„๋˜์—ˆ๋Š”๊ฐ€?
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ ์ ˆํžˆ ์„ ํƒ๋˜์—ˆ๋Š”๊ฐ€?

๐Ÿ”— ๊ด€๊ณ„ ๊ฒ€ํ† 

  • ๋ชจ๋“  ๊ด€๊ณ„์˜ ์นด๋””๋„๋ฆฌํ‹ฐ(1:1, 1:N, N:M)๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ๊ฐ€?
  • ์™ธ๋ž˜ ํ‚ค(FK) ๊ฐ€ ์ ์ ˆํ•œ ์œ„์น˜์— ๋ฐฐ์น˜๋˜์—ˆ๋Š”๊ฐ€?
  • N:M ๊ด€๊ณ„๊ฐ€ ์ค‘๊ฐ„ ํ…Œ์ด๋ธ”๋กœ ์ •๊ทœํ™”๋˜์—ˆ๋Š”๊ฐ€?
  • ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์ด ๊ณ ๋ ค๋˜์—ˆ๋Š”๊ฐ€?

๐ŸŽฏ ์ •๊ทœํ™” ๊ฒ€ํ† 

  • ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ๋Š”๊ฐ€?
  • ๊ฐฑ์‹  ์ด์ƒ, ์‚ฝ์ž… ์ด์ƒ, ์‚ญ์ œ ์ด์ƒ์ด ์—†๋Š”๊ฐ€?
  • ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ERD์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐ˜์˜๋˜์—ˆ๋Š”๊ฐ€?

๐Ÿท๏ธ ๋„ค์ด๋ฐ ๊ฒ€ํ† 

  • ์ „์ฒด์ ์œผ๋กœ ์ผ๊ด€๋œ ๋„ค์ด๋ฐ ๊ทœ์น™์ด ์ ์šฉ๋˜์—ˆ๋Š”๊ฐ€?
  • ์•ฝ์–ด ์‚ฌ์šฉ์ด ์ตœ์†Œํ™”๋˜์—ˆ๋Š”๊ฐ€?
  • ์˜ˆ์•ฝ์–ด์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”๊ฐ€?

๐Ÿ’ก ํ•ต์‹ฌ ์ •๋ฆฌ

๐ŸŽฏ ERD ์„ค๊ณ„์˜ ํ•ต์‹ฌ

  1. ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ์ถœ๋ฐœ: ์„œ๋น„์Šค๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์„ ๋ช…ํ™•ํžˆ ํŒŒ์•…
  2. ์ฒด๊ณ„์ ์ธ 4๋‹จ๊ณ„ ํ”„๋กœ์„ธ์Šค: ์—”ํ‹ฐํ‹ฐ โ†’ ์†์„ฑ โ†’ ๊ด€๊ณ„ โ†’ ์ •๊ทœํ™”
  3. ์ •๊ทœํ™”๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ: ์ค‘๋ณต ์ œ๊ฑฐ์™€ ์ผ๊ด€์„ฑ ๋ณด์žฅ
  4. ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ๋„ค์ด๋ฐ: ํŒ€ ์ „์ฒด๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ช… ๊ทœ์น™

์ด์ œ Java Spring ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ฒด๊ณ„์ ์ด๊ณ  ํšจ์œจ์ ์ธ ERD๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”! ๐Ÿš€


์ด ๊ฐ€์ด๋“œ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด, ๋‹ค์Œ์—๋Š” JPA Entity ๋งคํ•‘๊ณผ ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ •๋ฒ•๋„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ‘‹