<멋쟁이사자처럼> 5번째 벨로그

장수빈·2026년 5월 10일

저번주 과제에 이어서..

저번주 과제에서 다루지 못했던 캐시와 토큰에 대한 정리를 추가적으로 한 후에 5번째 벨로그를 본격적으로 작성해보겠습니다

1. 캐시

: 자주 사용되는 데이터를 더 빠르게 다시 사용하기 위해 임시로 저장해두는 저장 공간 or 저장 방식
=> 매번 같은 데이터를 새로 불러오지 않고 한번 가져온 것을 잠시 저장해두었다가 필요할때 바로 꺼내 쓸 수 있음

2. 토큰

: 사용자의 인증 정보를 담고 있는 문자열 형태의 값
로그인 이후 서버가 사용자에게 토큰을 발급하면 사용자는 이휴 요청을 보낼 때 이 토큰을 함께 보냄. 서버는 토큰을 확인하여 사용자가 로그인한 사용자인지 판단

1. 관계형 데이터베이스

1. 관계형 데이터베이스란?

: 데이터를 행(가로)과 열(세로)로 이루어진 테이블 형태로 저장하고 각 테이블 사이의 관계를 이용해 데이터를 관리하는 데이터베이스

서로 관련있는 데이터를 하나의 표에 저장하지 않고 여러개의 표로 나누어 저장한 뒤 기본 키와 외래 키를 이용하여 각 표를 연결한다.

  • 기본 키: 각 행을 다른 행과 구별할 수 있게 해주는 고유한 값
  • 외래 키: 다른 테이블의 기본 키를 가져와서 테이블끼리 연결할 때 사용하는 값

2. 관계형 데이터베이스를 써야하는 이유

1. 데이터 중복을 줄일 수 있다.

여러 정보를 한 표에 저장하면 정보가 중복될 수 있음
-> 관계형 데이터베이스 사용시 데이터를 종류별로 나누어 저장하므로 이러한 중복을 줄일 수 있음

2. 수정이 편리하다.

정보를 수정해야 할 때 정보가 여러 테이블에 반복되어있으면 수정이 어려움
-> 하나의 테이블에서 가져다 쓰는 관계형 데이터베이스의 구조상 하나의 테이블에서만 정보를 수정하면 되므로 편라함

3. 필요한 정보를 조합하여 쓸 수 있다.

여러 테이블에 나누어 저장된 데이터를 공통된 속성을 기준으로 조인(Join) 하여 필요한 정보를 하나의 결과로 조회할 수 있음

3. 관계형 데이터베이스를 이해하기 위한 준비

데이터베이스
└─ DBMS: 데이터베이스를 관리하는 소프트웨어
├─ RDBMS: 관계형 데이터베이스를 관리하는 DBMS
└─ NoSQL DBMS: 관계형이 아닌 방식의 데이터베이스를 관리하는 DBMS
SQL: 주로 RDBMS와 대화할 때 사용하는 언어
ERD: 데이터베이스 구조를 설계할 때 그리는 다이어그램

1. DBMS(Database Management System)

: 사용자가 데이터베이스를 생성, 조회, 수정, 삭제하고 관리할 수 있게 해주는 소프트웨어

-> 데이터베이스는 데이터를 저장하는 공간, DBMS는 그 데이터를 관리하게 해주는 프로그램!

EX) MySQL, MariaDB, Oracle Database, PostgreSQL, MongoDB
(MySQL, MariaDB, Oracle, PostgreSQL은 RDBMS / MongoDB는 보통 NoSQL DBMS로 분류)

무엇을 하나요?

  • 데이터를 저장 및 조회 기능
  • 여러 사용자의 동시접근을 가능하게 함
  • 데이터의 무결성 유지, 여러사용자가 일관된 데이터를 볼 수 있도록 관리(= 데이터가 깨지지 않도록 한다?)
  • 사용자별 여러 권한을 부여하고 보안을 관리
    (예를 들어 관리자에게는 수정 및 삭제 등의 권한, 일반 사용자에게는 정보 조회 등의 권한을 부여한다)
  • 에러 발생시 복구를 도움
    (작업 내용을 기록해 두었다가 시스템이 비정상적으로 종료되더라도 다시 실행될 때 완료된 작업은 반영하고 완료되지 않은 작업은 되돌림으로써 데이터베이스를 정상적인 상태로 복구할 수 있게한다)

2. RDBMS( Relational Database Management System)

: 관계형 데이터베이스를 관리하는 DBMS

DBMS는 데이터베이스를 관리하는 프로그램 전체 / RDMS는 그 중에서 관계형 데이터 모델을 따르는 데이터베이스를 관리하는 프로그램

EX) MySQL, MariaDB, PostgreSQL, Oracle Database, H2

3. SQL(Structured Query Language)

: 관계형 데이터베이스의 데이터를 정의, 조작, 조회하기 위해 사용하는 언어
-> RDBMS에게 명렁을 내릴 때 사용하는 언어

4. ERD(Entity-Relationship Diagram)

: aka. 개체-관계 다이어그램, 데이터베이스를 설계할 때 어떤 데이터가 필요하고 그것들이 서로 어떤 관계를 가지는지 그림으로 표현한 것, 이를 수행하는 과정을 데이터 모델링이라고 함

왜 해야할까?
관계형 데이터베이스는 여러 테이블 사이의 관계가 매우 중요하기 때문에 테이블을 만들기 전에 어떤 테이블이 필요한지, 기본 키는 어떤 것인지, 외래키는 어디에 둘지 등을 정하는 과정을 거쳐야한다.
이것을 시각적으로 표현하는 대표적인 도구가 ERD라고 할 수 있다.

5. NoSQL

: NoSQL은 일반적으로 전통적인 관계형 모델만을 따르지 않는 데이터베이스 방식을 뜻함. (Not only SQL) => 관계형 데이터베이스 외에도 다른 방식으로 데이터를 저장하고 처리하는 데이터베이스를 포괄적으로 지칭

저장 방식이 꼭 테이블일 필요가 없고 문서형, 그래프형 등으로 저장할 수 있다.
따라서 구조가 더욱 유연하다.

2. 내가 구현한 게시판의 ERD

저번 벨로그에서 내가 구현한 게시판의 ERD를 작성해보겠다.

1. ERD 사용법 익히기

https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EB%A7%81-1N-%EA%B4%80%EA%B3%84-%F0%9F%93%88-ERD-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8
나는 우선 이 글을 보고 관계형 데이터에 대한 기본적인 부분을 익혔다.

1. 개념적 데이터 모델링

우선 개념적 데이터 모델링을 해야한다. 이는 내가 하고자 하는 일의 데이터 간의 관계를 구상하는 단계로 각 개체들과 그들 간의 관계를 발견하고 표현하기 후에 ERD 다이어그램을 생성한다.

피터 첸 표기법
: 도형이 의미하는 바를 알고 화살표를 통해 관계를 표현하는 방법

2. 논리적 데이터 모델링

개념적 모델이 완성되고 구체화된 업무 중심의 데이터 모델을 만드는 것(표)
-> 이 단계에서 업무에 대한 키 속성, 관계 등을 표시하며 정규화 활동을 수행한다. 정규화는 데이터 모델의 일관성을 확보하고 중복을 제거하여 신뢰성있는 데이터 구조를 얻기 위함이다.

3. 물리적 데이터 모델링

최종적으로 데이터를 관리할 데이터 베이스를 선택하고 선택한 데이터 베이스에 실제 테이블을 만드는 작업(SQL 코딩)

4. ERD 그리기 - Entity

Entity는 정의 가능한 사물 또는 개념을 의미한다.
-> 데이터 베이스의 테이블이 엔티티로 표현됌

Entity 속성: Entity에는 개체가 가지고 있는 속성을 포함한다. 데이터베이스 테이블의 각 컬럼들이 Entity속성이 될 수 있다.

Entity 도메인: 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것, 사용자의 기호에 따라 속성 타입만 둘수도, 가독성을 위해 생략할 수도 있음

Ex) 학생 Entity

Entity 분류: 저장하는 데이터 정보 주제에 따라 Entity의 종류가 달라짐, 각 데이터 주제에 맞게 모델링하기 위해 구분

5. EDR 키와 제약조건 표기법

기본 키
중복이 없고 빈값이 없는 유일한 값에 지정

  • 아래와 같이 다이아몬드 표기 or 열쇠 표기 사용
  • 유일한 속성이므로 다른 속성과의 명확한 구분을 위해 구분선을 두기도 함
  • 속성에 들어갈 값에 null을 허용하지 않는 다면 N을 적고 허용한다면 N을 적지 않는다.

외래 키
키의 일종이기 때문에 보통 열쇠 아이콘 표기
외래 식별자를 표시할 때에는 선을 이어주는데 개체와 관계를 따져 표시함

6. EDR Entity 관계 표기법


각 Entity 유형을 만든 후 Entity끼리 관계가 있다면 선을 이어 관계를 맺어야 함.

  • 실선: 강한 관계(식별자 관계), 부모엔티티 종속
  • 점선: 약한 관계(비식별자 관계), 종속 약함

What is 식별자 관계?
식별자 관계: 부모자식 관계에서 부모의 기본 키를 외래 키로 차ㅁ조해서 자신의 기본 키로 설정

비식별자 관계: 부모자식 관계에서 자식이 부모의 기본 키를 외래 키로 참조하여 일반 속성으로 사용

7. EDR관계의 Cardinality(관계의 개수)

1대 1대응 / 1대 다대응 / 다대 1대응 / 다대 다대응

위처럼 그냥 선을 긋게 된다면 가독성이 매우 안좋아질 수 있음
-> 선의 끝모양을 다르게 표시

1) 1대 1대응

2) 1대 다대응

3) 다대 1대응

4) 다대 다대응

8-1. EDR 관계의 참여도

: 관계도 각 측의 끝자락에 기호 표시, "ㅣ" 표시가 있는 곳은 반드시 있어야함
o 표시가 있는 곳은 없어도 됌

8-2. 관계의 필수기호

어느한쪽이 존재하면 다른 쪽도 반드시 존재해야 하는 관계

Ex) 학번 21003 학생의 취미가 낚시 라는 정보가 있다면, 21003학번의 학생의 정보가 학생 엔티티에 반드시 존재해야 한다.

2. ERDcloud를 이용하여 게시판 ERD 작성하기

1. ERD사용법 익히기

나는 아래의 글을 참고하여 기본적인 EDRcloud 사용법을 익혔다.
https://cinnamonlover.tistory.com/entry/ERD-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%AF%B8%EC%99%84%EC%84%B1

기본적인 Entity 등록법도 헤매어서 글 참고를 많이 했다

2. ERD 그리기

문제점 1.

어떻게 ERD를 작성해야 할지 몰라서 GPT에게 물어보니 내가 작성한 코드에는 ERD가 없다는 답변을 들을 수 있었다.
그래서 일단 관계가 없는 내 게시판 코드의 ERD도 작성하고 GPT가 알려준 일반적인 게시판 ERD 또한 작성해 보았다.

3. 내가 구현한 게시판 EDR(관계x)

4. 일반적인 게시판 EDR(관계o)

일반적으로 회원 1명은 게시글을 여러개 작성할 수 있으며 게시글 1개는 회원 1명이 작성하므로 1(회원)대 다(게시글) 관계이다.

부모 테이블의 기본키가 자식 테이블의 외래키로만 들어가고 자식 테이블의 기본키에는 포함되지 않는 관계이므로 Non-identifying Relationship 설정 = 비식별 관계

3. Postman을 이용한 API 테스트

1. Postman이란?

: API를 설계, 요청, 테스트, 디버깅, 문서화, 공유하기 위한 API개발 플랫폼
-> 개발자가 직접 코드를 작성하거나 브라우저 화면을 만들지 않아도 HTTP요청을 보내고 서버의 응답을 확인할 수 있게 해주는 API 클라이언트 도구

2. API란?

: 프로그램과 프로그램이 서로 약속된 방식으로 데이터를 주고받는 통로

Ex) 쇼핑물 사이트에서 사용자가 상품 목록 페이지에 들어가면 브라우저가 서버에게 상품 목록을 요청한다.
이때 브라우저와 서버가 데이터를 주고받는 약속된 주소가 API이다.

3. PostMan은 무엇을 대신해주는가?

서버 API를 테스트하기 위해 프론트엔드 화면이 필요할 수 있다.
예를 들어 스프링 부트로 상품 등록 기능을 만들었을 때,
이 API가 잘 작동하는지 확인하려면 HTML 입력창을 만들고 버튼을 만들고 서버로 데이터가 전송되도록 해야한다.

BUT. Postman을 쓰면 HTML화면 없이도 바로 서버에 요청을 보낼 수 있다.
-> API가 제대로 동작하는지 빠르게 확인할 수 있다.

Postman이 유용한 상황

  1. 프론트엔드 화면이 아직 구현되지 않았을 때
  2. 에러가 프론트 문제인지, 백엔드 문제인지 구분할 때
  3. 여러 기능을 각각 따로 테스트해 볼 때

4. 내가 구현한 게시판 Postman으로 테스트 해보기

문제점 2.

이걸 문제점이라고 해도 되는지 모르겠지만ㅜㅜ
Postman 실행이 안된다 아무래도 내 노트북의 문제인 거 같은데 과제 제출시간은 다가오고..?? 실행은 안돼고.. 어쩔 수 없이 웹사이트로 들어가서 과제를 수행하려고 했는데ㅜㅜ localhost는 나만 들어갈 수 있대서.. 웹에서 실행이 되지 않았다ㅜㅜ
내가 만든 게시판의 API는 테스트하지 못했고 Postman의 사용법을 익히기로 하였다(다음주 벨로그에 API테스트하는 과정까지 올리겠습니다💧)

나는 아래의 글을 통해 Postman 사용법을 익혔다.
https://gganmu.tistory.com/27#num3

1. GET 요청: 리소스 조회(Read)

: 데이터를 조회할 때 쓰는 요청 방식
게시판을 예로 들면
1. 게시판 글 목록 보기
2. 회원 정보 조회하기
3. 특정 게시글 보기
등의 작업을 GET을 통해 수행한다.

Postman에서 GET 쓰는 법

위쪽 요청방식을 GET으로 설정한 후에 URL을 입력한 후 Send 버튼을 누른다.
-> Body란에 200 ok(요청 정상 처리)가 뜨고 데이터가 반환되었다면 성공

특정 유저가 쓴 게시글 조회(조건 붙이기)
=> Query Param 사용

Key는 userId, Value는 10을 입력하면 10번 유저가 쓴 게시글을 조회할 수 있다.

2. POST 요청: 새 리소스 생성(Create)

: 서버에 새로운 데이터를 보낼 때 쓰는 요청 방식
게시판을 예로 들면
1. 게시글 작성하기
2. 회원가입하기
3. 로그인하기
4. 댓글작성하기

Postman에서 POST 쓰는 법

위쪽 요청방식을 POST으로 설정하고 URL을 입력, raw > JSON 선택 후 데이터 입력을 마치고 Send
-> 201 Created(요청 생성됨)은 리소스 생성 성공 시, 생성된 리소스의 정보를 json 형태로 반환함

3. PUT 요청: 리소스 전체 교체(Update)

: 기존 데이터를 전체 수정할 때 쓰는 요청 방식
-> 이 번호의 데이터를 내가 보낸 내용으로 바꿔줘

Postman에서 PUT 쓰는 법

위쪽 요청방식을 PUT으로 설정하고 URL을 입력, raw > JSON 선택 후 데이터 수정을 마치고 Send

4. PATCH 요청: 리소스 일부 수정(Partial Update)

: 기존 데이터의 일부분을 수정할 때 사용

게시판을 예로 들면, 게시판의 제목, 내용, 태그 등의 내용 중 제목만 수정하고 싶을 때 PATCH를 쓸 수 있다.

PUT과 PATCH의 차이
PUT은 body에 titlem content, tag 모두를 보내지만 PATCH는 수정할 title 필드만을 보낸다.

Postman에서 PATCH 쓰는 법

위쪽 요청방식을 PATCH으로 설정하고 URL을 입력, raw > JSON 선택 후 일부 데이터 수정을 마치고 Send

5. DELETE 요청: 리소스 삭제(Delete)

: 기존 데이터를 삭제할 때 쓰는 요청 방식

Postman에서 DELETE 쓰는 법

위쪽 요청방식을 DELETE으로 설정하고 URL을 입력 후 send

4. 느낀점 및 소감

컴퓨터는 언어가 왜이렇게 많은걸까......??
SQL 또 할 생각에 머리가 아프다ㅜ 언어 통일해주면 안될까?😂

원래 항상 지인님이 올려주신 영상을 보면서 공부했는데 이번 주 ERD는 초보자가 듣기에 조금 추상적일수도 있다고 해서 다른 방법을 찾아 공부를 해보았다!! 내가 잘 이해하고 따라갈 수 있는 설명을 찾는 것이 쉽지 않다는 것을 알게되었다. (지인님 리스펙)

그리고 왜자꾸 ERD를 EDR이라고 하지?.. GPT한테 뭐 물어볼때마다 자꾸 EDR이라고 하니까 GPT가 계속 정정해준다

이번주차 과제는 하면서 기분이 좋았던?? 과제 중에 하나인 것 같다 원래 따라가기 급급해져서 그로그램의 구조는 생각해본 적이 거의 없는데 이렇게 과제를 통해 ERD를 배우니 머릿속에 틀이 잡혀나가는 느낌이라 좋았다.

좋았는데 정말 좋았는데...... 왜 Postman 안되는거지..? 아무래도 노트북 바꿔야겠다..

요즘 아이디어톤을 하기 시작해서 다들 너무 바쁠것 같다는 생각이 들어요 멋사대학 모두 화이팅!! 돌아보면 분명 뿌듯할 겁니다 저는 지금 제가 쓴 벨로그만 봐도 좀 뿌듯하거든요..ㅎㅎㅎㅎ 별건 없지만 이런 성취감과 뿌듯함이 저에게는 계속 공부할 수 있게 해주는 원동력이 되는 것 같습니다 아자아자🔥🦁

3개의 댓글

comment-user-thumbnail
2026년 5월 11일

++저도 postman 실행이 안되네요. 난항을 겪고 있습니다.. 스터디 전에 제가 해결할 수 있길..ㅠ! 저는 Flowchart Maker & Online Diagram Software를 사용했는데 수빈님은 ERD cloud를 사용하셔서 더 좋았던 것 같습니다! ERD cloud가 공부할 내용이 더 많아보였는데,, 잘 이겨내셨네요! 그냥 이해할 때는 Cardinality 구분이 잘 될 것 같은데, 은근 헷갈리더라구요. 수빈님 글은 전반적으로 이미지가 많아 이해에 더 도움이 되었던 것 같아요! 과제 수고하셨습니다 :)

답글 달기
comment-user-thumbnail
2026년 5월 11일

ㅋㅋㅋㅋㅋㅋㅋㅋ 수고하셨습니다 ㅠㅠ 축제때문에 시간도 없었을텐데 그래도 하시느냐고 고생 많으셨어요 !! 시간은 또 별로 없는데 포스트맨 트러블 슈팅하시느냐고 고생하셨습니다... (혹시 진짜 그냥 혹시나해서 로컬에서 스프링부트를 가동 시킨 뒤에 포스트맨 연결 시도 하셨나요? 스프링부트를 가동 안하고 테스트하면 실패합니다 ㅠㅠ)
무튼 축제기간동안 많이 도와주셔서 정말 수고 많으셨고, 또 SQL가 재미있다고 하시니 ... 제가 특별히 수빈님은 SQL 쿼리문에 대해서 추가 강의 도와드리겠습니다 !!!!!!! 무튼 정말 수고 많으셨어요~~

답글 달기
comment-user-thumbnail
2026년 5월 11일

너무너무 수고많으셨어요~!!!!! postman이 안된다니 이상하네요... 항상 개념을 자세히 적어주셔서 저도 복습하기 좋다고 생각해요! 특히 ERD사용법 덕분에 저도 도움을 많이 받았습니다 ㅠㅠㅠ 아자아자!!!!!

답글 달기