Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner

Veritabanı Tasarımının Temelleri ve Normalizasyon (1 Görüntüleyici)

Yan Yana Banner
Katılım
7 Nis 2025
Konular
367
Mesajlar
780
Çözümler
1
Tepkime puanı
121
Puan
93
Konum
İstanbul
Web sitesi
forumagel.com
Bölüm 4: Veritabanı Tasarımının Temelleri ve Normalizasyon

İyi bir veritabanı tasarımı, uygulamanızın performansını, veri bütünlüğünü ve bakım kolaylığını doğrudan etkiler. Kötü tasarlanmış bir veritabanı, veri tekrarına, tutarsızlıklara ve zamanla performansı düşüren sorunlara yol açabilir. Veritabanı tasarımında temel amaç, veriyi mantıksal ve düzenli bir şekilde depolamak, gereksiz tekrarı en aza indirmek ve veri bütünlüğünü sağlamaktır. Bu amaçla kullanılan temel yöntemlerden biri Normalizasyon'dur.

Normalizasyon Nedir?

Normalizasyon, ilişkisel veritabanı tasarımında kullanılan, veritabanı yapısını gereksiz veri tekrarını (redundancy) azaltmak ve veri bağımlılıklarını mantıksal bir düzene sokmak amacıyla belirli kurallara göre düzenleme işlemidir. Normalizasyon, veritabanını daha esnek, sürdürülebilir ve hataya açık olmayan bir yapıya kavuşturmayı hedefler. Bu süreçte farklı Normal Formlar (Normal Forms - NF) tanımlanmıştır. En yaygın olanları 1. Normal Form (1NF), 2. Normal Form (2NF) ve 3. Normal Form (3NF)'dur.

1. Normal Form (1NF)

Bir tablo 1. Normal Formdadır eğer:

  • Her hücrede sadece bir değer bulunur (atomik değerler).
  • Her sütunun belirli bir veri türü vardır.
  • Her satır benzersizdir (genellikle bir PRIMARY KEY ile sağlanır).
Başka bir deyişle, bir hücrede virgülle ayrılmış birden fazla değer veya tekrarlayan gruplar bulunmamalıdır.

Örnek (1NF'e Uygun Değil):

SiparisIDUrunlerMusteriAdi
101ÜrünA, ÜrünBAhmet
102ÜrünCAyşe

Bu tablo 1NF'e uygun değildir çünkü "Urunler" sütununda birden fazla değer içerebilen bir liste bulunmaktadır.

Örnek (1NF'e Uygun):

SiparisDetayIDSiparisIDUrunAdMusteriAdi
1101ÜrünAAhmet
2101ÜrünBAhmet
3102ÜrünCAyşe
(Not: Genellikle MusteriAdi yerine MusteriID kullanılır ve ayrı bir Musteriler tablosuna bağlanır, bu da sonraki normal formlara geçişi sağlar.)

2. Normal Form (2NF)

Bir tablo 2. Normal Formdadır eğer:

    1. Normal Formdadır.
  • Birincil anahtarın (Primary Key) tam olmayan bağımlılık içermeyen tüm anahtar olmayan (non-key) sütunlara sahiptir. Yani, anahtar olmayan hiçbir sütun, birleşik birincil anahtarın yalnızca bir kısmına bağlı olmamalıdır.
Örnek (2NF'e Uygun Değil):

SiparisDetayID (PK)SiparisIDUrunIDUrunAdUrunFiyatMiktar
1101A1ÜrünA102
2101B2ÜrünB201

Burada SiparisDetayID birincil anahtar olabilir. Ancak, UrunAd ve UrunFiyat sütunları sadece UrunID'ye bağlıdır, birincil anahtarın tamamına (SiparisDetayID) değil. Bu durum, aynı ürün bilgilerinin farklı sipariş detaylarında tekrarlanmasına yol açar.

Örnek (2NF'e Uygun - Tabloları Ayırma):

SiparisDetayları Tablosu:
SiparisDetayID (PK)SiparisIDUrunIDMiktar
1101A12
2101B21

Urunler Tablosu:
UrunID (PK)UrunAdUrunFiyat
A1ÜrünA10
B2ÜrünB20

Bu tasarımda UrunAd ve UrunFiyat, yalnızca UrunID'ye bağlı oldukları ayrı bir tabloya taşınmıştır.

3. Normal Form (3NF)

Bir tablo 3. Normal Formdadır eğer:

    1. Normal Formdadır.
  • Anahtar olmayan hiçbir sütun, başka bir anahtar olmayan sütuna geçişli bağımlılık (transitive dependency) içermez. Yani, anahtar olmayan bir sütun, birincil anahtar dışındaki başka bir sütuna bağlı olmamalıdır.
Örnek (3NF'e Uygun Değil):

MusteriID (PK)MusteriAdSehirSehirKodu
1AhmetAnkara06
2Ayşeİstanbul34

Burada SehirKodu sütunu, MusteriID'ye doğrudan bağlı değildir; Sehir sütununa bağlıdır. Bu bir geçişli bağımlılıktır (MusteriID -> Sehir -> SehirKodu). Bu durum, aynı şehir kodu bilgisinin birden fazla müşteri için tekrarlanmasına yol açar.

Örnek (3NF'e Uygun - Tabloları Ayırma):

Musteriler Tablosu:
MusteriID (PK)MusteriAdSehir
1AhmetAnkara
2Ayşeİstanbul

Sehirler Tablosu:
Sehir (PK)SehirKodu
Ankara06
İstanbul34

Bu tasarımda SehirKodu, Sehir'e doğrudan bağlı olduğu ayrı bir tabloya taşınmıştır.

Genel olarak, veritabanlarını en az 3NF'e kadar normalleştirmek iyi bir uygulama olarak kabul edilir. Daha yüksek normal formlar (BCNF, 4NF vb.) da vardır ve özel durumlarda gerekli olabilir.

İndeksleme (Indexing)

İyi bir tasarımın yanı sıra, veritabanı performansını artırmak için indeksleme kullanılır. İndeksler, kitapların arkasındaki fihristlere benzer. Belirli sütunlara indeks eklemek, veritabanı sisteminin sorguları çok daha hızlı çalıştırmasını sağlar, çünkü tüm tabloyu taramak yerine doğrudan ilgili verilere ulaşabilir. Ancak indeksler disk alanı kaplar ve veri ekleme/güncelleme işlemlerini yavaşlatabilir, bu yüzden dikkatli kullanılmalıdır. Genellikle sık sorgulanan sütunlara ve JOIN işlemlerinde kullanılan sütunlara indeks eklenir.

Veritabanı tasarımı ve normalizasyon, sadece veri tekrarını azaltmakla kalmaz, aynı zamanda veri bütünlüğünü korumaya yardımcı olur. Çünkü bir veri sadece bir yerde saklandığında, güncelleme veya silme işlemlerinde tutarsızlık oluşma riski azalır.

Bu bölümde veritabanı tasarımının temel ilkelerine ve normalizasyona odaklandık. Sağlam bir veritabanı altyapısı oluşturmak için bu prensipleri anlamak çok önemlidir.

Bir sonraki bölümde, veritabanı kullanımında sık karşılaşılan hataları, bu hataların nedenlerini ve nasıl çözülebileceğini ele alarak pratik sorun giderme yöntemlerine değineceğiz.


 

Şu an konuyu görüntüleyenler

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Zevkini yansıtan rengi seç

Geniş / Dar görünüm

Temanızı geniş yada dar olarak kullanmak için kullanabileceğiniz bir yapıyı kontrolünü sağlayabilirsiniz.

Izgara görünümlü forum listesi

Forum listesindeki düzeni ızgara yada sıradan listeleme tarzındaki yapının kontrolünü sağlayabilirsiniz.

Resimli ızgara modu

Izgara forum listesinde resimleri açıp/kapatabileceğiniz yapının kontrolünü sağlayabilirsiniz.

Kenar çubuğunu kapat

Kenar çubuğunu kapatarak forumdaki kalabalık görünümde kurtulabilirsiniz.

Sabit kenar çubuğu

Kenar çubuğunu sabitleyerek daha kullanışlı ve erişiminizi kolaylaştırabilirsiniz.

Köşe kıvrımlarını kapat

Blokların köşelerinde bulunan kıvrımları kapatıp/açarak zevkinize göre kullanabilirsiniz.

Geri