김데이의 개발공부

[ TIL ] Day 19 - DB 기초이론 & ER모델 / 관계형 데이터베이스(Postgres)와 서버 본문

코드잇 Node.js(BE) 부트 캠프/TIL (Today I Learn) 📑

[ TIL ] Day 19 - DB 기초이론 & ER모델 / 관계형 데이터베이스(Postgres)와 서버

theday365 2025. 10. 22. 20:11
반응형

🗓️ 수업 일자 : 2025.10.22

✨ 오늘의 수업 평가 :  [ GOOD ]  배움이 팡팡 터진 날 🍿💡

진짜 아기다리고기다리던 !!!!!!!!!!! 

너무너무 배우고 싶던 DB 영역인데, 내 손으로 이걸 만들어 냈다는게 너무 좋다 🤩

아직 별거 아닌 구조이지만 벌써부터 개인 프로젝트에 적용 할 아이디어가 무궁무진하게 샘솟는다!

 

 

📝  오늘 배운 내용  
- DB 기초 이론

- Prisma ORM 사용하기

 


1. DB 기초 이론

DBMS

- DataBase Management System으로, DB를 생성하고 관리 가능

- DB는 엑셀, 표 같이 행과 열로 구성되어있음

- 이러한 DB를 SQL 문법을 사용하여 원하는 데이터를 조회 / 처리 진행

 

 

ER 모델

ERD 모델에서 컬럼과 로우에 대한 예시
ERD 모델에서 컬럼과 로우에 대한 예시

- 기본 설명 : Entity Relationship Model로,  데이터 베이스를 개체, 속성, 관계로 표현하는 설계 방식을 가짐

 

- 주요 구성 요소

- 개체, Entity : 저장해야 할 대상 

- 속성, Attribute : 개체의 세부 정보, 속성 => 컬럼에 맵핑 되는 정보

- 관계, Relationship : 여러 Entity들 간의 관계, 즉 각각의 Entity Model( = 실제 DB의 table) 사이의 관계
- PK, Primary Key : 각 로우를 식별 할 수 있는 컬럼
- FK, Foreign Key : 다른 테이블의 PK를 현재 테이블에서 참조하는 컬럼 => 연결된 테이블과 "관계"를 만든다

 

- 카디널리티, cardinality : 두 테이블의 개체간 관계, 수량적 대응 표기법

  1) 1 : 1 관계 - A 테이블의 a 개체가 B 테이블 b 개체와 단일로 연관
                       예시) 디스코드 가입 후 생성되는 "마이페이지"

  2) 1 : N 관계  - A 테이블의 a 개체가 B 테이블 b,c,d ...  같이 여러 개체와 연관
                       예시) Node 6기 커뮤니티에 내가 작성한 여러 글들

  3) N : M 관계 - A 테이블의 여러 개체와 B 테이블 여러 개체가 연관
                       예시) 나는 디스코드 내 여러 커뮤니티를 가입 할 수 있고, 커뮤니티도 여러 가입자를 받을 수 있음

관계 설명
||--|| : 1:1 관계, One and only one
||--o{ : 1:n 관계, Zero or many
}o--o{ : n:m 관계, Many to many

관계 설명 예시
User ||--|| UserSetting : "sets" // 한 유저는 하나의 설정만 가짐
User ||--o{ Comment : "writes"     // 한 유저는 여러 글 작성 가능
User }o--o{ Community : "joins"   // 유저와 커뮤니티는 다수 대 다수

 

 

 

2. Prisma ORM 사용하기 

Prisma란?

여러 기능이 있지만 그 중에서, 다양한 관계형 데이터 베이스와 상호작용할 때 사용하는 ORM 제공

Prisma 홈페이지 : https://www.prisma.io/orm

 

Prisma | Next-generation ORM for Node.js & TypeScript

Prisma is a next-generation Node.js and TypeScript ORM for PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, and CockroachDB. It provides type-safety, automated migrations, and an intuitive data model.

www.prisma.io

 

 

Prisma Schema 

- 기본 설명

  : 데이터 구조(테이블, 컬럼, 관계 구조)를 미리 설정하는 것
  : 이 파일을 바탕으로 Prisma가 DB 테이블을 자동을 생성하거나 업데이트 해 줌

  : Overview On Prisma Schema (https://www.prisma.io/docs/orm/prisma-schema/overview)

 

Prisma Schema Overview | Prisma Documentation

The Prisma schema is the main method of configuration when using Prisma. It is typically called schema.prisma and contains your database connection and data model.

www.prisma.io

 

1. 기본 사용법

  - 여러 제약 조건 설정하기
    1) 속성 설정 - Int, datetime, string?(옵셔널하게 저장 가능)  등

    2) PK / Unique 설정 - @id : 기본키(PK) , @defalult(uuid()) : 기본값으로 고유 ID자동 생성 ,  @unique : 중복 불가

    3) 특수 속성 입력 - @updatedAt : 리소스가 수정될 때 자동으로 시간 업데이트, @defalult(now()) : 생성 시 현재 시간 저장

 

  - 관계 설정하기

    1) Relation 설정 - @relation 을 사용해 FK 설정

    2) 다른 모델 가져오기(전체) - 속성 입력칸에 "Product[ ]" 작성 = "model Product" 가져오기

[ Prisma Schema 구성하기 ] 출처 : https://www.prisma.io/docs/orm/prisma-schema/overview

 

 

2. 실습 해 보기

환경 설정  

    - 프로젝트 초기화 작업 및 Data sources 안에 DB 입력
       : 작업하는 프로젝트 터미널에서 npx prisma init --datasource-provider postgresql

 

 작업 공간 설명 with schema.prisma 파일

    1) Generators : 서버와 연동할 때 사용할 클라이언트를 지정 

    2) Data sources : 작업 시 사용해야 하는 DB URL 셋팅 영역

    3) Data model Definition : 실제 우리가 model 을 작성하는 공간

schema.prisma 파일에서의 작업 공간 설명
schema.prisma 파일에서의 작업 공간 설명

 

 

마이그레이션, Migration

- schema.prisma파일에 정의 해 둔 Data model을 바탕으로 "실제 테이블"을 만들어 줌, 일종의 schema 동기화

- Data model을 작성 한 뒤 터미널에 입력
  : npx prisma migrate dev

    Enter a name for the new migration: › 나오면 신규 마이그레이션 이름 입력 (간단한 commit 느낌으로)

schema.prisma에서 신규 작성한 model & enum 기반으로 Migration 생성
schema.prisma에서 신규 작성한 model & enum 기반으로 Migration 생성

 

Prisma Studio 실행하기 

- 사용자가 model Schema 사용하기 편하게 UI 제공

- 명령어 : npx prisma studio

터미널에 Prisma Studio 실행하기
localhost:5555 로 접속하여 DB 확인하기
비어있는 User Model 확인 가능
User Model 에 데이터 삽입, 수정, 삭제 가능

 

 

 

 

+ 추가 [ window 환경에서 Postgres 접속 불가 인 경우 with Ubunt ]

kimDay@DESKTOP-Q123456:~$ sudo apt update
# Window APT(패키지 관리자) 업데이트

kimDay@DESKTOP-Q123456:~$ sudo apt install postgresql postgresql-contrib -y
# APT 패키지를 사용해서 postgresql 다운로드

kimDay@DESKTOP-Q123456:~$ psql --version
# postgresql 버전 확인

kimDay@DESKTOP-Q123456:~$ sudo service postgresql start
# postgresql 실행 명령어

kimDay@DESKTOP-Q123456:~$ sudo service postgresql status
# postgresql 잘 실행 됬는지 상태 확인하는 명령어

kimDay@DESKTOP-Q123456:~$ sudo -u postgres psql
   ALTER USER postgres PASSWORD '실제 사용할 password 입력';
# window postgresql 계정정보 
# user(Super) = postgres 자동생성
# password = 추가로 셋팅 해야함

 

 


 

📃 내일은 뭘 배울까 🤔

- Prisma를 이용한 CRUD 하기

- Prisma 여러 문법 익히기

반응형