VTYS Kod Arşivi
Her konu için 10+ Farklı Senaryo. Toplam 50x Daha Fazla İçerik.
Hafta 1: Varlık & İlişki Tipleri (ER Diagram)
Veritabanı tasarımının temeli. Hangi tablo diğerine nasıl bağlanır?
1.1 İlişki Senaryoları Kütüphanesi
1'e 1 (One-to-One) Örnekleri
- Vatandaş - TC Kimlik: Bir kişinin bir TC'si olur.
- Müdür - Okul: Bir okulun bir müdürü olur.
- CEO - Şirket: Bir şirketin tek CEO'su olur.
- Hasta - Dosya: Hastanın o anki aktif dosyası tektir.
1'e Çok (One-to-Many) Örnekleri
- Anne - Çocuk: Bir annenin çok çocuğu olabilir.
- Müşteri - Sipariş: Müşteri çok sipariş verebilir.
- Yazar - Kitap: Bir yazar çok kitap yazabilir.
- Kategori - Ürün: Bir kategoride çok ürün olur.
Çok'a Çok (Many-to-Many) Örnekleri
Arada mutlaka bağlantı tablosu gerekir!
- Öğrenci - Ders: Öğrenci çok ders alır, dersi çok öğrenci alır. (Tablo: OgrenciDers)
- Doktor - Hasta: Bir doktor çok hastaya bakar, hasta çok doktora gider. (Tablo: Randevular)
- Oyuncu - Film: (Tablo: FilmEkibi)
Zayıf Varlık (Weak Entity)
Kendi başına var olamayan varlık.
- Oda: Otel olmadan oda olamaz. (PK: OtelID + OdaNo)
- Fatura Kalemi: Fatura olmadan satır olamaz.
1.2 Tanımlar
Varsayılan database
MasterDB
Sistem üzerinde kullanıcıların açmış olduğu database’lerin listesini, yine kullanıcı tarafından veya sistem tarafından belirlenen login bilgileri gibi bir çok veriyi saklar ve yönetir.
MsDB
Job : Bizim belirttiğimiz zaman aralıklarında çalışan ve kendisine atanmış görevleri yerine getiren bir mekanizmadır.
TempDB
Geçici olarak sistem veya kullanıcı objelerini saklayabilir. Bu objeler , tablo, stored procedur vs. olabilir.
ModelDB
Yeni açılan tüm veri tabanlarına modellik eder. Yani SQL server üzerinden açmış olduğumuz tüm veri tabanları model veri tabanının birebir kopyasıdır.
1.3 GLOBAL SENARYO: E-Ticaret Veritabanı Mimarisi
Gerçek hayatta bu ilişkiler nasıl kurulur? İşte "Hepsiburada/Trendyol" benzeri bir yapının mimarisi:
Hafta 2: Tablo Oluşturma (DDL)
CREATE TABLE ve ALTER TABLE için tüm olasılıklar.
2.1 Constraint (Kısıtlama) Arşivi
Verinizi koruyan zırhlar. Her biri için ayrı örnek:
1. PRIMARY KEY (Kimlik)
Tablonun kalbi. Tekrarlanamaz, NULL olamaz.
2. FOREIGN KEY (Bağlantı)
Başka tabloya referans verir. Olmayan kategori girilemez.
3. UNIQUE (Tekillik)
Aynı mail ile ikinci üye olamaz.
4. CHECK (Kontrol)
Fiyat eksi girilemez. Mantık kontrolü.
5. DEFAULT (Varsayılan)
Veri girilmezse otomatik 'Aktif' olsun.
6. NOT NULL (Zorunluluk)
Bu alan boş bırakılamaz.
2.2 Tam Donanımlı Tablo Örneği
2.3 İleri Düzey Senaryolar (Hazine Sandığı)
Composite Primary Key (Çift Anahtar)
Tarih Kontrolü (Check Constraint)
Dinamik Varsayılan (Default)
2.4 GLOBAL SENARYO: "Büyük E-Ticaret" Tablo Kurulumu
Tek tek kolon oluşturmak kolaydır. Ama ilişkili tabloları doğru sırayla ve constraint'lerle kurmak mühendislik ister.
Hafta 3: Veri İşleme (DML)
Insert, Update, Delete, Select. Binbir türlü hali.
3.1 INSERT (Ekleme) Varyasyonları
3.2 SELECT (Sorgulama) Arsenaliniz
Temel Filtreler
Aralık (Range)
Benzerlik (Like)
Liste (In)
Sıralama (Order By)
Limit (Top)
3.3 DML Ustalık Sınıfı
CASE WHEN ile Akıllı SELECT
DELETE with JOIN (İlişkisel Silme)
UPDATE with FROM (Toplu Zam)
3.4 GLOBAL SENARYO: Günlük Operasyonlar (Full Cycle)
Bir e-ticaret sitesinin bir gün içinde çalıştırdığı SQL komutları zinciri:
Hafta 4: Tablo Birleştirme (JOIN)
İlişkisel veritabanının gücü. Her JOIN türü için 4'er farklı senaryo.
4.1 INNER JOIN (Kesişim) Senaryoları
Sadece her iki tabloda da eşleşen verileri getirir. "Eksik veri istemiyorum" modudur.
4.2 LEFT JOIN (Koruyucu) Senaryoları
Sol tablodaki (FROM) her şeyi getir, sağda karşılığı yoksa NULL bas. "Veri kaybetme" modudur.
4.3 Sık Kullanılan JOIN Kalıpları
Gerçek hayatta en çok karşınıza çıkacak senaryolar.
Satışı Olmayan Ürünleri Bul (LEFT JOIN)
Hem Kategori Hem Marka Bilgisi (Multi Join)
4.4 JOIN Ustalık Sınıfı (Nadir ama Kritik)
SELF JOIN (Kendine Referans)
CROSS JOIN (Kartezyen Çarpımı)
FULL OUTER JOIN (Tam Birleşme)
4.3 GLOBAL SENARYO: "THE BOSS REPORT" (Yönetici Raporu)
Patron geldi ve şunu istedi: "Hangi müşteri, hangi kategoriden, ne zaman, kaç paralık alışveriş yapmış? Bana tek listede ver!" İşte JOIN sanatı burada başlar.
Hafta 5: Alt Sorgular (Subqueries)
Sorgu içinde sorgu yazmanın her yolu. Tekil, Liste, Tablo.
5.1 Temel Alt Sorgular (Scalar & List)
Örnek 1: Ortalama Üstü Fiyatlar
Tek bir değer döner (Scalar Subquery).
Örnek 2: En Pahalı Ürünün Detayı
Örnek 3: İstanbul'daki Çalışanlar
5.2 EXISTS vs IN (Performans Savaşı)
Mülakatların vazgeçilmez sorusu. Ne zaman hangisi kullanılır?
EXISTS (Varlık Kontrolü)
True/False döner. İlk eşleşmeyi bulunca durur. Büyük tablolarda çok hızlıdır.
NOT EXISTS (Olmayanları Bul)
Hiç satılmamış ürünleri bulmanın en performanslı/doğru yolu (NULL safe).
Örnek 4: Satış Yapmayan Personel
Ekstra Alt Sorgu Örnekleri
Maaşı Bölüm Ortalamasından Yüksek Olanlar
En Çok Satılan Ürünü Bul
5.2 EXISTS ve ANY/ALL Kullanımı
Daha performanslı ve esnek kontroller.
5.3 Subquery Ustalık Sınıfı
Derived Table (FROM İçinde Sorgu)
Subquery ile UPDATE (Bilinmeyen Değer)
Subquery ile INSERT (Veri Transferi)
5.4 GLOBAL SENARYO: FRAUD (Dolandırıcılık) Tespiti
Subquery'lerin en sık kullanıldığı yer: Veri madenciliği ve anomali tespiti.
Hafta 6: İndeksler (Indexes)
Arama hızını 100 katına çıkaran sihirli yapılar.
6.1 İndeks Tipleri ve Oluşturma
1. CLUSTERED INDEX (Fiziksel)
Veriyi diske bu sırayla yazar.
2. NON-CLUSTERED INDEX (Mantıksal)
Kitabın arkasındaki indeks gibidir.
3. UNIQUE INDEX (Benzersiz)
Aynı numaranın girilmesini engeller.
4. COMPOSITE INDEX (Çoklu)
İki kolona göre arama yapılırsa uçar.
Ekstra İndeks Senaryoları
Tarih Sorgusu Hızlandırma
Foreign Key İndeksleme
6.2 İndeks Bakım ve Yönetim
6.3 İndeks Ustalık Sınıfı
INCLUDE (Kapsamlı) Index
FILTERED (Filtreli) Index
FILL FACTOR (Doluluk Oranı)
6.4 GLOBAL SENARYO: Performans Logu (Tuning)
Bir DBA (Veritabanı Yöneticisi) bir sorguyu nasıl hızlandırır? İşte gerçek analiz süreci.
Hafta 7: Saklı Yordamlar (Procedures)
Veritabanını otomatize eden "Yemek Tarifleri" (Recipe Book).
7.1 Stored Procedure (Saklı Yordam) Tarifleri
Sık yapılan işleri paketleyin. Parametre verin, sonuç alın.
Ekstra Prosedür Örnekleri
Müşteri Bilgisi Güncelleme
Kategoriye Göre Ürün Sayısı
7.2 Trigger (Tetikleyici) Koleksiyonu
Tabloların üzerindeki görünmez bekçiler.
1. AFTER INSERT (Hoşgeldin)
2. AFTER DELETE (Yedekle)
Veri kaybını önler. "Ctrl+Z" tuşu gibidir.
3. INSTEAD OF DELETE (Koruma)
4. AFTER UPDATE (Tarihçe)
5. Stok Kontrol (Validasyon)
7.3/7.4 SP & Trigger Hazine Sandığı
DDL Trigger (Tablo Silinemez!)
Audit Trigger (Değişiklik Logu)
SP With Encryption (Şifreli Kod)
7.5 GLOBAL SENARYO: Banka Para Transferi (EFT/Havale)
Bir bankacılık uygulamasının en kritik prosedürü. Hata affetmez, işlem bütünlüğü (ACID) şarttır.
Hafta 8: Fonksiyonlar (Functions)
Kendi Excel formüllerinizi yaratın.
8.1 Scalar Function (Tek Değer) Senaryoları
8.2 Table-Valued Function (Tablo) Senaryoları
Parametre alabilen View gibi çalışır.
8.3 Fonksiyon Ustalık Sınıfı
Yaş Hesaplama (Scalar)
Schema Binding (Tabloyu Kilitleme)
8.4 GLOBAL SENARYO: Raporlama Araç Kutusu (Toolkit)
Her raporda tekrar tekrar yazılan kodları tek merkezde toplayın.
DEV ALTYAPI TAMAMLANDI
50'den fazla senaryo, yüzlerce satır kod örneği başarıyla yüklendi.