[Node.js] CH3 개인과제 - DB모델링

GDORI·2024년 9월 9일
0

Node.js

목록 보기
8/11

요구사항에 맞는 DB

  • Users
  • Characters
  • Items
  • Inventories
  • Equips

Users

  • 유저는 아이디와 패스워드, 이름으로 계정을 생성할 수 있다.
  • 유저는 한 계정에 여러 캐릭터를 보유할 수 있다.

prisma model

model Users {
  userNo Int @id @default(autoincrement()) @map("userNo")
  userId String @unique @map("userId")
  userPw String @map("userPw")
  userName String @map("userName")

  Characters Characters[]

  @@map("Users")
}

Characters

  • 캐릭터는 캐릭터명으로만 생성이 가능하다.
  • 캐릭터는 생성 시 기본 체력과 힘, 머니를 가진다.
  • 캐릭터는 인벤토리와 장비창을 보유하고 있다.

prisma model

model Characters {
  characterNo Int @id @unique @default(autoincrement())
  userNo Int
  characterName String @unique
  health Int @default(500)
  power Int @default(100)
  money Int @default(10000)

  user Users @relation(fields: [userNo], references: [userNo], onDelete: Cascade)
  inventory Inventories?
  equip Equips?

  @@map("Characters")
}

Items

  • 아이템 테이블은 이름, 스탯, 가격으로 구성되어 있다.
  • inventories, equips와 n:m 구조로 이루어져 있다.
    라고 하려했으나 여러 고민 끝에 그냥 관계없이 가기로 했다.
    계정 귀속, n:m으로 만들었다가 그냥 지웠다.
    API로 인벤토리에 넣을 예정이다.

prisma model

model Items {
  itemNo Int @id @default(autoincrement())
  itemName String
  itemStat Json
  itemPrice Int

  @@map("Items")
}

Inventories

  • 인벤토리 번호는 캐릭터 번호를 따른다.(고유)
  • 아이템 목록은 JSON 객체에 담는다.

prisma model

model Inventories {
  inventoryNo Int @id @unique
  items Json 
  character Characters @relation(fields: [inventoryNo], references: [characterNo])

  @@map("Inventories")
}

Equips

  • 장비창은 인벤토리와 같다

prisma model

model Equips {
  equipNo Int @id @unique
  items Json 
  character Characters @relation(fields: [equipNo], references: [characterNo])

  @@map("Equips")
}
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글