Bloga dön
Veritabanı6 dk

MySQL Veritabanı Tasarımı: İlişkiler, İndeksler ve Yedekleme Rehberi

Sağlam MySQL tasarımı için tablo ilişkileri, veri tipleri, kısıtlar, transaction, indeks, sorgu analizi, migration ve yedekleme ilkelerini öğrenin.

29.08.2026

MySQL'de performans ve veri güvenilirliği, sorgu yazmadan önce başlayan veri modeli kararlarına bağlıdır. Doğru tablo ilişkileri, kısıtlar ve indeksler uygulama kodunun yükünü azaltır; yedekleme ve migration disiplini değişiklikleri yönetilebilir kılar. Önce iş kavramlarını tanımlayın Müşteri, ürün, sipariş, stok hareketi veya servis kaydı gibi kavramları ve ilişkileri yazın. Ekran alanlarını doğrudan tabloya kopyalamak yerine verinin anlamını modelleyin. Her tablonun kararlı birincil anahtarı olmalı; yabancı anahtar, UNIQUE ve NOT NULL kısıtları veri bütünlüğünü desteklemelidir. Veri tipi seçimi Para değerleri için FLOAT yerine DECIMAL, tarih ve saat için metin yerine uygun tarih tipleri kullanılmalıdır. Metin uzunluğu, karakter seti ve karşılaştırma kuralları ihtiyaca göre seçilir. Saat dilimi yaklaşımı sistem genelinde belirlenmelidir. Transaction ne zaman gerekir? Birden fazla adım tek iş sonucunu oluşturuyorsa transaction kullanılmalıdır. Sipariş satırı oluşurken stok hareketi ve ödeme kaydı birlikte tamamlanmalıdır. Hata durumunda tüm adımlar geri alınmalı, kısmi kayıt bırakılmamalıdır. Uzun transaction kilit süresini artırabileceğinden kapsam kısa tutulmalıdır. İndeks nasıl seçilir? İndeks her sorguyu hızlandıran sihirli çözüm değildir; yazma maliyeti ve depolama kullanır. WHERE, JOIN ve ORDER BY alanları gerçek sorgular üzerinden değerlendirilmelidir. Birleşik indekslerde kolon sırası önemlidir. EXPLAIN ile sorgu planı incelenmeden indeks eklenmemelidir. N+1 ve gereksiz sorgular Liste içindeki her kayıt için ayrı sorgu çalıştırmak işlem sayısını hızla artırır. Uygun JOIN, toplu sorgu veya kontrollü ön yükleme kullanılmalıdır. Yalnızca gereken kolonları seçmek, sayfalama yapmak ve ağır raporları operasyon sorgularından ayırmak performansı iyileştirir. Migration ve sürüm kontrolü Şema değişiklikleri kodla birlikte sürümlenmelidir. Her migration küçük, geri dönüşü düşünülmüş ve test edilmiş olmalıdır. Büyük tablo değişikliklerinde kilit süresi ve mevcut kayıtların dönüşümü planlanmalıdır. Canlı ortamda elle kolon değiştirmek izlenebilirliği bozar. Yedekleme ve güvenlik Yedek dosyasının oluşması geri yüklenebileceği anlamına gelmez. Saklama süresi, şifreleme, ayrı ortam kopyası ve düzenli geri yükleme testi gerekir. Uygulama hesabına yalnızca gereken yetkiler verilmeli; sorgular parametrik olmalıdır. Sık sorulan sorular Her tabloya indeks eklenmeli mi? Hayır. İndeks gerçek sorgu ihtiyacına göre eklenir ve ölçülür. Sonuç Sağlam MySQL sistemi doğru model, veritabanı seviyesinde bütünlük, ölçülmüş indeksler ve test edilmiş kurtarma planı üzerine kurulur. Performans sorunu çoğu zaman daha güçlü sunucudan önce veri modelinde çözülür.