𝗠𝗮𝘀𝘁𝗲𝗿𝗶𝗻𝗴 𝗣𝗿𝗶𝘀𝗺𝗮 𝗮𝗻𝗱 𝗦𝗤𝗟 𝗥𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝘀𝗵𝗶𝗽𝘀

जर तुम्हाला Prisma कनेक्शन कसे हाताळते हे समजले, तर ते डेटाबेसचे काम सोपे करते. स्कीमा (schemas), रिलेशनशिप्स (relations) आणि क्वेरीज (queries) साठी येथे एक मार्गदर्शक आहे.

𝗧𝗵𝗲 𝗦𝗰𝗵𝗲𝗺𝗮 𝗮𝗻𝗱 𝗥𝗲𝗹𝗮𝘁𝗶𝗼𝗻𝘀𝗵𝗶𝗽𝘀

रिलेशनशिप्स तुमचे डेटा एकमेकांशी कसे जोडले जातात हे ठरवतात.

  • One-to-Many: एका युजरचे अनेक पोस्ट्स असू शकतात. Post मॉडेलमध्ये foreign key (authorId) असते. User मॉडेलमध्ये फक्त एक संदर्भ (reference) असतो.
  • Many-to-Many: एक युजर अनेक प्रोजेक्ट्सचा भाग असू शकतो आणि एका प्रोजेक्टमध्ये अनेक युजर्स असू शकतात. यासाठी तुम्हाला मध्ये एक जंक्शन टेबल (ProjectMember) आवश्यक आहे. हे टेबल दोन्ही बाजूंच्या foreign keys साठवते.
  • Self-Relations: एक युजर दुसऱ्या युजरला फॉलो करतो. तुम्ही "Follower" आणि "Following" सारखे नावांकित रिलेशनशिप्स वापरता जेणेकरून Prisma ला समजेल की कोणती बाजू कोणती आहे.

𝗞𝗲𝘆 𝗤𝘂𝗲𝗿𝘆 𝗠𝗲𝘁𝗵𝗼𝗱𝘀

  • findUnique: @id किंवा @unique फील्ड असलेल्या रेकॉर्ड्ससाठी याचा वापर करा. काहीही सापडले नाही तर हे null रिटर्न करते.
  • findMany: लिस्ट मिळवण्यासाठी याचा वापर करा. तुम्ही फिल्टर, सॉर्ट आणि पेजिनेशन (paginate) करू शकता.
  • findFirst: जेव्हा तुम्हाला एक रेकॉर्ड हवे असते पण फिल्टर हे युनिक फील्ड नसते, तेव्हा याचा वापर करा.

𝗙𝗶𝗹𝘁𝗲𝗿𝗶𝗻𝗴 𝘄𝗶𝘁𝗵 𝗪𝗵𝗲𝗿𝗲

"where" क्लॉज थेट SQL ला मॅप होतो.

  • Comparison: gt (greater than), lt (less than), किंवा gte (greater than or equal) वापरा.
  • Text Search: केस-इन्सेन्सिटिव्ह (case-insensitive) सर्चसाठी "contains" सोबत "mode: insensitive" वापरा.
  • Logical Operators: अटी (conditions) एकत्र करण्यासाठी OR, AND, किंवा NOT वापरा.
  • Relation Filters: जोडलेल्या डेटावर आधारित फिल्टर करण्यासाठी "some", "every", किंवा "none" वापरा. "some" अशा रेकॉर्ड्सचा शोध घेते जिथे किमान एक रिलेशनशिप मॅच होते.

𝗗𝗮𝘁𝗮 𝗖𝗼𝗻𝘁𝗿𝗼𝗹: 𝗦𝗲𝗹𝗲𝗰𝘁 𝘃𝘀 𝗜𝗻𝗰𝗹𝘂𝗱𝗲

  • select: नेमके कोणते फील्ड्स रिटर्न करायचे आहेत ते निवडा. यामुळे तुमचा डेटा हलका आणि सुरक्षित राहतो.
  • include: तुमच्या रिझल्टमध्ये संबंधित डेटा जॉइन करा. यामुळे नेस्टेड ऑब्जेक्ट्स (nested objects) मिळतात.
  • Note: तुम्ही select आणि include एकाच लेव्हलला वापरू शकत नाही. तुम्हाला यापैकी एक निवडावे लागेल. मात्र, जॉइन केलेल्या रिलेशनशिपमधून विशिष्ट फील्ड्स निवडण्यासाठी तुम्ही include च्या आत select वापरू शकता.

𝗢𝗽𝗲𝗿𝗮𝘁𝗶𝗼𝗻𝘀 𝗮𝗻𝗱 𝗦𝗮𝗳𝗲𝘁𝘆

  • createMany: एकाच वेळी अनेक रो (rows) तयार करा. हे जलद आहे परंतु नेस्टेड राइट्सना (nested writes) सपोर्ट करत नाही.
  • upsert: जर रेकॉर्ड अस्तित्वात असेल तर ते अपडेट करते किंवा नसेल तर नवीन तयार करते. शॉपिंग कार्टसाठी हे उत्तम आहे.
  • update: त्रुटींशिवाय (errors) संख्या बदलण्यासाठी increment किंवा decrement सारखी ॲटॉमिक ऑपरेशन्स (atomic operations) वापरा.
  • $transaction: अनेक राइट्सना एकत्र ग्रुप करा. जर एक भाग अयशस्वी झाला, तर संपूर्ण ग्रुप रोलबॅक (roll back) होतो. यामुळे अर्धवट डेटा एरर्स टाळता येतात.

पेजिनेशन

"take" आणि "skip" एकत्र करून पाने तयार करा.

  • take: किती रेकॉर्ड्स दाखवायचे.
  • skip: किती रेकॉर्ड्स वगळायचे.

स्रोत: https://dev.to/chinwuba_jeffrey/understanding-prisma-and-sql-relationships-schema-and-querying-l7k