Prisma ORM Relations ve İlişkiler Rehberi


Prisma ORM Relations ve İlişkiler Rehberi

Prisma ORM, modern web uygulamalarında veritabanı yönetimini oldukça kolaylaştıran popüler bir ORM (Object Relational Mapping) aracıdır. Prisma'nın en güçlü özelliklerinden biri, ilişkili verilerin kolayca modellenip yönetilmesini sağlayan "relations" yani ilişkiler kavramıdır. "Prisma ORM relations ve ilişkiler" konusunda doğru modeli oluşturmak, verilerinizi hem güvenli hem esnek bir şekilde yönetmenizi sağlar. Bu makalede, Prisma'da farklı ilişki türleri, ilişki tanımlama yöntemleri ve örnek kodlarla kullanımı detaylıca ele alacağız.

Prisma ORM Relations Türleri

Prisma ORM relations ile en yaygın üç ilişki tipi üzerinde rahatça çalışabilirsiniz. Bunlar:

  • One-to-One (Birebir): İki tablo arasında her kaydın yalnızca bir eşleşen kaydı vardır.
  • One-to-Many (Bire-Çok): Bir kaydın birden fazla bağlı kaydı olabilir.
  • Many-to-Many (Çoktan-Çoka): Her iki tabloda da birden fazla kayıt karşılıklı olarak birbirleriyle ilişkilendirilebilir.

Şimdi bu Prisma ORM relations türlerini birer örnekle inceleyelim.

One-to-One (Birebir) İlişki


model User {
  id     Int     @id @default(autoincrement())
  email  String  @unique
  profile Profile?
}

model Profile {
  id     Int   @id @default(autoincrement())
  bio    String
  user   User  @relation(fields: [userId], references: [id])
  userId Int   @unique
}

Yukarıda, her kullanıcının bir profilinin olduğu klasik bir Prisma ORM relations tanımı görülüyor.

One-to-Many (Bire-Çok) İlişki


model Post {
  id       Int      @id @default(autoincrement())
  title    String
  content  String
  user     User     @relation(fields: [userId], references: [id])
  userId   Int
}

model User {
  id    Int    @id @default(autoincrement())
  name  String
  posts Post[]
}

Burada bir kullanıcı birden fazla gönderiye (post) sahip olabilir; ilişkideki Post[] dizisi bunun göstergesidir.

Many-to-Many (Çoktan-Çoka) İlişki


model Student {
  id       Int       @id @default(autoincrement())
  name     String
  courses  Course[]
}

model Course {
  id        Int        @id @default(autoincrement())
  title     String
  students  Student[]
}

Bu many-to-many Prisma ORM relations örneğinde, hem bir öğrenci birden fazla kursa katılabilir hem de bir kursa birden fazla öğrenci kayıt olabilir.

Prisma ORM İlişkilerinin Kullanımı

İlişkili Verileri Sorgulama

Prisma ORM relations kullanırken ilişkili kayıtları çekmek oldukça pratiktir. Örnekte, kullanıcıları ve onların gönderilerini şu şekilde çekebilirsiniz:


const usersWithPosts = await prisma.user.findMany({
  include: {
    posts: true,
  },
});
console.log(usersWithPosts);

Bu sorgu ile her kullanıcı nesnesi ile birlikte ilişkili gönderiler de listelenir. Aynı mantık diğer ilişkiler için de geçerlidir.

Sonuç

Prisma ORM relations ve ilişkiler kavramı, veri modelinizi esnek ve güvenli tutmanın anahtarıdır. Doğru kurulan ilişkiler sayesinde veritabanında gezinme ve karmaşık sorguları yazma süreçleriniz hayli sadeleşir. Prisma ORM kullanarak gerek birebir, gerek bire-çok, gerekse çoktan-çoka ilişkileri kolayca tanımlayabilir, veri bütünlüğünü koruyabilirsiniz. Prisma ORM relations ve ilişkiler hakkındaki bu rehber ile daha verimli projelere imza atabilirsiniz.