Prisma Many to Many(다대다) schema 작성

 해당 스키마는 아래 글을 참고로 만들었습니다.


링크 : SQL 관계도 Many to Many(다대다 관계)


해당 링크의 스키마를 작성하기 위해서 아래와 갖이 코드를 작성합니다.


// prisma/schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
provider = "prisma-client-js"
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

model users {
id Int @default(autoincrement()) @id
full_name String @unique
created_at DateTime @default(now()) @db.Timestamptz(3)
comments joinTable[]
}

model joinTable{
users users @relation(fields: [userId], references: [id]) // users와joinTable은 1:N이다
userId Int
comment comments @relation(fields: [commentId], references: [id]) // comments와 joinTable은 1:N이다.
commentId Int

@@id([userId, commentId]) // userId, commentId는 Primary key이다
}

model comments {
id Int @default(autoincrement()) @id
content String
users joinTable[]
}

코드1) schema.prisma code


-- CreateTable
CREATE TABLE "users" (
"id" SERIAL NOT NULL,
"full_name" TEXT NOT NULL,
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,

CONSTRAINT "users_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "joinTable" (
"userId" INTEGER NOT NULL,
"commentId" INTEGER NOT NULL,

CONSTRAINT "joinTable_pkey" PRIMARY KEY ("userId","commentId")
);

-- CreateTable
CREATE TABLE "comments" (
"id" SERIAL NOT NULL,
"content" TEXT NOT NULL,

CONSTRAINT "comments_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "users_full_name_key" ON "users"("full_name");

-- AddForeignKey
ALTER TABLE "joinTable" ADD CONSTRAINT "joinTable_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "joinTable" ADD CONSTRAINT "joinTable_commentId_fkey" FOREIGN KEY ("commentId") REFERENCES "comments"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

코드2) migrate후 자동 생성된 sql


사진1) 실제 터미널 정보

NestJS프로젝트에서 생성한 파일이지만 schema.prisma 파일은 어느 프레임워크에서도 사용할수 있어 보입니다.


댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)