Prisma Schema 넌 누구니 ?

윤익후·2020년 11월 29일
1

Prisma 부시기

목록 보기
2/3
post-thumbnail

안녕하세요. 개발자 윤익후 입니다! 🚀
오늘은 Prisma를 사용하기에 앞서, Prisma 환경을 구축하는데 필요한
Prisma Schema에 대해 알아보도록 하겠습니다 !
Prisma SchemaGenerator Data sources Data Model 3가지로 이루어져 있습니다.
Prisma Schemaschema.prisma라는 파일을 사용합니다.
하나씩 천천히 살펴보도록 하겠습니다.

❗ 아래의 이전 강좌를 먼저 보고오시는 것을 추천드립니다.
1. Prisma, 넌 누구니 ?

📕Generator

🔎Generator란?

generator Prisma 명령(prisma migrate, prisma client)를 실행하는 환경을 결정하는 필드입니다.
일반적으로는 provider외에 설정할 필요가 없습니다.
그러나 추가로, Preview 기능을 사용하기 위해서는, PrieviewFeatures옵션을 추가해 주서야 합니다.

generator client{
  provider = "prisma-client-js"
  previewFeatures = []
}

❗ 현재 Prisma가 지원하는 previewFeatures옵션은 다음과 같습니다.
nativeTypes microsoftSqlServer

📕Data Source

🔎Data source란?

Data Source란, Prisma를 사용하여 연결할 데이터베이스의 정보를 설정해 주는 필드입니다.
필요한 정보로는, Database의 종류(provider)Database URL(url)이 있습니다.

❗ 현재 Prisma가 지원하는 Database는 다음과 같습니다.
PostgreSQL MySQL SQLite MSSQL (2.10.0 이상 버전에서 Preview로 지원)

🔎Data source 형식

📄 Provider

Data Source는 datasource 필드에서 정의됩니다.

 datasource db{
  provider = Database 종류
  url	= Database  
}

현재 사용가능한 provider 옵션은 다음과 같습니다.

sqlite postgresql mysql sqlserver

📄 url

Database 마다 url의 형식이 조금씩 다릅니다.
url에 직접 URL을 기입할 수도 있고, env("DATABASE_URL")을 사용해
환경변수를 통해 사용할 수 있습니다.
.env 파일을 통해 관리하시는 것을 추천드립니다.
아래에서 각 Database마다 상세하게 알아보도록 하겠습니다.

PostgreSQL

PostgrSQL의 경우 공식 PostgreSQLI 형식을 따릅니다.
기본 URL은 postgresql://USER:PASSWORD@HOST:PORT/DATABASE입니다.
추가로 URL 끝에 ?KEY1=VALUE&KEY2=VALUE의 형식으로 인자를 사용할 수 있습니다.
인자의 종류가 많아 Prisma Docs 를 참고해 주시고, 혹여 궁금한 점이 있으시면 댓글 남겨주세요 !

MySQL

MySQL의 기본URL은 mysql://USER:PASSWORD@HOST:PORT/DATABASE입니다.
추가로 URL 끝에 ?KEY1=VALUE&KEY2=VALUE의 형식으로 인자를 사용할 수 있습니다.
인자의 종류가 많아 Prisma Docs 를 참고해 주시고, 혹여 궁금한 점이 있으시면 댓글 남겨주세요 !

SQLite

SQLite의 기본 URL은 file:<file경로>입니다.
SQLite의 경우 인자 옵션이 존재하지 않습니다.

MsSQL

MsSQL은 현재 Preview 기능입니다.
MacOS 에서 사용하는 경우, encrypt=DANGER_PLAINTEXT 해당옵션을 사용해 개발하고, production에서는 코드를 제거해야 합니다.

MsSQL의 경우 JDBC 표준을 따릅니다.
기본 URL은 sqlserver://HOST:PORT;database=DATABASE;integratedsecurity=true 입니다.

📕Data model

🔎Data model이란?

Data model은 총 2가지로 구성됩니다.
PSL(Prisma Schema Language)를 사용하여 작성합니다.

model - Database 테이블에 매핑되는 개념입니다.
enum - 열거형 (❗ Database에서 지원하는 경우만 사용 가능합니다.)
기타 field 및 model의 동작을 변경하는 속성과 함수

📄Model

Database의 테이블에 매핑되는 개념입니다.
Field (DB의 column과 동일)가 있고, FieldFiled Type (DB의 data_type과 동일),
제약조건 (unique, realation(1:n, n:m 관계)) 등이 있습니다.
해당 부분은 추후에 model간의 관계를 설명하면서 더 자세하게 알아보도록 하겠습니다.
대략적인 구조는 아래와 같습니다.

model ModelName {
    Field1	FieldType @option
    Field2	FieldType
    Field3	FieldType
} 

📕마무리하며

오늘은 Prisma Schema의 구성에 대하여 알아보았습니다.
다음 포스트에서는 Model의 더욱 구체적인 예시와, 모델간의 관계에 대하여 알아보겠습니다.

1개의 댓글

comment-user-thumbnail
2020년 11월 29일

좋아요

답글 달기