Zum Hauptinhalt springen

Cursor Datenbankentwicklung: SQL, ORM und Prisma-Integration

Cursor Database Development

Die Datenbankentwicklung ist ein kritischer Bestandteil der modernen Softwareentwicklung, und die KI-Funktionen von Cursor können die Schema-Design, Abfrageschreibung und ORM-Integration erheblich beschleunigen. Dieser Leitfaden deckt praktische Workflows für SQL-Bearbeitung, ORM-Einrichtung, Migrationen und KI-gestützte Datenbankoptimierung ab.

Voraussetzungen​

Bevor Sie beginnen:

  • Cursor installiert (neueste Version empfohlen)
  • Datenbankserver läuft lokal oder ist remote erreichbar (PostgreSQL, MySQL oder SQLite)
  • Node.js installiert (für ORM-Tools)
  • Grundverständnis von SQL und Datenbankkonzepten

Einrichten von Datenbankprojekten in Cursor​

Projektstruktur​

Organisieren Sie Ihre datenbankbezogenen Dateien für optimalen KI-Kontext:

project/
prisma/
schema.prisma # Prisma-Schema
migrations/ # Migrationsdateien
src/
db/
connection.ts # Datenbankverbindung
queries/ # Rohe SQL-Abfragen
repositories/ # Datenzugriffsschicht
scripts/
seed.ts # Datenbank-Seeding
docker-compose.yml # Lokale Datenbank-Einrichtung

Projekt in Cursor öffnen​

cd ~/my-database-project
cursor .

SQL-Bearbeitung mit Cursor​

Komplexe Abfragen schreiben​

Cursor zeichnet sich durch die Generierung und Optimierung von SQL aus. Verwenden Sie natürliche Sprach-Prompts:

Schreibe eine PostgreSQL-Abfrage, um die Top 5 Kunden nach Gesamtbestellwert
in den letzten 30 Tagen zu finden, einschließlich Name, E-Mail und Gesamtausgaben.

Cursor generiert:

SELECT
c.id,
c.name,
c.email,
SUM(o.total_amount) AS total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY c.id, c.name, c.email
ORDER BY total_spent DESC
LIMIT 5;

Abfrageoptimierung​

Fügen Sie eine langsame Abfrage ein und bitten Sie Cursor, sie zu optimieren:

Diese Abfrage dauert auf einer Tabelle mit 1M Zeilen über 3 Sekunden. Optimiere sie:
[Abfrage einfügen]

Cursor schlägt Indizes, Abfrage-Neuschreibungen und erklärt die Leistungsverbesserungen.

SQL-Datei-Unterstützung​

Cursor bietet Syntaxhervorhebung und IntelliSense für .sql-Dateien:

  1. Erstellen Sie eine .sql-Datei
  2. Cursor aktiviert automatisch den SQL-Sprachmodus
  3. Verwenden Sie Ctrl+Space für die Autovervollständigung von Tabellen- und Spaltennamen
Pro-Tipp

Speichern Sie wiederverwendbare Abfragemuster in .sql-Dateien. Cursor indiziert sie und kann sie bei der Generierung neuer Abfragen referenzieren.

Prisma-Integration​

Prisma einrichten​

Initialisieren Sie Prisma in Ihrem Projekt:

npm install prisma @prisma/client
npx prisma init

Schema-Design mit KI​

Beschreiben Sie Ihr Datenmodell in natürlicher Sprache:

Entwerfe ein Prisma-Schema für eine E-Commerce-Anwendung mit:
- Benutzern (mit Rollen: admin, customer, seller)
- Produkten (mit Kategorien, Bestandsverfolgung)
- Bestellungen (mit Status, Versanddetails)
- Bewertungen (verknüpft mit Produkten und Benutzern)

Cursor generiert:

model User {
id Int @id @default(autoincrement())
email String @unique
name String
role Role @default(CUSTOMER)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt

orders Order[]
reviews Review[]
}

enum Role {
ADMIN
CUSTOMER
SELLER
}

model Product {
id Int @id @default(autoincrement())
name String
description String?
price Decimal @db.Decimal(10, 2)
inventory Int @default(0)
categoryId Int

category Category @relation(fields: [categoryId], references: [id])
reviews Review[]
orderItems OrderItem[]
}

model Category {
id Int @id @default(autoincrement())
name String @unique
products Product[]
}

model Order {
id Int @id @default(autoincrement())
status OrderStatus @default(PENDING)
total Decimal @db.Decimal(10, 2)
createdAt DateTime @default(now())
userId Int

user User @relation(fields: [userId], references: [id])
orderItems OrderItem[]
}

enum OrderStatus {
PENDING
PROCESSING
SHIPPED
DELIVERED
CANCELLED
}

model OrderItem {
id Int @id @default(autoincrement())
quantity Int
unitPrice Decimal @db.Decimal(10, 2)
orderId Int
productId Int

order Order @relation(fields: [orderId], references: [id])
product Product @relation(fields: [productId], references: [id])
}

model Review {
id Int @id @default(autoincrement())
rating Int
comment String?
createdAt DateTime @default(now())
userId Int
productId Int

user User @relation(fields: [userId], references: [id])
product Product @relation(fields: [productId], references: [id])

@@unique([userId, productId])
}

Migrationen generieren​

Nach Schema-Änderungen Migrationen generieren und anwenden:

npx prisma migrate dev --name add_user_roles

Verwenden Sie Cursor, um Migrationsdateien vor der Anwendung zu überprüfen:

Überprüfe diese Migrationsdatei auf potenziellen Datenverlust oder Probleme:
[Migrations.sql-Inhalt einfügen]

Prisma Client-Abfragen​

Generieren Sie typsichere Abfragen mit KI-Unterstützung:

Schreibe eine Prisma-Abfrage, um alle Bestellungen eines Benutzers einschließlich Produktdetails zu erhalten
const userOrders = await prisma.order.findMany({
where: { userId: 1 },
include: {
orderItems: {
include: {
product: {
select: {
name: true,
price: true,
},
},
},
},
},
orderBy: {
createdAt: 'desc',
},
});

TypeORM- und Sequelize-Workflows​

TypeORM-Einrichtung​

// src/db/data-source.ts
import { DataSource } from 'typeorm';
import { User } from './entities/User';
import { Order } from './entities/Order';

export const AppDataSource = new DataSource({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'user',
password: 'password',
database: 'myapp',
synchronize: false,
logging: true,
entities: [User, Order],
migrations: ['src/migrations/*.ts'],
});

Sequelize-Modelle​

// src/models/User.js
const { DataTypes } = require('sequelize');

module.exports = (sequelize) => {
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
isEmail: true,
},
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
tableName: 'users',
timestamps: true,
});

return User;
};

Datenbankschema-Visualisierung​

Prisma ERD verwenden​

Entity-Relationship-Diagramme generieren:

npx prisma generate --generator erd

Oder bitten Sie Cursor, ein visuelles Schema zu erstellen:

Erstelle ein Mermaid-ERD-Diagramm für das Prisma-Schema in diesem Projekt

KI-gestützte Abfrageoptimierung​

Abfrageleistung analysieren​

Teilen Sie Ihre Abfrage und den Ausführungsplan:

Diese Abfrage führt einen sequenziellen Scan durch. Wie kann ich Indizes hinzufügen, um sie zu optimieren?

EXPLAIN ANALYZE SELECT * FROM orders WHERE status = 'pending' AND created_at > '2024-01-01';

Cursor schlägt vor:

CREATE INDEX idx_orders_status_created_at ON orders(status, created_at);

Datenbankdesign-Review​

Bitten Sie Cursor, Ihr Schema nach Best Practices zu überprüfen:

Überprüfe dieses Datenbankschema auf:
1. Normalisierungsprobleme
2. Fehlende Indizes auf Fremdschlüsseln
3. Datentyp-Optimierungen
4. Potenzielle Parallelitätsprobleme

Docker Compose für lokale Entwicklung​

version: '3.8'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: dev
POSTGRES_PASSWORD: devpass
POSTGRES_DB: myapp
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data

mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: myapp
MYSQL_USER: dev
MYSQL_PASSWORD: devpass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql

volumes:
postgres_data:
mysql_data:

Häufige Datenbankaufgaben​

AufgabeCursor Prompt-Beispiel
Migration erstellen"Generiere eine Migration, um eine Soft-Delete-Spalte zur users-Tabelle hinzuzufügen"
Seed-Daten"Schreibe ein Seed-Skript, um die Datenbank mit 100 Testbenutzern zu füllen"
Backup-Abfrage"Schreibe einen pg_dump-Befehl, um nur die users- und orders-Tabellen zu sichern"
Verbindungspooling"Konfiguriere Verbindungspooling für eine Node.js-App mit 100 gleichzeitigen Benutzern"
Audit-Logging"Füge eine Audit-Log-Tabelle hinzu, die alle Änderungen an der orders-Tabelle verfolgt"

Datenbankprobleme debuggen​

Verbindungsprobleme​

Mein Prisma-Client kann keine Verbindung zu PostgreSQL herstellen. Hier ist meine Verbindungszeichenfolge und der Fehler:
[Fehler einfügen]

Migrationsfehler​

Wenn eine Migration fehlschlägt:

  1. Überprüfen Sie den Migrationsstatus:
npx prisma migrate status
  1. Bitten Sie Cursor, den Fehler zu analysieren und Korrekturen vorzuschlagen

  2. Lösen Sie Konflikte und markieren Sie gegebenenfalls als angewendet:

npx prisma migrate resolve --applied migration_name

Best Practices​

Sicherheit​

  • Datenbankanmeldeinformationen niemals in die Versionskontrolle committen
  • Umgebungsvariablen für Verbindungszeichenfolgen verwenden
  • SSL für Produktionsverbindungen aktivieren
  • Parametrisierte Abfragen verwenden, um SQL-Injection zu verhindern

Leistung​

  • Indizes auf häufig abgefragten Spalten hinzufügen
  • Verbindungspooling in der Produktion verwenden
  • Abfrageergebnis-Caching für leseintensive Workloads implementieren
  • Langsame Abfrage-Logs überwachen

Versionskontrolle​

# Database
*.db
*.sqlite
*.sqlite3
.env
.env.local
prisma/migrations/migration_lock.toml

Kurzreferenz​

AktionBefehl
Prisma-Client generierennpx prisma generate
Migrationen ausführennpx prisma migrate dev
Datenbank zurücksetzennpx prisma migrate reset
Prisma Studio öffnennpx prisma studio
Datenbank seedennpx prisma db seed
Schema formatierennpx prisma format

Verwandte Ressourcen​

Zuletzt aktualisiert: Juli 2025