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를 관리하고 운영하는 소프트웨어
- 대용량 데이터를 사용하고 저장, 관리할 수 있다.
- 공유개념, 동시에 다른 사용자가 공유할 수 있다.
종류 : 계층형, 망형, 관계형, 객체지향형 등
현재 사용되는 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 |