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.
Varlık İlişki Diyagramı (ERD)
Section titled “Varlık İlişki Diyagramı (ERD)”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ı.