YesCoding

search:

Prisma ORM 을 μ‚¬μš©ν•œ RDB Data modeling

  • Prisma ORM 을 μ‚¬μš©ν•΄, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ (Relational Database) 데이터 λͺ¨λΈλ§ κ²½ν—˜μ— κ΄€ν•œ κΈ€μž…λ‹ˆλ‹€.

    μ–Όλ§ˆμ „λΆ€ν„° μƒˆλ‘œ μ‹œμž‘ν•œ ν”„λ‘œμ νŠΈμ—μ„œ, μ„œλΉ„μŠ€λ₯Ό μ²˜μŒλΆ€ν„° μ°Έμ—¬ν•˜μ—¬ λ§Œλ“€κ²Œ λ˜μ—ˆλ‹€. 기획 λ‹¨κ³„μ—μ„œ 기획자, λ””μžμ΄λ„ˆ, λ™λ£Œ κ°œλ°œμžμ™€ ν•¨κ»˜ Application μ—μ„œ λˆ„κ°€, 무엇을, μ–΄λ–»κ²Œ ν•  지 등에 μ΄μ•ΌκΈ°ν•˜λ‹€λ³΄λ‹ˆ, DB 에 μ–΄λ–€ 것듀을 λ„£μ–΄μ•Ό ν•˜λŠ” 지 감이 μ™”λ‹€.

    λ§Œλ“€κ³  μžˆλŠ” μ„œλΉ„μŠ€λŠ” SNS μ„œλΉ„μŠ€λΌ, 주둜 κΈ°νšλ‹¨μ—μ„œ μ΄λŸ¬ν•œ 이야기듀이 μ˜€κ°”λ‹€.

    "μ–΄λ“œλ―Όμ΄ 포슀트λ₯Ό 올리면, κ·Έ 밑에 μœ μ €λ“€μ΄ μ˜κ²¬μ„ 이슈둜 달아주고, 또 λ‹€λ₯Έ μœ μ €λ“€μ΄ μ΄μŠˆμ— λŒ“κΈ€μ„ λ‹¬μ•˜μœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€. ...."

    데이터 λͺ¨λΈλ§μ„ ν•  λ•ŒλŠ”, application 의 main entitiy 듀을 μ •ν•΄μ•Ό ν•˜λŠ”λ°, μœ„ 짧은 λ§μ—μ„œλ„ 이미 5개의 μ—”ν‹°ν‹°κ°€ λ‚˜μ˜¨ μ…ˆμ΄λ‹€.

    이번 ν”„λ‘œμ νŠΈμ—μ„œλŠ” κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„ νƒν–ˆλŠ”λ°, 사싀 MongoDB 같은 NoSQL 을 써보고도 μ‹Άμ—ˆμœΌλ‚˜, 데이터 μ—”ν‹°ν‹°λ“€ κ°„μ˜ 관계가 λͺ…ν™•ν–ˆκ³  λŒ€λΆ€λΆ„μ˜ 엔티티듀이 μ„œλ‘œ μ’…μ†λœ κ΄€κ³„μ˜€κΈ° λ•Œλ¬Έμ΄λ‹€.

    Prisma ORM 을 μ„ νƒν•œ 이유

    sql 을 직접 λ‚ λ € table ꡬ쑰 μœ„μ£Όλ‘œ ν”„λ‘œκ·Έλž˜λ°ν•˜λŠ” 것보닀 객체 지ν–₯적인 ν”„λ‘œκ·Έλž˜λ°μ„ 해보고 μ‹Άμ—ˆκ³ , λ™λ£Œ κ°œλ°œμžμ™€ ν”„λ‘ νŠΈ λ‹¨μ—μ„œλ„ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•΄ 객체 λ‹¨μœ„μ—μ„œ μ‹¬λ„μžˆκ²Œ κ³΅λΆ€ν•˜λ©° κ°œλ°œν•΄λ³΄μžλŠ” λͺ©ν‘œκ°€ μžˆμ—ˆκΈ°μ—, λ°±μ—”λ“œ λ‹¨μ—μ„œλ„ 데이터 λͺ¨λΈλ§ 객체 μœ„μ£Όλ‘œ ν•  수 있게 ORM 이 도와주기 λ•Œλ¬Έμ΄λ‹€.

    μ–΄λ–€ μ μ—μ„œ 객체 지ν–₯적인 데이터 λͺ¨λΈλ§μ— 도움이 λ˜λ˜κ°€?

    Prisma λ₯Ό μ‚¬μš©ν•˜λ©΄, prisma schema λΌλŠ” νŒŒμΌμ—μ„œλ§Œ db μ™€μ˜ 연결이 이루어진닀. 이 νŒŒμΌμ—μ„œ 데이터 λͺ¨λΈλ§μ„ ν•˜λŠ”λ°, 이미 sql 둜 μƒμ„±λœ ν…Œμ΄λΈ”λ“€μ„ introspect ν•˜μ—¬ prisma schema 에 λ°˜μ˜ν•˜λŠ” 데이터 레벨 λ‹¨μœ„μ˜ 방법과, 객체 지ν–₯적으둜 μƒκ°ν•˜μ—¬ prisma schema 에 데이터 λͺ¨λΈλ§μ„ 직접 ν•˜μ—¬ migrate λ₯Ό 톡해 table 을 μƒμ„±ν•˜λŠ” 방법이 μžˆλ‹€.

    λ°”λ‘œ 이 두 번째 migrate λ₯Ό ν•  λ•Œ, κ°œλ°œμžλŠ” schema λ₯Ό 직접 μž‘μ„±ν•˜λ©° μ—”ν‹°ν‹°λ“€μ˜κ° ν•„λ“œ νƒ€μž…, μ—”ν‹°ν‹° κ°„μ˜ 관계에 κ΄€ν•΄ ꡉμž₯히 λ§Žμ€ 고민을 ν•˜κ²Œ λœλ‹€. (κ²½ν—˜λ‹΄μ΄λ‹€.)

    λ˜ν•œ, query λ₯Ό μ‹€ν–‰ν•˜μ—¬ data λ₯Ό 읽고, μˆ˜μ •ν•˜λŠ” λ‹¨κ³„μ—μ„œλ„ ORM 을 μ‚¬μš©ν•˜λ©΄ 직접 sql 을 λ‚ λ¦¬λŠ” 것이 μ•„λ‹ˆλΌ, 좔상화λ₯Ό 톡해 κ°œλ°œμžκ°€ prisma.user.findMay 이런 μ‹μœΌλ‘œ object 처럼 생각할 수 있게 도와쀀닀. μ΄λŠ” 생 query λ₯Ό μ¨μ„œ 'SELECT * from USER where ~' μ‹μœΌλ‘œ ν•˜λŠ” κ²ƒκ³ΌλŠ” μƒκ°ν•˜λŠ” λ°©ν–₯이 달라진닀.

Recommend Post
Β© Copyright 2022, yesCoding