Veritabanı Normalizasyonu
- İngilizcesi
- Database Normalization
- Türkçe karşılığı
- normalleştirme
- Okunuşu
- deytıbeys normılayzeyşın
Kısaca
Veritabanı normalizasyonu, her bilginin yalnızca bir kez saklanması için tabloları düzenleme sürecidir; tekrarlı veriyi azaltıp tutarsız güncellemeleri önler.
Veritabanı normalizasyonu nedir?
Normalizasyon, ilişkisel bir veritabanını her bilgi parçası tam olarak tek bir yerde yaşayacak şekilde tasarlama yöntemidir. Bir müşterinin adresini her sipariş satırında tekrarlamak yerine, müşterileri bir tabloda, siparişleri başka bir tabloda saklar ve bunları bir yabancı anahtarla bağlarsınız. Fikir, 1970'lerin başında ilişkisel modelin mucidi Edgar F. Codd tarafından ortaya atıldı.
Süreç, her biri bir öncekinin üzerine kurulan bir dizi normal form olarak tanımlanır. Birinci normal form (1NF) her sütunun tek bir değer tutmasını, bir hücreye liste doldurulmamasını gerektirir; ikinci normal form (2NF) anahtar olmayan her sütunun birincil anahtarın yalnızca bir kısmına değil, tamamına bağlı olmasını gerektirir; üçüncü normal form (3NF) ise anahtar olmayan sütunların diğer anahtar olmayan sütunlara değil, yalnızca anahtara bağlı olmasını gerektirir. Boyce-Codd normal formu (BCNF) gibi daha katı formlar da vardır, ancak pratikte hedef genellikle 3NF'tir.
Normalizasyon, güncelleme anomalileri denen sorunları önler. Bir müşterinin e-postası 500 sipariş satırına kopyalanmışsa, onu değiştirmek 500 satırı güncellemek demektir ve birini kaçırmak verinin kendisiyle çelişmesine yol açar. Bu, bir arkadaşınızın telefon numarasını onlarca defterin içine yazmak yerine tek bir ortak rehber tutmaya benzer: numara değiştiğinde onu bir kez güncellersiniz.
Normalizasyon çoğu zaman, birleştirmelerden kaçınarak okumaları hızlandırmak için bazı verileri bilerek çoğaltan denormalizasyonla birlikte tartılır; bu, raporlama sistemlerinde, önbelleklerde ve birçok NoSQL tasarımında yaygın bir tercihtir. Genel tavsiye, önce doğruluk için normalize etmek, ardından yalnızca ölçümler gerçek bir performans ihtiyacı gösterdiğinde belirli noktaları denormalize etmektir. Veritabanı normalizasyonu, makine öğrenmesinde sayıları ortak bir aralığa ölçekleme anlamına gelen veri normalizasyonuyla da ilgisizdir.
Önemli noktalar
- Normalizasyon, tekrarlı ve çelişkili veriyi önlemek için her bilgiyi bir kez saklar.
- Tablolar veri kopyalamak yerine birincil ve yabancı anahtarlarla bağlanır.
- 1NF, 2NF ve 3NF normal formları giderek daha katı kurallardır.
- Uygulama veritabanları için genellikle hedef üçüncü normal formdur.
- Denormalizasyon, gerektiğinde bir miktar tekrarı daha hızlı okumalarla takas eder.
Örnek
-- Not normalized: customer details repeat on every order
-- orders(id, customer_name, customer_email, total)
-- Normalized: each customer is stored once and referenced by ID
CREATE TABLE customers (
id BIGINT PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
);
CREATE TABLE orders (
id BIGINT PRIMARY KEY,
customer_id BIGINT NOT NULL REFERENCES customers (id),
total NUMERIC(10, 2) NOT NULL
);Sık sorulan sorular
1NF, 2NF ve 3NF nedir?
İlk üç normal formdur. 1NF her sütunda tek bir değer olmasını gerektirir, 2NF bileşik anahtarın yalnızca bir kısmına bağlı olan sütunları kaldırır, 3NF ise anahtara değil de diğer anahtar olmayan sütunlara bağlı olan sütunları kaldırır.
Denormalizasyon nedir?
Denormalizasyon, okumaları hızlandırmak için veritabanına bilerek tekrarlı ya da önceden hesaplanmış veri eklemektir; bedeli daha fazla depolama alanı ve kopyaları senkron tutmak için ek iştir.
Her veritabanı tamamen normalize edilmeli mi?
Zorunlu değil. Çoğu işlemsel uygulama veritabanı üçüncü normal formu hedefler; analitik ambarlar ve okuma ağırlıklı sistemler ise sorguları hızlandırmak için çoğu zaman bilerek denormalize eder.
İlgili sayfalar
- Birincil AnahtarVeritabanları, s. 2Birincil anahtar, bir veritabanı tablosundaki her satırı benzersiz biçimde tanımlayan, asla boş ya da tekrarlı olamayan bir sütun veya sütun kümesidir.
- Yabancı AnahtarVeritabanları, s. 45Yabancı anahtar, bir veritabanı tablosunda başka bir tablonun birincil anahtarına başvuran sütundur; ilişkili satırları bağlar ve başvuruları geçerli tutar.
- SQL JOINVeritabanları, s. 30SQL JOIN, iki ya da daha fazla tablonun satırlarını yabancı anahtar gibi ilişkili sütunlar üzerinden eşleştirerek tek bir sonuçta birleştiren sorgu işlemidir.
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- DRYYazılım Mimarisi, s. 13DRY, her bilgi ya da mantık parçasının çoğaltılmak yerine tek bir yetkili temsile sahip olması gerektiğini söyleyen bir yazılım tasarım ilkesidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin