
@PostMapping("/board/create/{boardId}") // http://localhost:8080/board/create/:boardId?key1=value1&key2=value2
public String createBoard(
@PathVariable int boardId, // ๊ฒฝ๋ก ๋ณ์
@RequestParam String title, // ์ฟผ๋ฆฌ ์คํธ๋ง
@RequestParam String content // ์ฟผ๋ฆฌ ์คํธ๋ง
) {
Board board = new Board(boardId, title, content); // ์๋ฐ new
boardList.add(board);
return "์ ์์ ์ผ๋ก POSTING ๋์์ต๋๋ค!"; // String
}
@GetMapping("/board/get")
public List<Board> getBoard() {
log.info("์ ์์ ์ผ๋ก get ๋์์ต๋๋ค.");
return this.boardList;
}
// Json ํ์ (๋ฐ์ดํฐ ํ์)
@PutMapping("/board/update/{boardId}")
public String updateBoard(
@PathVariable(name = "boardId") int id,
@RequestParam String title, // ์์ ํ๊ณ ์ ํ๋ ์ ๋ชฉ
@RequestParam String content // ์์ ํ๊ณ ์ ํ๋ ๋ด์ฉ
) {
for (int i = 0; i < this.boardList.size(); i++) { // 0 , 1
if (boardList.get(i).getBoardId() == id) {
boardList.get(i).setTitle(title);
boardList.get(i).setContent(content);
log.info("์๋ก์ด ์ ๋ชฉ๊ณผ ๋ด์ฉ : " + title + " " + content);
return "์ ์์ ์ผ๋ก ์์ ์๋ฃ๋์์ต๋๋ค.";
}
}
log.error("์์ฒญํ ๊ฒ์๊ธ ์์ด๋๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.");
return "์์ฒญํ ๊ฒ์๊ธ ์์ด๋๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.";
}

๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ์ดํฐ์ ๋ถ๋ฅ, ์ ๋ ฌ, ํ์ ์๋๊ฐ ๋น ๋ฆ ๋๋ค.
์ค๋ซ๋์ ์ฌ์ฉ๋ ๋งํผ ์ ๋ขฐ์ฑ์ด ๋๊ณ , ์ด๋ค ์ํฉ์์๋ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํด ์ค๋๋ค.
๊ธฐ์กด์ ์์ฑ๋ ์คํค๋ง๋ฅผ ์์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๋ฅผ ๋ถ์ํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค.

๋ง์ ๋ฐ์ดํฐ๋๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋์ด ๊ณ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ฉด RDBMS๋ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ์ ๋ง๋๋ค.
์คํค๋ง ๋ฌธ์ : ๋น
๋ฐ์ดํฐ๋ฅผ RDB์ ์คํค๋ง์ ๋ง์ถฐ ๋ณ๊ฒฝํด์ ๋ฃ์ผ๋ ค๋ฉด ๋งค์ฐ ๊ธด ์๊ฐ์ down time์ด ๋ฐ์
์ค์ผ์ผ์
์ ํ๊ณ : RDBMS๋ ์ ์ด๋ถํฐ ์ค์ผ์ผ ์์์ ์ผ๋์ ๋๊ณ ์ค๊ณ๋์ง ์์๋ค. ๊ด๊ณ ๋ชจ๋ธ๊ณผ ํธ๋์ญ์
์ ์ฐ์ฐ, ์ผ๊ด์ฑ, ์์ฑ์ ์ ์งํ๋ฉด์ ๋ถ์ฐํ๊ฒฝ(์ค์ผ์ผ์์)์์ RDBMS๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ์ด๋ ต๋ค.
Entity Relationship Diagram
๊ฐ์ฒด-๊ด๊ณ ๋ชจ๋ธ. ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ๋ฅผ ์ค๋ช ํด์ฃผ๋ ๋ค์ด์ด๊ทธ๋จ์ด๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๋ DB์ ๊ตฌ์กฐ๋ฅผ ํ๋์ ํ์ ํ ์ ์๋ค.
์ฆ, API๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฝ์๋ด๊ธฐ ์ํ ๋ชจ๋ธ ๊ตฌ์กฐ๋๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.

Attribute๋ Entity๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ตฌ์ฑ ์์์ด๋ค.
๋ฐ์ดํฐ ํ์ ์ ๋ฐ๋์ ๊ฐ์ด ๋ช ์ํด์ค์ผ ํ๋ค.
Entity๊ฐ์ ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ค.
๋ Entity๊ฐ์ ์ ์ ๊ธ๊ณ , ๊ด๊ณ ๋ช ์นญ์ ๊ธฐ๋กํ๊ฒ ๋๋ค.


ex)
Student - Course

Customer - Order

Employee - Department

๊น๋ง๊ท ํ๊ธฐ๋ฒ์ด๋(Crow Notation)?
ํ๋ช
์ ํ์(Member)์ ์ฌ๋ฌ๊ฐ์ ๊ฒ์ํ(Posting)์ ๊ฐ์ง๊ฑฐ๋ ๊ฐ์ง์ง ์์ ์ ์๋ค.
ํ๋์ ๊ฒ์ํ(Board)๋ ์๊ฑฐ๋ ์ฌ๋ฌ๊ฐ์ ์ข์์(Like)๋ฅผ ๊ฐ์ง๋ฉฐ ์๊ฑฐ๋ ์ฌ๋ฌ๊ฐ์ ๋๊ธ(Comment) ๋ฅผ ๊ฐ์ง๋ค.
[1] ๊ฒ์ํ(POSTING)
[2] ํ์(USER)
[3] ์ข์์(LIKE)
[4] ๋๊ธ(Comment)