N:M 관계의 표현, H2가 무엇이지?

구환준/모건·2023년 11월 2일

UMC-5th

목록 보기
3/10

워크북 요약

데이터베이스를 어떻게 설계하는 것이 좋을까?

ERD 그리기

완벽할 필요 전혀 없습니다!!

큰 틀 → 세부 기능 반영 이 일반적인 순서입니다

  1. 테이블명과 컬럼 - 워크북에선 소문자에 snakecase( _ 로 단어 구분)을 권장하지만 사실 개발자 마음임
  2. PK는 웬만하면 기존에 존재하는 속성값 대신 id를 만들어 사용하고 변수명은 member_id, post_id 보다는 그냥 id를 권장하는군요.
  3. ID의 타입은 확장성을 고려하여 bigint로 하는 것을 추천드리지만 실제 코딩할 땐 int로 해도 무방
  4. Soft delete - HTTP의 DELETE가 아닌 PATCH를 이용해 status만 바꾼 후, batch를 이용해 일정 기간 이후 완전히 삭제
  5. N:M 관계 - 워크북에선 ‘빌린 책’ 이라는 테이블, 쇼핑 프로그램에도 적용 가능하다 고객과 상품이 N:M 관계이므로 ‘주문’ 이라는 테이블을 만들어볼 수 있을 듯 하다

Untitled

주어진 ERD를 보고 주문(Order) 테이블을 만들어보자!

  1. 슈퍼타입과 서브타입 - 클래스의 상속과 개념이 비슷하다고 생각하면 됩니다! 슈퍼타입의 속성(Attributes)를 가지면서 서브타입 각각의 속성도 같이 가집니다
  2. RDS 사용법에 대해서는 프로그램 배포를 배운 뒤에 배워봅시다 ㅎㅎ

미션 내용 공유💡

  • 미션
    1. 주어진 IA(기획 플로우)와 와이어 프레임(디자인 프로토타입)을 보고 직접 데이터베이스를 설계해오기, 위에서 언급한 경우를 다 적용해서 할 것

    2. 이름 글자 수 등 세부적인 부분은 원하는 대로 해도 됨!

    3. 각 지역 별로 가게들이 있으며 가게를 방문하는 미션을 해결하며 포인트를 모으는 서비스
      1. 모든 지역마다 10개의 미션 클리어시 1000 point 부여로 고정

      최소한 로그인/회원가입, 미션, 홈 화면에 필요한 데이터는 설계를 해야함!

      미션 난이도 완화를 위해 지도 검색 기능 전부 pass, 저 부분은 설계 하지 마세요

      내 포인트 관리, 알 부분도 설계하지 마세요

      사장님이 자신의 점포 관리하는 부분도 설계 대상에서 제외입니다.

      물론 원하시면 하셔도 됩니다. 😉

3명정도 본인이 작성한 ERD를 공유합시다!

실습 ⌨️

Post 관련 ERD

1:N 관계가 표현되어 있기만 하면 됩니다!

코드 리뷰(?)

감히 제가 훈수좀 둬볼게요 LGTM!

코드를 작성 안한 경우

→ Postman을 이용해 Member 관련 코드를 테스트 해보자!

혹시라도 설치가 안되어있다면: Postman 사용법

코드를 작성한 경우🍀

→ Post관련 동작도 테스트 해보시죠!

+위에서 배운대로(N:M) 좋아요 기능을 만들어보는건 어떠신지..하하

H2는 뭐죠?

H2는 MySQL과 같은 관계형 데이터베이스로, 작은 크기와 간단한 설정으로 개발 및 테스트 환경에서 주로 사용됩니다.
로컬 환경에서 H2를 사용하여 쉽고 빠르게 개발하고 테스트할 수 있습니다.

H2설치 및 사용법

H2를 설치한 뒤

runtimeOnly 'com.h2database:h2'

build.gradle - dependencies 안에 h2를 추가해준 후

//예시입니다
##h2
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
##datasource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=umc
spring.datasource.password=
spring.datasource.url=jdbc:h2:mem:umc_data

application.properties에 위와 같이 넣어주면 브라우저 환경에서 h2를 실행시킬 수 있습니다

username, password, url은 원하시는대로 작성해주시면 됩니다

0개의 댓글