Skip to content

Veritabanı Şeması & İlişkiler

Coursio PostgreSQL (Neon) tablo yapısı, ilişkisel model ve finansal mimari detayları.

Coursio, veritabanı katmanında PostgreSQL (Neon) ve Type-safe sorgular için Drizzle ORM kullanmaktadır. Sistem; eğitim içeriği, kullanıcı ilerlemesi ve karmaşık finansal (Stripe Connect & Affiliate) akışları yönetecek şekilde normalize edilmiştir.

Aşağıdaki diyagram, platformun kalbi olan ana tabloları ve aralarındaki yabancı anahtar (Foreign Key) ilişkilerini göstermektedir.

erDiagram
USER ||--o{ COURSE : "eğitmen olarak oluşturur"
USER ||--o{ ENROLLMENT : "öğrenci olarak kaydolur"
USER ||--o{ AFFILIATE_EARNING : "referans geliri kazanır"
USER ||--o{ PAYOUT_REQUEST : "ödeme talep eder"
COURSE ||--o{ LESSON : "içerir"
COURSE ||--o{ COURSE_REVIEW : "yorum alır"
COURSE ||--o{ ENROLLMENT : "öğrenci barındırır"
COURSE }o--|| PRICE_TIER : "bir fiyat katmanına bağlıdır"
PRICE_TIER ||--o{ TIER_PRICES : "ülkelere göre fiyatlandırılır"
ENROLLMENT ||--|| INVOICE : "bir fatura oluşturur"
BUNDLE ||--o{ COURSE : "birden fazla kursu paketler"
USER {
uuid id PK
string email
string stripe_connect_id
string country
string manual_payout_details
boolean is_instructor
}
COURSE {
uuid id PK
string title
string slug
uuid instructor_id FK
uuid price_tier_id FK
string status "draft/published"
}
ENROLLMENT {
uuid id PK
uuid user_id FK
uuid course_id FK
timestamp created_at
}
TIER_PRICES {
uuid id PK
uuid tier_id FK
string currency "usd/try/eur"
decimal amount
}
## İlgili Dosyalar
- `app/db/schema.ts` — Drizzle şema; tüm tablolar ve ilişkiler.
- `app/db/index.ts` — getDb, getDbUrl; Neon/Hyperdrive bağlantısı.
- `drizzle.config.ts` — Drizzle Kit (migration) yapılandırması.
- `drizzle/` — SQL migration dosyaları.