[nestjs] 표준 단어 관리 API 만들기 02

in kr •  last year 

이전 글

모델 분석

image.png

위와 같은 형태의 관계를 가질 수 있도록 구성 해보도록 하겠습니다.

모델 구성

아래와 같은 틀을 가지고 작성

model 모델명 {
 // KEY

  // FIELDS

  // SHARES

  // RELATIONS - ONE

  // RELATIONS - MANY
}

모델 생성


// 단어 검색
model word_srch {
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  krn_name    String   @db.VarChar(256) // 한글명
  ngls_name   String   @db.VarChar(256) // 영문명

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS
}

// 표준 단어 사전
model stnd_word_dctn {
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  ngls_name   String   @db.VarChar(256) // 영문명
  ngls_bbrv_name   String   @db.VarChar(32) // 영문약어명
  krn_name    String   @db.VarChar(256) // 한글명

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  term_id     Int      // 표준 용어 사전 아이디
  term_item   stnd_term_dctn @relation(fields: [term_id], references: [id]) // 표준 용어 사전

  // RELATIONS - MANY
}

// 표준 용어 사전
model stnd_term_dctn{
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  term   String   @db.VarChar(256)// 용어
  term_ngls   String  @unique @db.VarChar(256) // 용어영문

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  dmn String @db.VarChar(32) // 도메인
  dmn_item stnd_dmn_dctn @relation(fields: [dmn], references: [dmn]) // 표준 도메인 사전 목록

  // RELATIONS - MANY
  word_list stnd_word_dctn[] // 표준 단어 사전 목록
  code_list stnd_code[] // 표준 코드 목록, 배열은 optional 처리가 되지 않음에 유의 => empty list
}

// 표준 코드
model stnd_code {
  // KEY
  term_ngls   String @db.VarChar(256)// 용어영문
  code     String @db.VarChar(32) // 코드
  @@id([term_ngls, code])

  // FIELDS
  code_vl    String @db.VarChar(256)// 코드값
  sort_rdr   Int @db.SmallInt // 정렬순서
  use_yn   String @db.Char(1)  @default("Y")// 사용여부

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  term_item stnd_term_dctn @relation(fields: [term_ngls], references: [term_ngls]) // 표준 도메인 사전 목록

  // RELATIONS - MANY
}

// 표준 도메인 사전
model stnd_dmn_dctn{
  // KEY
  dmn    String    @id @db.VarChar(32) // 도메인

  // FIELDS
  data_type   String @db.VarChar(32)// 데이터 타입

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE

  // RELATIONS - MANY
  term_list stnd_term_dctn[] // 표준 용어 사전 목록
}

테이블 생성

npx prisma migrate dev --name "metadata"

위 커맨드를 실행하여 DB 마이그레이션(생성)을 진행한다

image.png

참조

모델 생성 시 @db.VarChar(32) 등과 같이 명시적으로 테이블의 타입을 지정하지 않으면 postresql 의 경우 아래와 같이 DB의 값이 지정됨에 유의한다.

String => text
Int => int4
autoincrement => serial4
DateTime => timestamp(3)

맺음말

이로써 Table 설계 까지 완료 하였고, 다음 시간에는 nestjs 에서 rest-api setup을 진행 해보도록 하겠습니다.

참조링크

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

image.png