muzibu_corporate_accounts ├── id (PK) ├── user_id -- Bu kaydın sahibi user ├── parent_id -- NULL = kurum, değer = üst kuruma bağlı üye ├── corporate_code -- Davet kodu (sadece kurum) ├── company_name -- Şirket adı (sadece kurum) ├── max_members -- Üye limiti (sadece kurum) ├── billing_email -- Fatura e-posta (sadece kurum) ├── billing_address -- Fatura adresi (sadece kurum) ├── tax_number -- Vergi no (sadece kurum) └── is_active -- users tablosu HİÇ DEĞİŞMEZ (universal)
| id | user_id | parent_id | corporate_code | company_name | Açıklama |
|---|---|---|---|---|---|
| 1 | 5 | NULL | ABC123 | Acme Ltd | ← Kurum sahibi |
| 2 | 10 | 1 | NULL | NULL | ← Üye (Acme) |
| 3 | 12 | 1 | NULL | NULL | ← Üye (Acme) |
| 4 | 20 | NULL | XYZ789 | Beta Corp | ← Başka kurum |
users -- Universal tablo BOZULUR! ├── ... (mevcut alanlar) ├── corporate_account_id -- Tüm tenant larda gözükür! └── parent_user_id -- Tüm tenant larda gözükür! corporate_accounts ├── id ├── user_id (sahip) └── ... (kurum bilgileri)
WHERE user_id = ? AND parent_id IS NULL
WHERE user_id = ? AND parent_id IS NOT NULL
WHERE parent_id = ? (kurum_id)
SELECT * FROM accounts WHERE id = (SELECT parent_id FROM accounts WHERE user_id = ?)
WHERE parent_id IS NULL AND billing_email IS NOT NULL
SELECT COUNT(*) FROM accounts WHERE parent_id = ?
1. Kodu bul: WHERE corporate_code = ? AND parent_id IS NULL
2. Üye kaydı oluştur: INSERT (user_id, parent_id)
| Özellik | Yaklaşım A | Yaklaşım B |
|---|---|---|
| Toplu Fatura Ödeme | ✓ Kolay - tek tablo sorgusu | △ JOIN gerekir |
| Kurumsal Logo | ✓ logo_path kolonu ekle | ✓ Aynı |
| Alt Departmanlar | ✓ parent_id ile hiyerarşi | ✗ Karmaşık |
| Üye Rolleri (Admin/User) | ✓ role kolonu ekle | △ Ayrı tablo lazım |
| Kurumsal Plan/Abonelik | ✓ subscription_id ekle | ✓ Aynı |
| Fatura Geçmişi | ✓ corporate_invoices tablosu | ✓ Aynı |
| Üye Davet Geçmişi | ✓ invited_at, invited_by ekle | △ Karmaşık |
| Users Universal Kalır | ✓ Evet | ✗ Hayır |
Yaklaşım A (Self-Referencing) tercih edilmeli çünkü:
Migration Güncelleme:
Mevcut muzibu_corporate_accounts tablosuna parent_id kolonu ekle,
users.corporate_account_id kolonunu kaldır.