Tüm dersler
YBS 1. sınıf · Veri Tabanına Giriş · Ünite 7

Uygulamalar

Fakülte veri tabanında tablo ilişkileri ve çözümlü SQL soruları, Gelecek Sepeti e-ticaret uygulamasında JOIN, GROUP BY ve HAVING, SATIŞ veri tabanının SQL Server'da kurulması.

Bu ünite önceki ünitelerde öğrenilenleri üç uygulama üzerinde bir araya getirir: tasarımı incelemek, tabloları kurmak ve gerçek sorulara SQL ile cevap aramak.

Uygulama 1: Fakülte veri tabanı

Fakülte veri tabanında dört tablo vardır: Bolum, Ogrenci, Dersler ve Dersi_Alanlar.

  • Bolum – Ogrenci (1–N): Bir bölümde birçok öğrenci okur; her öğrenci tek bir bölüme bağlıdır. Bu yüzden Ogrenci tablosunda BolumId bulunur.
  • Bolum – Dersler (1–N): Bir bölüm birçok ders açar; her ders tek bir bölüme aittir.
  • Ogrenci – Dersler (N–M): Bir öğrenci birçok ders alır, bir dersi birçok öğrenci alır. Bu ilişkiyi Dersi_Alanlar köprü tablosu kurar.

Çözülen sorulardan çıkan önemli noktalar:

  • Başka bir tabloda kayıtları bulunan dersleri silmeye çalışmak yabancı anahtar hatası verir; önce Dersi_Alanlar'daki bağlı kayıtlar silinmelidir.
  • Var olmayan bir bölüm numarasıyla ders eklemek istenirse yabancı anahtar kısıtı kaydı reddeder.
  • ALTER TABLE Bolum DROP COLUMN BolumAdi; komutu satırları değil, yalnızca sütunu ve içindeki verileri siler.
  • UPDATE … WHERE DersKodu LIKE 'ABM%' komutu ABM ile başlayan tüm dersleri etkiler.

Uygulama 2: Gelecek Sepeti

Gelecek Sepeti adlı bir e-ticaret sitesinin Musteriler, Urunler ve Siparisler tabloları vardır. Siparisler tablosu müşteri ile ürün arasındaki köprüdür; müşteri ve ürün adını birlikte görmek için iki INNER JOIN gerekir. Kodlar, program kurmadan db-fiddle.com üzerinde denenebilir.

  • Kategori başına satış adedi: Siparisler ile Urunler birleştirilir, GROUP BY Kategori ile SUM(Adet) alınır.
  • Toplam harcaması 10.000 TL'yi aşan müşteriler: SUM(Adet * BirimFiyat) her müşteri için hesaplanır, HAVING ile filtrelenir. Örnekte Ahmet 23.000 TL, Ayşe 15.450 TL harcamıştır.
  • Belirli bir kategoriden alışveriş yapanlar: WHERE Kategori = 'Eğitim' ile süzülür; DISTINCT aynı müşterinin adının tekrar etmesini önler.
  • Hiç sipariş vermemiş müşterileri de listelemek için Musteriler tablosu solda olacak biçimde LEFT JOIN kullanılır.

Uygulama 3: SATIŞ veri tabanının kurulması

Normalizasyon ünitesinde üç tabloya ayrılan SATIŞ tablosu SQL Server'da kurulur: Sehirler (sehir_kodu, sehir_adi), Musteriler (musteri_no, sehir_kodu) ve Gonderiler (musteri_no, gonderi_no, miktar). Gonderiler tablosunun birincil anahtarı (musteri_no, gonderi_no) bileşik anahtarıdır, çünkü aynı gönderi numarası farklı müşterilerde tekrar edebilir.

Yabancı anahtar hatası almamak için veriler önce ana tabloya, sonra ona bağlı tabloya girilir: Sehirler → Musteriler → Gonderiler. Son olarak SSMS'te Database Diagrams klasöründen yeni bir veri tabanı diyagramı oluşturulur; FOREIGN KEY tanımları sayesinde tablolar arasındaki ilişki çizgileri kendiliğinden çizilir. Anahtar simgesi 1 tarafını, sonsuz simgesi N tarafını gösterir.

Sponsorlu alan

Bu sayfa, Yeşim Ülgen Sönmez · Yunus Emre Demir tarafından hazırlanan ders notunun özetidir. Şekiller, tablolar ve çözümlü örneklerin tamamı için ünitenin PDF notuna bak.