Relacionamento entre Tabelas com Prisma ORM
prisma
Quando estamos desenvolvendo aplicativos modernos, a organização e gestão dos dados são aspectos cruciais. O Prisma ORM é uma ferramenta poderosa que facilita a interação com bancos de dados em aplicativos Node.js e TypeScript que permite a definição de esquemas, a execução de consultas eficientes e o gerenciamento de relacionamentos entre tabelas de maneira simplificada.
A ideia desse artigo é explorar como definir e trabalhar com diferentes tipos de relacionamentos utilizando o Prisma ORM.

Tipos de Relacionamentos

No Prisma, podemos definir três tipos principais de relacionamentos entre tabelas:
  1. One-to-One (1:1)
  1. One-to-Many (1:N)
  1. Many-to-Many (M:N)

Exemplos Práticos

Para ilustrar cada tipo de relacionamento, vamos considerar um exemplo de um sistema de blog com as tabelas User, Post e Category.

1. One-to-One (1:1)

Um relacionamento one-to-one ocorre quando uma tabela possui um registro que está associado a um único registro de outra tabela. Por exemplo, cada usuário pode ter um perfil associado.
Modelo de exemplo:
model User { id Int @id @default(autoincrement()) email String @unique name String? profile Profile } model Profile { id Int @id @default(autoincrement()) bio String user User @relation(fields: [user_id], references: [id]) user_id Int @unique }
Neste exemplo, a tabela User está relacionada à tabela Profile por meio da chave estrangeira userId, que é única, indicando um relacionamento one-to-one.

2. One-to-Many (1:N)

Um relacionamento one-to-many ocorre quando um registro em uma tabela está associado a múltiplos registros em outra tabela. Por exemplo, um usuário pode criar vários posts.
Modelo de exemplo:
model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] } model Post { id Int @id @default(autoincrement()) title String content String author User @relation(fields: [author_id], references: [id]) author_id Int }
Aqui, a tabela User pode ter múltiplos posts associados, enquanto cada post tem um único autor, representado pela chave estrangeira authorId na tabela Post.

3. Many-to-Many (M:N)

Um relacionamento many-to-many ocorre quando múltiplos registros em uma tabela podem estar associados a múltiplos registros em outra tabela. E, no Prisma, essas relações podem ser implícitas ou explícita, mas o recomentado é o uso das relações implícitas a qual vamos focar nesse artigo. Vamos ver um exemplo, um post pode pertencer a várias categorias e uma categoria pode ter vários posts.
Modelo de exemplo:
model Post { id Int @id @default(autoincrement()) title String content String categories Category[] } model Category { id Int @id @default(autoincrement()) name String posts Post[] }
Bem simples não é? Embora a tabela de relacionamento exista no banco de dados, ela não está “explicitamente” no esquema Prisma, porém o prisma gerencia essa tabela de qualquer maneira.

Operações CRUD (Create, Read, Update e Delete) com Relacionamentos

Uma vez definidos os relacionamentos, o Prisma facilita a criação, leitura, atualização e exclusão (CRUD) de dados relacionados.

Criar e Conectar Registros

Criar um usuário com um perfil:
const newUser = await prisma.user.create({ data: { email: "john.doe@example.com", profile: { create: { bio: "Software Developer", }, }, }, });
Criar um post e associar a um usuário existente:
const newPost = await prisma.post.create({ data: { title: "Prisma ORM", content: "This is the content of the first post.", author: { connect: { id: 1 }, }, }, });
Criar um post e associar a várias categorias:
const newPostWithCategories = await prisma.post.create({ data: { title: "PostgreSQL", content: "Content of the new post.", categories: { connect: [{ id: 1 }, { id: 2 }], }, }, });

Consultar Dados com Relacionamentos

Buscar um usuário com seus posts:
const userWithPosts = await prisma.user.findUnique({ where: { id: 1 }, include: { posts: true }, });
Buscar posts com categorias:
const postsWithCategories = await prisma.post.findMany({ include: { categories: true }, });
 
O Prisma ORM simplifica significativamente a gestão de relacionamentos entre tabelas em bancos de dados relacionais. Através de sua sintaxe clara e intuitiva, é possível definir esquemas robustos e realizar operações CRUD de forma eficiente e segura. Com os exemplos que apresentamos aqui, você deve estar preparado para implementar e gerenciar relacionamentos em seu próprio projeto utilizando o Prisma.
 

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA