๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/[์‚ผ์ •KPMG]ESG ๋ฐ์ดํ„ฐ ํ™œ์šฉ ํ’€์Šคํ… ๊ฐœ๋ฐœ

20์ผ์ฐจ. ์ถ•๊ตฌ ์˜ˆ์ œ ERD๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋งคํ•‘ํ•ด๋ณด์ž

by GreenJin_S2 2025. 11. 5.

 


์ถ•๊ตฌ ์˜ˆ์ œ๋กœ ERD ๊ทธ๋ฆฌ๊ณ  ๋งคํ•‘ํ•˜๊ธฐ

 

 

์ถ•๊ตฌ์„ ์ˆ˜(์ž์‹)            ใ…ก๊ฐ€ ์†ํ•ด ์žˆ๋Š” ์ถ•๊ตฌํŒ€ (๋ถ€๋ชจ)

 

 

 

๋ฌด์—‡์ด ๋ฌธ์ œ์˜€๋‚˜

  • ID ํƒ€์ž… ๋ถˆ์ผ์น˜
  • Player ์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž: @Id Long id
     
    Player.javaLines 18-20
     
  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ œ๋„ค๋ฆญ์ด String์œผ๋กœ ๋˜์–ด ์žˆ์–ด ์‚ญ์ œ/์กฐํšŒ ์‹œ ํƒ€์ž… ์ถฉ๋Œ
     
    PlayerRepository.javaLines 8-10
     
  • ์„œ๋น„์Šค/์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ๋„ String playerId๋ฅผ ๋ฐ›์•„ ํƒ€์ž…์ด ๋งž์ง€ ์•Š์•˜์Œ
     
    PlayerServiceImpl.javaLines 35-38
     
     
    PlayerController.javaLines 29-32
     

์–ด๋–ป๊ฒŒ ๊ณ ์ณค๋‚˜

  • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ID ์ œ๋„ค๋ฆญ์„ Long์œผ๋กœ ํ†ต์ผ
     
    PlayerRepository.javaLines 8-10
     
  • ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค/๊ตฌํ˜„์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์„ Long์œผ๋กœ ๋ณ€๊ฒฝ
     
    PlayerService.javaLines 6-12
     
     
    PlayerServiceImpl.javaLines 35-41
     
     
    PlayerServiceImpl.javaLines 59-63
     
  • ์ปจํŠธ๋กค๋Ÿฌ์˜ PathVariable ํƒ€์ž…๋„ Long์œผ๋กœ ๋ณ€๊ฒฝ
     
    PlayerController.javaLines 29-32
     
     
    PlayerController.javaLines 39-42
     

์ถ”๊ฐ€ ์•ˆ๋‚ด

  • ์ง€๊ธˆ์€ @GeneratedValue(strategy = GenerationType.IDENTITY)๋กœ ์ž๋™ ์ฆ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ, ์ €์žฅ ์‹œ id๋ฅผ ๋”ฐ๋กœ ์„ธํŒ…ํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ ๊ธฐ์กด API์—์„œ String ํ˜•ํƒœ์˜ ์‹๋ณ„์ž๋ฅผ ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด, ๋ผ์šฐํŒ…/์š”์ฒญ๋„ Long์œผ๋กœ ๋งž์ถฐ์ฃผ์„ธ์š”. DB์˜ PK๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ์—”ํ‹ฐํ‹ฐ/๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ String์œผ๋กœ ์ผ๊ด€ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ” ํ•œ ์ค„ ์š”์•ฝ

@GeneratedValue(strategy = GenerationType.IDENTITY)
๐Ÿ‘‰ “PK ๊ฐ’์„ ๋‚ด๊ฐ€ ์ง์ ‘ ๋„ฃ์ง€ ์•Š์•„๋„, DB๊ฐ€ ์ž๋™์œผ๋กœ 1, 2, 3… ์ด๋ ‡๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์„ฑํ•ด์ค˜!”

 

 

 

์—”ํ‹ฐํ‹ฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ ์ถ”๊ฐ€

 

Player

 

    @ManyToOne
    @JoinColumn(name = "team_id")
    private Team team;

 

Schedule

    @ManyToOne
    @JoinColumn(name = "stadium_id")
    private Stadium stadium;

 

stadium

 

-๊ฐ€์žฅ ํฐ ๋ถ€๋ชจ๋ผ์„œ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ๋„ฃ์Œ

 

team

 

    @OneToOne
    @JoinColumn(name = "stadium_id")
    private Stadium stadium;

 

*ํŒ€์ด๋ž‘ ์Šคํƒ€๋””์›€์€ ํ•˜๋‚˜์”ฉ ์ด์–ด์ ธ์žˆ์œผ๋ฏ€๋กœ one to one

****

์•„๋‹˜ ๋‹ค manytoone์ด๋ผ๊ณ ํ•จ

 

 

 

 

ํ™”์‚ดํ‘œ ๋ฐ›๋Š”๊ฒŒ ๋ถ€๋ชจ! 

 

 

A  → B   →  C : ๋‹จ๋ฐฉํ–ฅ

A (๋ถ€๋ชจ) ← B(์ž์‹)  →  C(๋ถ€๋ชจ) : ์–‘๋ฐฉํ–ฅ

 

A(์ž์‹)   →   B(๋ถ€๋ชจ)

 

 

์ž์‹์€ ๋ถ€๋ชจ์—๊ฒŒ ์ง์„ ์ฃผ๋Š”๊ตฌ๋‚˜!