Conversor de SQL DDL a Prisma Schema (Modelos, Relaciones y Enums) Guía para Desarrolladores
Transforme instrucciones SQL CREATE TABLE DDL en esquemas limpios para Prisma ORM con modelos, relaciones, atributos de campo y enums.
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
enum OrderStatus {
PENDING
PROCESSING
PAID
SHIPPED
DELIVERED
CANCELLED
}
enum UserRole {
ADMIN
CUSTOMER
MERCHANT
}
model User {
id String @id @default(uuid()) @db.Uuid
email String @unique @db.VarChar(255)
fullName String? @map("full_name") @db.VarChar(150)
role UserRole @default("CUSTOMER")
isVerified Boolean @default(false) @map("is_verified")
metadata Json?
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz
userProfile UserProfile?
orders Order[]
@@map("users")
}
model UserProfile {
id String @id @default(uuid()) @db.Uuid
userId String @unique @map("user_id") @db.Uuid
avatarUrl String? @map("avatar_url") @db.VarChar(500)
phoneNumber String? @map("phone_number") @db.VarChar(32)
shippingAddress String? @map("shipping_address") @db.Text
taxIdentifier String? @map("tax_identifier") @db.VarChar(64)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("user_profiles")
}
model Product {
id Int @id @default(autoincrement())
sku String @unique @db.VarChar(64)
title String @db.VarChar(200)
description String? @db.Text
unitPrice Decimal @default(0.00) @map("unit_price") @db.Decimal(12, 2)
inventoryCount Int @default(0) @map("inventory_count")
isActive Boolean @default(true) @map("is_active")
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
orderItems OrderItem[]
@@index([sku])
@@map("products")
}
model Order {
id String @id @default(uuid()) @db.Uuid
customerId String @map("customer_id") @db.Uuid
orderNumber String @unique @map("order_number") @db.VarChar(64)
status OrderStatus @default("PENDING")
totalAmount Decimal @default(0.00) @map("total_amount") @db.Decimal(12, 2)
taxAmount Decimal @default(0.00) @map("tax_amount") @db.Decimal(10, 2)
shippingNotes String? @map("shipping_notes") @db.Text
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz
customer User @relation(fields: [customerId], references: [id], onDelete: Restrict)
orderItems OrderItem[]
@@index([status])
@@map("orders")
}
model OrderItem {
id Int @id @default(autoincrement())
orderId String @map("order_id") @db.Uuid
productId Int @map("product_id")
quantity Int @default(1)
unitPrice Decimal @map("unit_price") @db.Decimal(12, 2)
subtotal Decimal @db.Decimal(12, 2)
order Order @relation(fields: [orderId], references: [id], onDelete: Cascade)
product Product @relation(fields: [productId], references: [id], onDelete: Restrict)
@@unique([orderId, productId])
@@map("order_items")
}Privacidad 100% del Lado del Cliente
Sin envíos a servidores ni conexiones a bases de datos. Todo el análisis de SQL y la compilación del esquema de Prisma se ejecutan en el navegador.
Resolución Inteligente de Relaciones y Claves
Detecta claves foráneas individuales y compuestas, generando directivas @relation de Prisma, referencias bidireccionales y restricciones @@id / @@unique.
Motor DDL Multidialecto
Compatible con PostgreSQL, MySQL, SQLite y SQL Server, incluyendo secuencias SERIAL, UUIDs por defecto, tipos nativos, índices y enums.