Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
12 yazı bulundu #data-modeling
Uçtan Uca: Bookstore Şemasını Sıfırdan Tasarlamak ve Şema Review Checklist'i
Veritabanı SERİ 12

Uçtan Uca: Bookstore Şemasını Sıfırdan Tasarlamak ve Şema Review Checklist'i

İyi bir şema, requirement cümlelerindeki kuralların constraint olarak yazıldığı şemadır; kuralların çoğu cümlelerin arasında saklıdır. Ön sipariş, kupon ve stok rezervasyonu requirement'larından entity listesi, Mermaid ER diyagramı, closure ile BCNF kontrolü ve SQL Server DDL'ine gidiyor, constraint'leri iş kurallarına karşı test ediyor, açıklamaları şemada tutuyor, EF Core migration'ını review ediyor ve bir şema review checklist'i çıkarıyoruz.

14 Kas 2026 19 dk 4
İlişkisel mi Document mı? Aynı Bookstore'u İki Şekilde Modellemek
Veritabanı SERİ 11

İlişkisel mi Document mı? Aynı Bookstore'u İki Şekilde Modellemek

İlişkisel model "veri nedir?" diye, document model "veriye nasıl erişeceğim?" diye sorar; ikisi de model ister, yalnızca sınırları farklı yere çizer. Bookstore siparişini MongoDB'de kalemleri gömülü bir document olarak kuruyor, aggregate sınırını, document modeldeki update anomaly'yi, $lookup tuzağını ve schema validation'ı gösteriyor, SQL Server 2025'te ilişkisel veriden JSON document üretip PostgreSQL jsonb ile karşılaştırıyoruz.

14 Kas 2026 12 dk 4
OLTP ve OLAP Modeling: Dimensional Model, Star Schema ve Slowly Changing Dimension
Veritabanı SERİ 10

OLTP ve OLAP Modeling: Dimensional Model, Star Schema ve Slowly Changing Dimension

Normalize OLTP şeması yazma için, dimensional model okuma için tasarlanır: önce grain ilan edilir, ölçüler fact tablosuna, bağlam denormalize dimension'lara gider. SQL Server'da Bookstore satışlarından star schema kuruyor, aynı raporun OLTP sorgusunda neden satış kaybettiğini, kategori değişince Type 1, 2 ve 3 slowly changing dimension'ın geçmiş raporlara etkisini, grain karışınca çift saymayı ve columnstore'u gösteriyoruz.

14 Kas 2026 15 dk 4
Modeling Anti-Pattern'leri: EAV, Virgülle Ayrılmış Liste, Tekrarlayan Kolonlar ve Tek Büyük Lookup Tablosu
Veritabanı SERİ 09

Modeling Anti-Pattern'leri: EAV, Virgülle Ayrılmış Liste, Tekrarlayan Kolonlar ve Tek Büyük Lookup Tablosu

Modeling anti-pattern'leri, veritabanının tip, benzersizlik ve foreign key kontrollerini devre dışı bırakan kısayollardır; hepsi bir sorguda sessizce yanlış sonuç verir. SQL Server'da EAV'nin kaybettiği satırı ve JSON kolon alternatifini, virgülle ayrılmış etiketlerin LIKE tuzağını, phone1/phone2/phone3'ün yazılamayan kuralını, tek büyük lookup tablosunun yanlış foreign key'ini, her şeyi nullable bırakmayı ve para için FLOAT'ı gösteriyoruz.

14 Kas 2026 15 dk 4
Denormalization: Ne Zaman, Nasıl ve Tutarlılığı Kim Korur?
Veritabanı SERİ 08

Denormalization: Ne Zaman, Nasıl ve Tutarlılığı Kim Korur?

Denormalization, ölçümle verilen bir performans kararıdır: önce doğru index denenir, yetmezse kopya veri, onu güncel tutacak bir mekanizmayla birlikte saklanır. SQL Server'da kitap kartındaki yorum sayısı ve ortalama puanı her seferinde hesaplamayı, trigger ile books'ta tutmayı ve indexed view'ı logical reads ile karşılaştırıyor; persisted computed column, özet tablo ve tutarlılığı kimin koruduğunu gösteriyoruz.

14 Kas 2026 15 dk 3
BCNF, 4NF, 5NF ve Ötesi: 3NF Ne Zaman Yetmez?
Veritabanı SERİ 07

BCNF, 4NF, 5NF ve Ötesi: 3NF Ne Zaman Yetmez?

3NF yalnızca key olmayan attribute'lara bakar; bu yüzden tüm kolonları key'in parçası olan bir tablo 3NF'te olup yine de anomaly üretebilir. BCNF, 4NF ve 5NF bu boşlukları kapatır. SQL Server'da imza günü tablosuyla BCNF'i ve kaybolan dependency'yi indexed view ile geri getirmeyi, dil ve tür örneğiyle 4NF'i, dağıtımcı tablosuyla 5NF'teki join dependency'yi ve 6NF'in temporal veriyle ilişkisini gösteriyoruz.

14 Kas 2026 17 dk 2
1NF, 2NF ve 3NF: Sipariş Tablosunu Adım Adım Normalize Etmek
Veritabanı SERİ 06

1NF, 2NF ve 3NF: Sipariş Tablosunu Adım Adım Normalize Etmek

Normalizasyon tabloyu dependency'lere göre böler: 1NF listeleri satırlara açar, 2NF partial, 3NF transitive dependency'leri ayırır ve determinant yeni tablonun key'i olduğu için birleştirme kayıpsız olur. Sipariş Excel'ini SQL Server'da STRING_SPLIT ile 1NF'e, ardından 2NF ve 3NF'e taşıyor, her adımda EXCEPT ile kayıp ve sahte satır olmadığını kanıtlıyor, JSON kolonunun 1NF ile ilişkisini ve sonucu Bookstore şemasına eşlemeyi gösteriyoruz.

14 Kas 2026 13 dk 3
Functional Dependency ve Anomaliler: Düz Tablo Neden Bozulur?
Veritabanı SERİ 05

Functional Dependency ve Anomaliler: Düz Tablo Neden Bozulur?

Düz tablo bozulur, çünkü bir satırı birden çok bağımsız olguyu birlikte taşır; insert, update ve delete anomaly'leri bunun üç yüzüdür. Sipariş Excel'ini SQL Server'a yükleyip üç anomaly'yi canlı gösteriyor, functional dependency, determinant, full, partial ve transitive dependency'yi tanımlıyor, closure'ı bir T-SQL procedure'üyle hesaplayıp candidate key'i buluyor ve veriden dependency keşfetmenin neden yanılttığını gösteriyoruz.

14 Kas 2026 13 dk 5
Key'ler ve Primary Key Seçimi: Candidate Key, Natural ve Surrogate Key, Composite Key
Veritabanı SERİ 04

Key'ler ve Primary Key Seçimi: Candidate Key, Natural ve Surrogate Key, Composite Key

Surrogate key natural key'in yerine geçmez, onun yükünü taşır: kimlik IDENTITY ya da GUID'de, iş kuralındaki benzersizlik UNIQUE constraint'te durur. Superkey'den candidate key'e zinciri, iyi bir primary key'in beş özelliğini, ISBN, e-posta ve kimlik numarasının key olarak tuzaklarını, composite foreign key'in yakaladığı kuralı ve maliyetini, fiziksel tip kararını ve PostgreSQL 18'in uuidv7() fonksiyonunu gösteriyoruz.

14 Kas 2026 13 dk 5
İlişkileri Modellemek: One-to-One, One-to-Many, Many-to-Many, Self-Reference ve Weak Entity
Veritabanı SERİ 03

İlişkileri Modellemek: One-to-One, One-to-Many, Many-to-Many, Self-Reference ve Weak Entity

İlişkiler tablolara modelden türetilen kurallarla iner: 1-N'de foreign key çok tarafındadır, M-N kendi kimliği olan bir associative entity'dir, 1-1'de foreign key opsiyonel taraftadır ve primary key'dir. SQL Server'da rol eklenince primary key'i değişen bağlantı tablosunu, self-reference'taki döngü tuzağını, iki binary'ye bölününce sahte satır üreten ternary ilişkiyi, weak entity'den ON DELETE CASCADE türetmeyi ve nullable foreign key'in iki anlamını gösteriyoruz.

14 Kas 2026 14 dk 3
ER Modeling: Entity, Attribute, Relationship ve Crow's Foot Notation
Veritabanı SERİ 02

ER Modeling: Entity, Attribute, Relationship ve Crow's Foot Notation

ER modeling, veriyi entity, attribute ve relationship olarak çizer; bir ilişkiyi doğru anlatmak için her iki ucun hem maksimumu (cardinality) hem minimumu (optionality) gerekir. Simple, composite, multivalued ve derived attribute'ları, unary, binary ve ternary ilişkileri, Chen ile Crow's Foot notation'larını, Bookstore'un Mermaid erDiagram taslağını ve SQL Server catalog view'larından diyagram üretmenin neyi kaybettiğini gösteriyoruz.

14 Kas 2026 13 dk 3
Data Modeling Nedir? Requirement'tan Conceptual, Logical ve Physical Modele
Veritabanı SERİ 01

Data Modeling Nedir? Requirement'tan Conceptual, Logical ve Physical Modele

Data modeling, hangi veriyi hangi kurallarla saklayacağına kod yazmadan önce karar vermektir; şema yanlışsa hiçbir index onu doğru yapmaz. Conceptual, logical ve physical seviyeleri, requirement cümlelerinden entity, ilişki ve kural çıkarmayı, access pattern listesini ve ekran class'ından türetilen EF Core şemasının neden tek bir JSON'lu tabloya dönüştüğünü Bookstore üzerinden gösteriyoruz.

14 Kas 2026 14 dk 6
Blog Haritası