Üniversite yıllarındaki ilk stajımda beni eski bir arşiv odasına sokmuşlardı. Binlerce klasör vardı ama hiçbirinde etiket, indeks veya raf numarası yoktu. Şefim gelip “Bana 1986 yılına ait mavi kapaklı inşaat ruhsatını bul” dediğinde yaşadığım o panik anını hiç unutmam. Nereden başlayacağımı bilemeden saatlerce kağıt yığınları arasında boğulmuştum. İşte bugün, veritabanı şemanızı net bir şekilde tanımlamadan AI’dan kod yazmasını istediğinizde, yapay zekanın o karanlık işlemcilerinde hissettiği şey tam olarak o arşiv odasındaki çaresizliktir.
Vibe Coder dünyasında, kod bir yük olabilir ama veri şeması (database schema) kutsaldır. Şema, uygulamanızın anayasasıdır ve yapay zekanın halüsinasyon görmesini engelleyen yegane pusuladır.
Şema-Öncelikli (Schema-First) Geliştirme Yaklaşımı
Geleneksel yazılımda bazen önce arayüzü çizer, sonra “Buna uygun bir veritabanı tasarlarız” derdik. AI çağında bu sıralama ölümcüldür. Yapay zeka modelleri (özellikle Claude 3.5 Sonnet veya GPT-4o), mantık kurmaktan ziyade desen tanıma (pattern matching) konusunda ustadır.
Eğer projenize başlarken veritabanı mimarinizi net bir şekilde ortaya koyarsanız, yapay zeka uygulamanın tüm iş mantığını (business logic) bu yapı üzerinden saniyeler içinde kurgular. Çünkü AI, tablolar arasındaki ilişkileri (bire-çok, çoka-çok) okuduğunda sizin ona sayfa sayfa anlatacağınız PRD (Ürün Gereksinim) dokümanlarından çok daha fazlasını anlar.
Peki Vibe Coder bu pusulayı AI’a nasıl verir?
1. Prisma veya Drizzle Gibi ORM’lerin Gücü
Modern Vibe Coder’lar veritabanı şemalarını uzun SQL dosyaları yerine Prisma veya Drizzle gibi araçlarla tanımlamayı tercih eder. Özellikle schema.prisma dosyası, yapay zeka için bir ziyafettir. Bir User tablosu ile Post tablosu arasındaki ilişkiyi Prisma şemasında gören AI, arayüzde “Kullanıcının gönderilerini listele” dediğinizde hangi sorguyu atacağını, arayüzü nasıl çizeceğini ve state yönetimini nasıl yapacağını anında bilir.
2. Bağlam Penceresinin (Context Window) Merkezine Şemayı Koymak
Cursor veya Windsurf gibi AI-Native IDE’ler kullanırken yapmanız gereken ilk şey, veritabanı şemanızı sistemin ana bağlamı (context) olarak işaretlemektir. Bir frontend bileşeni yazdırırken bile AI’a “Mevcut veritabanı şemamıza göre bu formu oluştur” direktifini vermek zorundasınız. Şema orada durdukça, AI asla kafasından “age” adında bir sütun uydurmaz, şemadaki “birth_date” sütununu kullanarak yaşı hesaplaması gerektiğini anlar.
3. “Kaynağın Tek Doğrusu” (Single Source of Truth) Kuralı
Eğer uygulamanızda bir şeyler ters gidiyorsa, veritabanı şemasında bir eksiklik vardır. AI kod yazarken tıkandığında ona kodu düzelttirmeye çalışmayın. Geri dönün, veritabanı şemanıza bakın. Eksik bir ilişki, yanlış bir veri tipi veya düşünülmemiş bir ara tablo AI’ı spagetti kod üretmeye itmiş olabilir. Şemayı düzeltin ve AI’a “Şema güncellendi, kodu buna göre yeniden yapılandır” deyin.
Özetle, Vibe Coder sentaks yazmaktan kaçınır ama mimariyi ince ince işler. O mimarinin kalbi de veritabanı şemasıdır. AI’a mükemmel bir şema verin, o size mükemmel bir ürün inşa etsin.
Bir sonraki bölümde, bu şemaları ve mimarileri içine atıp harikalar yaratacağımız modern silah depomuzu, yani AI-Native IDE’leri (Cursor, Windsurf) (Bölüm 3.1) derinlemesine inceleyeceğiz.