[DB] Prisma 기초

2021. 10. 10. 23:14·Archive
반응형

Prisma

: ORM으로 객체를 schema로 정의한 다음, 그 객체와 내가 선택한 DB를 연결시켜주는 매개체

  • Node.js와 Typescript ORM
  • 직관적인 데이터모델, 자동화된 마이그레이션, 타입안정성, 자동완성 기능

 

💡ORM ( Object Relational Mapping )

: ‘객체로 연결’

객체와 관계형 데이터베이스의 데이터를 자동으로 mapping(연결)해주는 framwork

  • 객체지향 프로그래밍은 class를 사용하고, 관계형 db는 table을 사용하기 때문에 객체모델과 관계형 모델간에 불일치가 존재 → ORM을 통해 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결
  • app과 db연결 시 SQL언어가 아닌 application 개발 언어로 db를 접근할 수 있게 해주는 툴
  • ORM은 SQL 문법 대신 application 개발언어를 그대로 사용할 수 있게 함으로써, 개발 언어의 일관성과 가독성을 높여줌

 

SQL ( Structured Query Language )

: DB에서 데이터를 추출하고 조작하는데 사용하는 데이터 처리 언어

 

 

DBMS ( Database management System )

: db를 관리하고 운영하는 소프트웨어

  1. 대용량 데이터를 사용하고 저장, 관리할 수 있다.
  2. 공유개념, 동시에 다른 사용자가 공유할 수 있다.

종류 : 계층형, 망형, 관계형, 객체지향형 등

현재 사용되는 DBMS는 관계형(RDBMS) 이 많이사용 (MySQL, Oracle, SQLite, PostgresSQL)

 

RDBMS (Relational DBMS)

: 최소단위 table로 구성 (하나의 열 column과 행 row로 구성)

 

SQL (Structured Query Language)

: DBMS에 데이터를 구축, 관리하고 활용하기 위해서 사용되는 언어 (= 데이터베이스용 프로그래밍 언어)

db에 query를 보내 원하는 데이터를 가져오거나 삽입할 수 있다.

 

Query

: (질문, 문의하다) db에 사용자가 요청한 특정 데이터를 보여달라는 요청

ex) 쿼리문을 작성하다 → db에서 원하는 정보를 가져오는 코드를 작성

  • parameter → Get : /products/5
  • query → Get : /products?id=5

일반적으로 query는 어떤 키워드를 검색, 요청 시 필요한 옵션을 전달할 때 사용 (filtering, sorting, searching)

 


 

.env

DATABASE_URL="file:./database.db"

 

 

 

prisma/schema.prisma

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

// DB schema 작성예시
model User {
  id Int @id @default(autoincrement())
  username String @unique
  email String? @unique
  password String?
  phone String? @unique
  github_id String? @unique
  avatar String? 
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt
}

 

 

migrarion - schema 변경시 실행

npx prisma migrate dev

→ SQL 코드로 변환된 migration.sql 파일 생성

 

 

 

typescript로 작성된 client 생성

→ node_modules/.prisma/client/index.d.ts

npx prisma generate

 

 

 

prisma studio 실행

npx prisma studio

 

 

 

connect table

model SMSToken {
  id         Int      @id @default(autoincrement())
  token      String   @unique
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt
  user       User     @relation(fields: [userId], references: [id])
  userId     Int
}
  • onDelete : related 되어있는 부모 table이 삭제되었을 때 설정
    • Cascade : child table도 같이 삭제
    • SetNull : child에서 연결된 항목을 null로 설정 (값을 optional로 바꿔야됨)
    • Restrict(기본) : prevent deleting a parent record
반응형
저작자표시 비영리 변경금지

'Archive' 카테고리의 다른 글

[React] Router  (0) 2021.10.24
[VSC] Prettier 적용방법  (0) 2021.10.16
[DB] Prisma  (0) 2021.10.10
export / export default  (0) 2021.10.02
--save-dev ?  (0) 2021.09.25
'Archive' 카테고리의 다른 글
  • [React] Router
  • [VSC] Prettier 적용방법
  • [DB] Prisma
  • export / export default
manon_e
manon_e
  • manon_e
    개발 블로그
    manon_e
  • 전체
    오늘
    어제
    • 💻 (97)
      • Study (10)
        • React | Next.js (6)
        • Memo (4)
      • Project (0)
      • Archive (87)
  • 인기 글

  • 태그

    State
    Prisma
    티스토리챌린지
    Node
    typeScript
    Component
    ES6
    pre-rendering
    axios
    useEffect
    Next.js
    비동기
    REACT
    getstaticprops
    git
    vscode
    정규표현식
    node.js
    오블완
    JavaScript
  • hELLO· Designed By정상우.v4.10.3
manon_e
[DB] Prisma 기초
상단으로

티스토리툴바