Kurumsal Hesap Yapısı - Yaklaşım Analizi

Tarih: 2025-11-24 | Platform: Muzibu | Users tablosu universal kalmalı
ÖNERİLMEZ Yaklaşım B: Users Tablosuna Kolon Ekleme
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)

✓ Avantajlar

  • Basit JOIN
  • Direkt ilişki

✗ Dezavantajlar

  • Users tablosu bozulur
  • Tüm tenant larda gereksiz kolonlar
  • Universal yapı kaybedilir
  • Tenant-specific kod users a sızar
  • Migration karmaşası

Kullanım Senaryoları (Yaklaşım A)

1. Kullanıcı Kurum Sahibi mi?

WHERE user_id = ? AND parent_id IS NULL

2. Kullanıcı Bir Kuruma Üye mi?

WHERE user_id = ? AND parent_id IS NOT NULL

3. Kurumun Tüm Üyelerini Listele

WHERE parent_id = ? (kurum_id)

4. Üyenin Kurum Bilgilerini Al

SELECT * FROM accounts WHERE id = (SELECT parent_id FROM accounts WHERE user_id = ?)

5. Toplu Fatura Listesi (Tüm Kurumlar)

WHERE parent_id IS NULL AND billing_email IS NOT NULL

6. Bir Kurumun Toplam Üye Sayısı

SELECT COUNT(*) FROM accounts WHERE parent_id = ?

7. Davet Koduyla Katılma

1. Kodu bul: WHERE corporate_code = ? AND parent_id IS NULL
2. Üye kaydı oluştur: INSERT (user_id, parent_id)

Gelecekte Eklenebilecek Özellikler

Ö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

Sonuç ve Öneri

Yaklaşım A (Self-Referencing) tercih edilmeli çünkü:

Sonraki Adım

Migration Güncelleme: Mevcut muzibu_corporate_accounts tablosuna parent_id kolonu ekle, users.corporate_account_id kolonunu kaldır.

HTMLEOF'