data101

3. SQL Tasarım Kuralları ve Normalizasyon

Veritabanı tasarımı, verilerin etkin bir şekilde depolanması, yönetilmesi ve erişilmesi için kritik bir rol oynar. İyi bir veritabanı tasarımı, veri bütünlüğünü korur, performansı artırır ve bakım maliyetlerini azaltır. Bu bölümde, SQL tasarım kuralları ve normalizasyon kavramlarını detaylı bir şekilde ele alacağız.

3.1. Veritabanı Tasarım Kuralları

Veritabanı tasarımında dikkate alınması gereken temel kurallar şunlardır:

3.1.1. Veri Bütünlüğü

Veri bütünlüğü, verilerin doğruluğunu ve tutarlılığını korumak için uygulanan kısıtlamaları ifade eder. Veri bütünlüğünü sağlamak için aşağıdaki unsurlar kullanılır:

3.1.2. Şema Tasarımı

Şema tasarımı, veritabanındaki tabloların ve ilişkilerin nasıl yapılandırılacağını belirler. İyi bir şema tasarımı için aşağıdaki unsurlara dikkat edilmelidir:


3.2. Normalizasyon

Normalizasyon, veritabanı tasarımında verilerin organize edilmesi için kullanılan bir süreçtir. Amaç, veri tekrarlanmasını azaltmak, veri bütünlüğünü sağlamak ve anormallikleri önlemektir.

3.2.1. Normalizasyonun Amacı

3.2.2. Normal Formlar

Normalizasyon süreci, veritabanının belirli normal formlara uygun olarak yapılandırılmasını içerir. Başlıca normal formlar şunlardır:

a. Birinci Normal Form (1NF)

Hatalı Tasarım:

Kullanıcı Tablosu:

KullanıcıID İsim Telefon1 Telefon2
1 Ahmet 12345678 87654321
2 Ayşe 23456789  

Sorun:

Doğru Tasarım:

Kullanıcı tablosu:

KullanıcıID İsim
1 Ahmet
2 Ayşe

KullanıcıTelefon tablosu:

KullanıcıID Telefon
1 12345678
1 87654321
2 23456789
b. İkinci Normal Form (2NF)

SeyahatDetay tablosu:

SürücüID YolcuID AraçPlaka BaşlangıçKonumu
5 10 34ABC123  
6 11 34XYZ789  

Sorun:

Doğru Tasarım:

Seyahat tablosu:

SeyahatID SürücüID YolcuID
1001 5 10
1002 6 11

Araç Tablosu:

AraçID KullanıcıID (SürücüID) PlakaNo
1 5 34ABC123  
2 6 34XYZ789  
*c. Üçüncü Normal Form (3NF)
KullanıcıID İsim İlID İlAdı
1 Ahmet 34 İstanbul
2 Ayşe 6 Ankara

Sorun:

Doğru Tasarım: Kullanıcı tablosu:

KullanıcıID İsim İlID
1 Ahmet 34
2 Ayşe 6

İl tablosu:

İlID İlAdı
34 İstanbul
6 Ankara

3.3. İleri Düzey Normalizasyon

Bazı durumlarda, veritabanını daha da optimize etmek için ileri düzey normalizasyon formları kullanılır.

3.3.1. Boyce-Codd Normal Formu (BCNF)

SürücüID Gün ÇalışmaSaatleri
5 Pazartesi 08:00 - 18:00
5 Salı 08:00 - 18:00

Sorun:

Doğru Tasarım:

SürücüID GünID
5 1
5 2

Gün Tablosu:

GünID GünAdı Saat
1 Pazartesi
2 Salı

3.3.2. Dördüncü Normal Form (4NF)

KullanıcıID Hobiler Diller
1 Futbol İngilizce
1 Müzik Fransızca

Sorun:

Doğru Tasarım:

KullanıcıID Hobi
1 Futbol
1 Müzik

KullanıcıDil tablosu:

KullanıcıID Dil
1 İngilizce
1 Fransızca

3.4. Normalizasyonun Faydaları ve Dikkat Edilmesi Gerekenler

3.4.1. Faydaları

3.4.2. Dikkat Edilmesi Gerekenler