← Kursa Dön
📄 Text · 35 min

E-R Diyagramları ve Veritabanı Tasarımı

Giriş — Tasarım Koddan Önce Gelir

Veritabanı tasarımı, SQL yazmadan önce yapılır. Tıpkı bir evin planını çizip sonra inşa etmek gibi. E-R (Entity-Relationship) diyagramları, veritabanının görsel haritasıdır.


E-R Diyagramı Bileşenleri

BileşenSembolAçıklama
Entity (Varlık)DikdörtgenTablo (customers, products)
Attribute (Özellik)ElipsSütun (first_name, price)
Relationship (İlişki)Eşkenar dörtgenTablolar arası bağ
Primary KeyAltı çiziliBenzersiz tanımlayıcı

Basitleştirilmiş E-R Notasyonu (Crow's Foot)

┌───────────┐         ┌──────────┐
│ customers │ 1     N │  orders  │
│───────────│─────────│──────────│
│ PK: id    │         │ PK: id   │
│ name      │         │ FK: cust │
│ email     │         │ date     │
└───────────┘         └──────────┘

Semboller:
──── 1 (bir)
────< N (çok, crow's foot)
──○  Opsiyonel (sıfır olabilir)
──|  Zorunlu (en az bir)

Veritabanı Tasarım Süreci

Adım 1: Gereksinimleri Topla

  • İş süreçlerini anla

  • "Sistem ne yapmalı?" sorusunu cevapla

  • Saklanması gereken verileri listele

Adım 2: Varlıkları Belirle

  • İsimler → genellikle varlık (müşteri, ürün, sipariş)

  • Her varlık bir tablo olur

Adım 3: Özellikleri Belirle

  • Her varlığın özelliklerini listele

  • Veri tiplerini ve kısıtlamaları düşün

  • Primary key belirle

Adım 4: İlişkileri Belirle

  • Varlıklar arası ilişkileri tanımla

  • İlişki türünü belirle (1:1, 1:N, N:M)

  • Foreign key'leri yerleştir

Adım 5: Normalize Et

  • 1NF → 2NF → 3NF adımlarını uygula

  • Anomalileri kontrol et

Adım 6: Denormalize Et (Gerekiyorsa)

  • Performans gereksinimlerini değerlendir

  • Hesaplanmış sütunlar, özet tablolar ekle


E-Ticaret Veritabanı Tasarım Örneği

┌────────────┐     ┌─────────────┐     ┌────────────┐
│ categories │ 1─N │  products    │ N─1 │ categories │
│────────────│     │─────────────│     │ (self-ref)  │
│ PK: id     │     │ PK: id      │     └────────────┘
│ name       │     │ FK: cat_id  │
│ FK: parent │     │ name, price │
└────────────┘     │ stock       │
                   └──────┬──────┘
                          │ 1
                          │
                          │ N
                   ┌──────┴──────┐
                   │ order_items  │
                   │─────────────│
                   │ PK: id      │
┌────────────┐     │ FK: order   │
│ customers  │ 1─N │ FK: product │
│────────────│     │ qty, price  │
│ PK: id     │     └──────┬──────┘
│ name       │            │ N
│ email      │            │
│ city       │     ┌──────┴──────┐
└────────┬───┘     │   orders     │
         │ 1       │─────────────│
         └─────N───│ PK: id      │
                   │ FK: cust_id │
                   │ date, total │
                   │ status      │
                   └─────────────┘

Tasarım Araçları

AraçAçıklama
MySQL WorkbenchÜcretsiz, EER diagram + forward/reverse engineering
dbdiagram.ioWeb tabanlı, DSL ile hızlı diagram
draw.ioGenel amaçlı, E-R şablonları var
DBeaverE-R diagram görselleştirme
LucidchartProfesyonel diagram aracı

Best Practices

  1. İsimlendirme tutarlılığı: snake_case, İngilizce, çoğul tablo isimleri

  2. Her tabloda surrogate PK: id INT AUTO_INCREMENT PRIMARY KEY

  3. Foreign key'leri explicit tanımla: Veri bütünlüğü garanti altında

  4. Tarih sütunları ekle: created_at, updated_at her tabloda olmalı

  5. Soft delete düşün: is_active veya deleted_at sütunu

  6. Belgelendirme: E-R diyagramını güncel tut


Özet

  • E-R diyagramları veritabanı yapısının görsel haritasıdır

  • Tasarım süreci: gereksinimler → varlıklar → özellikler → ilişkiler → normalizasyon

  • Crow's foot notasyonu ilişki türlerini gösterir

  • Tasarım koddan önce gelir — düzeltmesi çok daha ucuzdur

  • MySQL Workbench, dbdiagram.io gibi araçlar süreci kolaylaştırır