{"id":32445,"date":"2025-10-21T22:41:05","date_gmt":"2025-10-21T19:41:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32445"},"modified":"2025-10-21T22:41:05","modified_gmt":"2025-10-21T19:41:05","slug":"veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/","title":{"rendered":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri"},"content":{"rendered":"<p><body><\/p>\n<h2>Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri<\/h2>\n<p>Veritaban\u0131 tasar\u0131m\u0131, bir bilgi sisteminin temelini olu\u015fturur ve veri tutarl\u0131l\u0131\u011f\u0131, b\u00fct\u00fcnl\u00fc\u011f\u00fc ve performans\u0131n\u0131 do\u011frudan etkiler. Bu tasar\u0131m s\u00fcrecinde en kritik ad\u0131mlardan biri de veritaban\u0131 normalizasyonudur. Normalizasyon, veritaban\u0131 tablolar\u0131n\u0131 belirli kurallara g\u00f6re organize ederek veri tekrar\u0131n\u0131 (redundancy) azaltmay\u0131 ve veri anormalliklerini (anomalies) ortadan kald\u0131rmay\u0131 ama\u00e7layan yap\u0131sal bir yakla\u015f\u0131md\u0131r. Bu makale, veritaban\u0131 normalizasyonunun ne oldu\u011funu, neden gerekli oldu\u011funu a\u00e7\u0131klayacak ve Birinci Normal Form (1NF), \u0130kinci Normal Form (2NF), \u00dc\u00e7\u00fcnc\u00fc Normal Form (3NF) ve Boyce-Codd Normal Form (BCNF) gibi ba\u015fl\u0131ca normal formlar\u0131 detayl\u0131 \u00f6rneklerle ele alacakt\u0131r.<\/p>\n<h3>Veritaban\u0131 Normalizasyonu Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Normalizasyon, Edgar F. Codd taraf\u0131ndan ili\u015fkisel veritabanlar\u0131 i\u00e7in geli\u015ftirilen bir dizi kurald\u0131r. Temel amac\u0131, veritaban\u0131 tasar\u0131m\u0131n\u0131 optimize ederek a\u015fa\u011f\u0131daki faydalar\u0131 sa\u011flamakt\u0131r:<\/p>\n<p>*   <strong>Veri Tekrar\u0131n\u0131 Azaltma:<\/strong> Ayn\u0131 verinin birden fazla yerde saklanmas\u0131n\u0131 \u00f6nler. Bu, depolama alan\u0131ndan tasarruf sa\u011flar ve veri tutars\u0131zl\u0131\u011f\u0131 riskini azalt\u0131r.<br \/>\n*   <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc Art\u0131rma:<\/strong> Verilerin do\u011fru, tutarl\u0131 ve g\u00fcvenilir olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Veri Anormalliklerini Giderme:<\/strong><br \/>\n    *   <strong>Ekleme Anormalli\u011fi (Insertion Anomaly):<\/strong> Yeni bir kayd\u0131 eklemek i\u00e7in gereksiz veya eksik bilgi girmek zorunda kalma durumu. \u00d6rne\u011fin, bir \u00f6\u011frenciyi bir kursa kaydetmeden \u00f6nce ders bilgilerini girmek zorunda kalmak.<br \/>\n    *   <strong>Silme Anormalli\u011fi (Deletion Anomaly):<\/strong> Bir kayd\u0131 silerken istemeden ba\u015fka \u00f6nemli bilgilerin de kaybolmas\u0131 durumu. \u00d6rne\u011fin, bir dersi silerken o dersi veren \u00f6\u011fretmenin t\u00fcm bilgilerinin de kaybolmas\u0131.<br \/>\n    *   <strong>G\u00fcncelleme Anormalli\u011fi (Update Anomaly):<\/strong> Ayn\u0131 verinin birden fazla yerde depolanmas\u0131 nedeniyle, bir de\u011fi\u015fikli\u011fin t\u00fcm kopyalara uygulanmamas\u0131 durumunda tutars\u0131zl\u0131klar\u0131n ortaya \u00e7\u0131kmas\u0131. \u00d6rne\u011fin, bir \u00f6\u011fretmenin telefon numaras\u0131n\u0131 de\u011fi\u015ftirdi\u011finizde, bu bilginin ge\u00e7ti\u011fi t\u00fcm kay\u0131tlarda g\u00fcncellenmesi gereklili\u011fi.<br \/>\n*   <strong>Veritaban\u0131 Tasar\u0131m\u0131n\u0131 Basitle\u015ftirme:<\/strong> Daha mant\u0131kl\u0131 ve anla\u015f\u0131l\u0131r bir yap\u0131 sunar, bu da veritaban\u0131n\u0131n y\u00f6netilmesini ve geni\u015fletilmesini kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Sorgu Performans\u0131n\u0131 \u0130yile\u015ftirme (Dolayl\u0131 Olarak):<\/strong> Daha az veri tekrar\u0131, daha k\u00fc\u00e7\u00fck tablolar ve daha iyi indeksleme potansiyeli sayesinde sorgular\u0131n daha verimli \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r.<\/p>\n<p>Normalizasyon formlar\u0131 hiyerar\u015fik bir yap\u0131ya sahiptir; yani daha y\u00fcksek bir normal forma ula\u015fmak i\u00e7in daha d\u00fc\u015f\u00fck normal formlar\u0131n gereksinimlerini kar\u015f\u0131lamak gerekir. Genellikle 3NF veya BCNF, \u00e7o\u011fu i\u015f uygulamas\u0131 i\u00e7in yeterli kabul edilir.<\/p>\n<h3>Temel Kavramlar<\/h3>\n<p>Normalizasyon formlar\u0131n\u0131 anlamak i\u00e7in baz\u0131 temel veritaban\u0131 kavramlar\u0131n\u0131 bilmek \u00f6nemlidir.<\/p>\n<h4>Fonksiyonel Ba\u011f\u0131ml\u0131l\u0131k (Functional Dependency)<\/h4>\n<p>Fonksiyonel ba\u011f\u0131ml\u0131l\u0131k, veritaban\u0131 normalizasyonunun temel ta\u015f\u0131d\u0131r. Bir tabloda, A \u00f6zelli\u011finin (veya \u00f6zellik k\u00fcmesinin) B \u00f6zelli\u011fini (veya \u00f6zellik k\u00fcmesini) fonksiyonel olarak belirledi\u011fi duruma &#8220;A -> B&#8221; \u015feklinde g\u00f6sterilir ve &#8220;A, B&#8217;yi belirler&#8221; veya &#8220;B, A&#8217;ya fonksiyonel olarak ba\u011f\u0131ml\u0131d\u0131r&#8221; \u015feklinde okunur. Bu, A&#8217;n\u0131n her benzersiz de\u011feri i\u00e7in B&#8217;nin de benzersiz bir de\u011feri oldu\u011fu anlam\u0131na gelir.<\/p>\n<p><strong>\u00d6rnek:<\/strong><br \/>\n*   <code>TC_Kimlik_No -> Ad_Soyad<\/code>: Bir TC kimlik numaras\u0131, benzersiz bir ad\u0131 ve soyad\u0131 belirler.<br \/>\n*   <code>\u00dcr\u00fcn_ID -> \u00dcr\u00fcn_Ad\u0131, Birim_Fiyat<\/code>: Bir \u00fcr\u00fcn ID&#8217;si, benzersiz bir \u00fcr\u00fcn ad\u0131n\u0131 ve birim fiyat\u0131 belirler.<br \/>\n*   <code>(Sipari\u015f_ID, \u00dcr\u00fcn_ID) -> Miktar<\/code>: Bir sipari\u015f ID&#8217;si ve \u00fcr\u00fcn ID&#8217;si kombinasyonu, o sipari\u015fteki \u00fcr\u00fcn\u00fcn miktar\u0131n\u0131 belirler.<\/p>\n<h4>Anahtar Kavramlar\u0131<\/h4>\n<p>*   <strong>S\u00fcper Anahtar (Super Key):<\/strong> Bir tablodaki bir veya daha fazla \u00f6zelli\u011fin (s\u00fctunun) birle\u015fimi olup, tablodaki her bir sat\u0131r\u0131 benzersiz bir \u015fekilde tan\u0131mlayabilir. S\u00fcper anahtar, gereksiz \u00f6zellikler i\u00e7erebilir.<br \/>\n    *   <strong>\u00d6rnek:<\/strong> <code>(TC_Kimlik_No, Ad_Soyad)<\/code> bir s\u00fcper anahtard\u0131r, \u00e7\u00fcnk\u00fc <code>TC_Kimlik_No<\/code> zaten tek ba\u015f\u0131na benzersizdir.<br \/>\n*   <strong>Aday Anahtar (Candidate Key):<\/strong> S\u00fcper anahtar\u0131n minimal halidir; yani s\u00fcper anahtar olup, i\u00e7inden herhangi bir \u00f6zelli\u011fi \u00e7\u0131kar\u0131ld\u0131\u011f\u0131nda art\u0131k benzersizlik \u00f6zelli\u011fini kaybeder. Bir tabloda birden fazla aday anahtar olabilir.<br \/>\n    *   <strong>\u00d6rnek:<\/strong> <code>TC_Kimlik_No<\/code> veya <code>E_posta_Adresi<\/code> (benzersiz ise) birer aday anahtar olabilir.<br \/>\n*   <strong>Birincil Anahtar (Primary Key):<\/strong> Se\u00e7ilen aday anahtarlardan biridir ve tablodaki her sat\u0131r\u0131 benzersiz bir \u015fekilde tan\u0131mlamak i\u00e7in kullan\u0131l\u0131r. NULL de\u011fer alamaz ve benzersiz olmal\u0131d\u0131r.<br \/>\n    *   <strong>\u00d6rnek:<\/strong> <code>M\u00fc\u015fteri<\/code> tablosunda <code>M\u00fc\u015fteri_ID<\/code> genellikle birincil anahtar olarak se\u00e7ilir.<br \/>\n*   <strong>Bile\u015fik Anahtar (Composite Key):<\/strong> \u0130ki veya daha fazla \u00f6zelli\u011fin birle\u015fimiyle olu\u015fturulan bir birincil anahtard\u0131r.<br \/>\n    *   <strong>\u00d6rnek:<\/strong> <code>Sipari\u015f_Detaylar\u0131<\/code> tablosunda <code>(Sipari\u015f_ID, \u00dcr\u00fcn_ID)<\/code> bir bile\u015fik anahtar olabilir.<br \/>\n*   <strong>Yabanc\u0131 Anahtar (Foreign Key):<\/strong> Bir tablodaki bir veya daha fazla \u00f6zelli\u011fin, ba\u015fka bir tablonun birincil anahtar\u0131na at\u0131fta bulundu\u011fu bir anahtard\u0131r. Tablolar aras\u0131ndaki ili\u015fkileri kurar ve referans b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flar.<br \/>\n    *   <strong>\u00d6rnek:<\/strong> <code>Sipari\u015fler<\/code> tablosundaki <code>M\u00fc\u015fteri_ID<\/code>, <code>M\u00fc\u015fteriler<\/code> tablosundaki <code>M\u00fc\u015fteri_ID<\/code> birincil anahtar\u0131na at\u0131fta bulunan bir yabanc\u0131 anahtard\u0131r.<br \/>\n*   <strong>Belirleyici (Determinant):<\/strong> Fonksiyonel ba\u011f\u0131ml\u0131l\u0131kta, ok i\u015faretinin sol taraf\u0131nda yer alan \u00f6zellik veya \u00f6zellik k\u00fcmesidir (A -> B ili\u015fkisinde A).<\/p>\n<h2>Normalizasyon Formlar\u0131 ve Uygulama \u00d6rnekleri<\/h2>\n<p>\u015eimdi, her bir normalizasyon formunu detayl\u0131 \u00f6rneklerle inceleyelim.<\/p>\n<h3>Birinci Normal Form (1NF)<\/h3>\n<p>Bir tablonun 1NF&#8217;de olabilmesi i\u00e7in a\u015fa\u011f\u0131daki iki ko\u015fulu sa\u011flamas\u0131 gerekir:<\/p>\n<p>1.  <strong>Atomik De\u011ferler:<\/strong> Tablodaki her h\u00fccrede yaln\u0131zca tek bir atomik (b\u00f6l\u00fcnemez) de\u011fer bulunmal\u0131d\u0131r. Yani, bir h\u00fccrede virg\u00fclle ayr\u0131lm\u0131\u015f birden fazla de\u011fer veya bir liste olmamal\u0131d\u0131r.<br \/>\n2.  <strong>Tekrar Eden Gruplar Yok:<\/strong> Tabloda tekrar eden sat\u0131r gruplar\u0131 veya birden fazla s\u00fctunda ayn\u0131 t\u00fcrden veri olmamal\u0131d\u0131r. Her sat\u0131r benzersiz olmal\u0131d\u0131r.<\/p>\n<p><strong>\u00d6rnek (1NF \u00d6ncesi):<\/strong><br \/>\nBir <code>M\u00fc\u015fteri_Sipari\u015fleri<\/code> tablosu d\u00fc\u015f\u00fcnelim:<\/p>\n<p>| M\u00fc\u015fteri_ID | M\u00fc\u015fteri_Ad\u0131 | Telefon_Numaralar\u0131 | Sipari\u015f_ID | \u00dcr\u00fcnler (Ad, Miktar) |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;- | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; | :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- |<br \/>\n| 1          | Ali Y\u0131lmaz  | 555-1234, 555-5678 | 101        | (Klavye, 1), (Fare, 2) |<br \/>\n| 2          | Ay\u015fe Demir  | 555-9876           | 102        | (Monit\u00f6r, 1)         |<br \/>\n| 1          | Ali Y\u0131lmaz  | 555-1234, 555-5678 | 103        | (Kamera, 1)          |<\/p>\n<p>Bu tablo 1NF&#8217;de de\u011fildir \u00e7\u00fcnk\u00fc:<br \/>\n*   <code>Telefon_Numaralar\u0131<\/code> s\u00fctununda birden fazla de\u011fer (atomik de\u011fil).<br \/>\n*   <code>\u00dcr\u00fcnler<\/code> s\u00fctununda birden fazla de\u011fer (atomik de\u011fil) ve karma\u015f\u0131k bir yap\u0131 var.<br \/>\n*   <code>M\u00fc\u015fteri_ID<\/code> 1 i\u00e7in <code>M\u00fc\u015fteri_Ad\u0131<\/code> ve <code>Telefon_Numaralar\u0131<\/code> bilgileri tekrar ediyor.<\/p>\n<p><strong>1NF&#8217;ye D\u00f6n\u00fc\u015ft\u00fcrme:<\/strong><br \/>\nBu tabloyu 1NF&#8217;ye d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in, her h\u00fccrenin tek bir de\u011fer i\u00e7ermesini sa\u011flamal\u0131 ve tekrar eden gruplar\u0131 ayr\u0131 tablolara ay\u0131rmal\u0131y\u0131z.<\/p>\n<p><strong>1. Telefon Numaralar\u0131n\u0131 Ay\u0131rma:<\/strong><br \/>\n<code>M\u00fc\u015fteri_Telefonlar\u0131<\/code> tablosu:<\/p>\n<p>| M\u00fc\u015fteri_ID | Telefon_Numaras\u0131 |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;&#8212;&#8212; |<br \/>\n| 1          | 555-1234         |<br \/>\n| 1          | 555-5678         |<br \/>\n| 2          | 555-9876         |<\/p>\n<p><strong>2. \u00dcr\u00fcnleri ve Sipari\u015f Detaylar\u0131n\u0131 Ay\u0131rma:<\/strong><br \/>\n<code>Sipari\u015f_Detaylar\u0131<\/code> tablosu:<\/p>\n<p>| Sipari\u015f_ID | \u00dcr\u00fcn_Ad\u0131 | Miktar |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;- | :&#8212;&#8211; |<br \/>\n| 101        | Klavye   | 1      |<br \/>\n| 101        | Fare     | 2      |<br \/>\n| 102        | Monit\u00f6r  | 1      |<br \/>\n| 103        | Kamera   | 1      |<\/p>\n<p><strong>3. Ana <code>M\u00fc\u015fteri_Sipari\u015fleri<\/code> tablosunu g\u00fcncelleme:<\/strong><br \/>\n<code>Sipari\u015fler<\/code> tablosu:<\/p>\n<p>| Sipari\u015f_ID | M\u00fc\u015fteri_ID |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212; |<br \/>\n| 101        | 1          |<br \/>\n| 102        | 2          |<br \/>\n| 103        | 1          |<\/p>\n<p><code>M\u00fc\u015fteriler<\/code> tablosu:<\/p>\n<p>| M\u00fc\u015fteri_ID | M\u00fc\u015fteri_Ad\u0131 |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;- |<br \/>\n| 1          | Ali Y\u0131lmaz  |<br \/>\n| 2          | Ay\u015fe Demir  |<\/p>\n<p>Art\u0131k t\u00fcm bu tablolar 1NF&#8217;dedir. Her h\u00fccre atomik de\u011ferler i\u00e7erir ve tekrar eden gruplar ayr\u0131 tablolara ayr\u0131lm\u0131\u015ft\u0131r.<\/p>\n<h3>\u0130kinci Normal Form (2NF)<\/h3>\n<p>Bir tablonun 2NF&#8217;de olabilmesi i\u00e7in a\u015fa\u011f\u0131daki ko\u015fullar\u0131 sa\u011flamas\u0131 gerekir:<\/p>\n<p>1.  <strong>1NF&#8217;de olmal\u0131d\u0131r.<\/strong><br \/>\n2.  <strong>K\u0131smi Ba\u011f\u0131ml\u0131l\u0131k Olmamal\u0131d\u0131r:<\/strong> Tablodaki birincil anahtar\u0131n (e\u011fer bile\u015fik anahtarsa) bir par\u00e7as\u0131na fonksiyonel olarak ba\u011f\u0131ml\u0131 olan, anahtar olmayan (non-key) hi\u00e7bir \u00f6zellik bulunmamal\u0131d\u0131r. Yani, anahtar olmayan \u00f6zellikler, birincil anahtar\u0131n <em>tamam\u0131na<\/em> ba\u011f\u0131ml\u0131 olmal\u0131d\u0131r.<\/p>\n<p><strong>\u00d6rnek (2NF \u00d6ncesi):<\/strong><br \/>\n1NF&#8217;ye d\u00f6n\u00fc\u015ft\u00fcrd\u00fc\u011f\u00fcm\u00fcz <code>Sipari\u015f_Detaylar\u0131<\/code> tablosunu ele alal\u0131m:<\/p>\n<p><code>Sipari\u015f_Detaylar\u0131<\/code> tablosu:<\/p>\n<p>| Sipari\u015f_ID | \u00dcr\u00fcn_ID | Miktar | \u00dcr\u00fcn_Ad\u0131 | \u00dcr\u00fcn_Fiyat\u0131 |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212; | :&#8212;&#8211; | :&#8212;&#8212;- | :&#8212;&#8212;&#8212;- |<br \/>\n| 101        | P1      | 1      | Klavye   | 150         |<br \/>\n| 101        | P2      | 2      | Fare     | 50          |<br \/>\n| 102        | P3      | 1      | Monit\u00f6r  | 1200        |<br \/>\n| 103        | P4      | 1      | Kamera   | 300         |<\/p>\n<p>Bu tablonun birincil anahtar\u0131 <code>(Sipari\u015f_ID, \u00dcr\u00fcn_ID)<\/code>&#8216;dir (bile\u015fik anahtar).<br \/>\nBuradaki fonksiyonel ba\u011f\u0131ml\u0131l\u0131klar\u0131 inceleyelim:<br \/>\n*   <code>(Sipari\u015f_ID, \u00dcr\u00fcn_ID) -> Miktar<\/code> (Tam ba\u011f\u0131ml\u0131l\u0131k)<br \/>\n*   <code>\u00dcr\u00fcn_ID -> \u00dcr\u00fcn_Ad\u0131<\/code> (K\u0131smi ba\u011f\u0131ml\u0131l\u0131k, \u00e7\u00fcnk\u00fc <code>\u00dcr\u00fcn_Ad\u0131<\/code> sadece <code>\u00dcr\u00fcn_ID<\/code>&#8216;ye ba\u011fl\u0131d\u0131r, <code>Sipari\u015f_ID<\/code>&#8216;ye de\u011fil)<br \/>\n*   <code>\u00dcr\u00fcn_ID -> \u00dcr\u00fcn_Fiyat\u0131<\/code> (K\u0131smi ba\u011f\u0131ml\u0131l\u0131k, \u00e7\u00fcnk\u00fc <code>\u00dcr\u00fcn_Fiyat\u0131<\/code> sadece <code>\u00dcr\u00fcn_ID<\/code>&#8216;ye ba\u011fl\u0131d\u0131r, <code>Sipari\u015f_ID<\/code>&#8216;ye de\u011fil)<\/p>\n<p>Bu k\u0131smi ba\u011f\u0131ml\u0131l\u0131klar nedeniyle tablo 2NF&#8217;de de\u011fildir. <code>\u00dcr\u00fcn_Ad\u0131<\/code> ve <code>\u00dcr\u00fcn_Fiyat\u0131<\/code> bilgileri, ayn\u0131 \u00fcr\u00fcn farkl\u0131 sipari\u015flerde ge\u00e7ti\u011finde tekrar edecektir (\u00f6rne\u011fin, P1 kodlu Klavye, ba\u015fka bir sipari\u015fte de ge\u00e7se ayn\u0131 ad\u0131 ve fiyat\u0131 ta\u015f\u0131yacakt\u0131r).<\/p>\n<p><strong>2NF&#8217;ye D\u00f6n\u00fc\u015ft\u00fcrme:<\/strong><br \/>\nK\u0131smi ba\u011f\u0131ml\u0131l\u0131klar\u0131 gidermek i\u00e7in, k\u0131smi ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n belirleyicisi olan anahtar par\u00e7as\u0131n\u0131 ve ona ba\u011f\u0131ml\u0131 olan anahtar olmayan \u00f6zellikleri ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z.<\/p>\n<p><strong>1. <code>\u00dcr\u00fcnler<\/code> tablosu olu\u015fturma:<\/strong><br \/>\n<code>\u00dcr\u00fcn_ID<\/code> belirleyicisine ba\u011f\u0131ml\u0131 olan <code>\u00dcr\u00fcn_Ad\u0131<\/code> ve <code>\u00dcr\u00fcn_Fiyat\u0131<\/code> bilgilerini ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z.<\/p>\n<p><code>\u00dcr\u00fcnler<\/code> tablosu:<\/p>\n<p>| \u00dcr\u00fcn_ID | \u00dcr\u00fcn_Ad\u0131 | \u00dcr\u00fcn_Fiyat\u0131 |<br \/>\n| :&#8212;&#8212; | :&#8212;&#8212;- | :&#8212;&#8212;&#8212;- |<br \/>\n| P1      | Klavye   | 150         |<br \/>\n| P2      | Fare     | 50          |<br \/>\n| P3      | Monit\u00f6r  | 1200        |<br \/>\n| P4      | Kamera   | 300         |<\/p>\n<p><strong>2. Orijinal tabloyu g\u00fcncelleme:<\/strong><br \/>\n<code>Sipari\u015f_Detaylar\u0131<\/code> tablosu:<\/p>\n<p>| Sipari\u015f_ID | \u00dcr\u00fcn_ID | Miktar |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212; | :&#8212;&#8211; |<br \/>\n| 101        | P1      | 1      |<br \/>\n| 101        | P2      | 2      |<br \/>\n| 102        | P3      | 1      |<br \/>\n| 103        | P4      | 1      |<\/p>\n<p>Art\u0131k <code>Sipari\u015f_Detaylar\u0131<\/code> tablosundaki <code>Miktar<\/code> \u00f6zelli\u011fi, birincil anahtar\u0131n <code>(Sipari\u015f_ID, \u00dcr\u00fcn_ID)<\/code> tamam\u0131na ba\u011f\u0131ml\u0131d\u0131r. Her iki tablo da 2NF&#8217;dedir.<\/p>\n<h3>\u00dc\u00e7\u00fcnc\u00fc Normal Form (3NF)<\/h3>\n<p>Bir tablonun 3NF&#8217;de olabilmesi i\u00e7in a\u015fa\u011f\u0131daki ko\u015fullar\u0131 sa\u011flamas\u0131 gerekir:<\/p>\n<p>1.  <strong>2NF&#8217;de olmal\u0131d\u0131r.<\/strong><br \/>\n2.  <strong>Ge\u00e7i\u015fli Ba\u011f\u0131ml\u0131l\u0131k (Transitive Dependency) Olmamal\u0131d\u0131r:<\/strong> Anahtar olmayan bir \u00f6zelli\u011fin, ba\u015fka bir anahtar olmayan \u00f6zelli\u011fe fonksiyonel olarak ba\u011f\u0131ml\u0131 olmamas\u0131 gerekir. Yani, A -> B ve B -> C \u015feklinde bir ba\u011f\u0131ml\u0131l\u0131k varsa (burada B birincil anahtar de\u011fildir), bu bir ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131kt\u0131r ve 3NF&#8217;yi ihlal eder. T\u00fcm anahtar olmayan \u00f6zellikler do\u011frudan birincil anahtara ba\u011f\u0131ml\u0131 olmal\u0131d\u0131r.<\/p>\n<p><strong>\u00d6rnek (3NF \u00d6ncesi):<\/strong><br \/>\n<code>M\u00fc\u015fteriler<\/code> tablosunu ele alal\u0131m:<\/p>\n<p><code>M\u00fc\u015fteriler<\/code> tablosu:<\/p>\n<p>| M\u00fc\u015fteri_ID | M\u00fc\u015fteri_Ad\u0131 | \u015eehir      | Posta_Kodu |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;- | :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212; |<br \/>\n| M1         | Ali Y\u0131lmaz  | \u0130stanbul   | 34000      |<br \/>\n| M2         | Ay\u015fe Demir  | Ankara     | 06000      |<br \/>\n| M3         | Can Efe     | \u0130stanbul   | 34000      |<\/p>\n<p>Bu tablonun birincil anahtar\u0131 <code>M\u00fc\u015fteri_ID<\/code>&#8216;dir.<br \/>\nFonksiyonel ba\u011f\u0131ml\u0131l\u0131klar\u0131 inceleyelim:<br \/>\n*   <code>M\u00fc\u015fteri_ID -> M\u00fc\u015fteri_Ad\u0131<\/code><br \/>\n*   <code>M\u00fc\u015fteri_ID -> \u015eehir<\/code><br \/>\n*   <code>M\u00fc\u015fteri_ID -> Posta_Kodu<\/code><br \/>\n*   <code>\u015eehir -> Posta_Kodu<\/code> (Bir \u015fehir genellikle belirli bir posta koduna sahiptir veya tam tersi, burada basitle\u015ftirilmi\u015f bir \u00f6rnek i\u00e7in \u015eehir -> Posta_Kodu varsayal\u0131m).<\/p>\n<p>Burada <code>Posta_Kodu<\/code>, <code>M\u00fc\u015fteri_ID<\/code>&#8216;ye do\u011frudan de\u011fil, <code>\u015eehir<\/code> \u00fczerinden dolayl\u0131 (ge\u00e7i\u015fli) olarak ba\u011f\u0131ml\u0131d\u0131r (<code>M\u00fc\u015fteri_ID -> \u015eehir<\/code> ve <code>\u015eehir -> Posta_Kodu<\/code>). Bu bir ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131kt\u0131r ve tablo 3NF&#8217;de de\u011fildir. Ayn\u0131 posta kodu bilgisi, ayn\u0131 \u015fehirdeki birden fazla m\u00fc\u015fteri i\u00e7in tekrar edecektir.<\/p>\n<p><strong>3NF&#8217;ye D\u00f6n\u00fc\u015ft\u00fcrme:<\/strong><br \/>\nGe\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131klar\u0131 gidermek i\u00e7in, ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n belirleyicisi olan anahtar olmayan \u00f6zelli\u011fi ve ona ba\u011f\u0131ml\u0131 olan \u00f6zellikleri ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z.<\/p>\n<p><strong>1. <code>\u015eehirler<\/code> tablosu olu\u015fturma:<\/strong><br \/>\n<code>\u015eehir<\/code> belirleyicisine ba\u011f\u0131ml\u0131 olan <code>Posta_Kodu<\/code> bilgisini ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z.<\/p>\n<p><code>\u015eehirler<\/code> tablosu:<\/p>\n<p>| \u015eehir      | Posta_Kodu |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212; |<br \/>\n| \u0130stanbul   | 34000      |<br \/>\n| Ankara     | 06000      |<\/p>\n<p><strong>2. Orijinal tabloyu g\u00fcncelleme:<\/strong><br \/>\n<code>M\u00fc\u015fteriler<\/code> tablosu:<\/p>\n<p>| M\u00fc\u015fteri_ID | M\u00fc\u015fteri_Ad\u0131 | \u015eehir      |<br \/>\n| :&#8212;&#8212;&#8212; | :&#8212;&#8212;&#8212;- | :&#8212;&#8212;&#8212; |<br \/>\n| M1         | Ali Y\u0131lmaz  | \u0130stanbul   |<br \/>\n| M2         | Ay\u015fe Demir  | Ankara     |<br \/>\n| M3         | Can Efe     | \u0130stanbul   |<\/p>\n<p>Art\u0131k <code>M\u00fc\u015fteriler<\/code> tablosundaki t\u00fcm anahtar olmayan \u00f6zellikler (<code>M\u00fc\u015fteri_Ad\u0131<\/code>, <code>\u015eehir<\/code>) do\u011frudan <code>M\u00fc\u015fteri_ID<\/code> birincil anahtar\u0131na ba\u011f\u0131ml\u0131d\u0131r. Her iki tablo da 3NF&#8217;dedir.<\/p>\n<h3>Boyce-Codd Normal Form (BCNF)<\/h3>\n<p>BCNF, 3NF&#8217;nin daha kat\u0131 bir versiyonudur. Bir tablonun BCNF&#8217;de olabilmesi i\u00e7in a\u015fa\u011f\u0131daki ko\u015fulu sa\u011flamas\u0131 gerekir:<\/p>\n<p>1.  <strong>3NF&#8217;de olmal\u0131d\u0131r.<\/strong><br \/>\n2.  <strong>Her belirleyici (determinant) bir aday anahtar olmal\u0131d\u0131r:<\/strong> Bir tabloda, bir veya daha fazla \u00f6zelli\u011fi belirleyen (fonksiyonel ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n sol taraf\u0131ndaki) her \u00f6zellik k\u00fcmesi, o tablonun bir aday anahtar\u0131 olmal\u0131d\u0131r. BCNF, 3NF&#8217;nin atlad\u0131\u011f\u0131 baz\u0131 \u00f6zel durumlarda (\u00f6zellikle tabloda birden fazla \u00e7ak\u0131\u015fan aday anahtar oldu\u011funda) veri anormalliklerini giderir.<\/p>\n<p>BCNF ile 3NF aras\u0131ndaki fark, genellikle a\u015fa\u011f\u0131daki senaryoda ortaya \u00e7\u0131kar:<br \/>\n*   Tablo birden fazla \u00e7ak\u0131\u015fan aday anahtara sahiptir.<br \/>\n*   Anahtar olmayan bir \u00f6zellik, birincil anahtar\u0131n bir par\u00e7as\u0131na de\u011fil, ba\u015fka bir aday anahtar\u0131n bir par\u00e7as\u0131na ba\u011f\u0131ml\u0131d\u0131r.<br \/>\n*   Anahtar olmayan bir \u00f6zellik, ba\u015fka bir anahtar olmayan \u00f6zelli\u011fe ba\u011f\u0131ml\u0131d\u0131r ve bu belirleyici (anahtar olmayan \u00f6zellik), tablonun bir aday anahtar\u0131 de\u011fildir.<\/p>\n<p><strong>\u00d6rnek (BCNF \u00d6ncesi):<\/strong><br \/>\nBir <code>Ders_\u00d6\u011fretmen_Konu<\/code> tablosu d\u00fc\u015f\u00fcnelim:<\/p>\n<p>| Ders_Ad\u0131  | \u00d6\u011fretmen_ID | Konu_Ad\u0131    |<br \/>\n| :&#8212;&#8212;&#8211; | :&#8212;&#8212;&#8212;- | :&#8212;&#8212;&#8212;- |<br \/>\n| Veritaban\u0131 | O1          | Normalizasyon |<br \/>\n| Veritaban\u0131 | O2          | SQL         |<br \/>\n| Programlama | O3          | Java        |<br \/>\n| Programlama | O1          | Java        |<\/p>\n<p>Bu tabloda a\u015fa\u011f\u0131daki varsay\u0131mlar ve ba\u011f\u0131ml\u0131l\u0131klar olsun:<br \/>\n*   Bir dersin birden fazla \u00f6\u011fretmeni olabilir.<br \/>\n*   Bir dersin birden fazla konusu olabilir.<br \/>\n*   Bir \u00f6\u011fretmen birden fazla derste ders verebilir.<br \/>\n*   <strong>Bir \u00f6\u011fretmen sadece belirli bir konuda ders verir (\u00d6\u011fretmen_ID -> Konu_Ad\u0131).<\/strong><br \/>\n*   <strong>Bir konu sadece belirli bir \u00f6\u011fretmen taraf\u0131ndan verilir (Konu_Ad\u0131 -> \u00d6\u011fretmen_ID).<\/strong> (Bu, ger\u00e7ek hayatta pek olas\u0131 olmasa da BCNF&#8217;yi a\u00e7\u0131klamak i\u00e7in kullan\u0131lan klasik bir \u00f6rnektir.)<\/p>\n<p>Aday anahtarlar\u0131 belirleyelim:<br \/>\n*   <code>(Ders_Ad\u0131, \u00d6\u011fretmen_ID)<\/code>: Bir ders ve \u00f6\u011fretmen kombinasyonu, benzersiz bir konuyu belirler.<br \/>\n*   <code>(Ders_Ad\u0131, Konu_Ad\u0131)<\/code>: Bir ders ve konu kombinasyonu, benzersiz bir \u00f6\u011fretmeni belirler.<\/p>\n<p>\u015eimdi ba\u011f\u0131ml\u0131l\u0131klar\u0131 ve belirleyicileri kontrol edelim:<br \/>\n1.  <code>(Ders_Ad\u0131, \u00d6\u011fretmen_ID) -> Konu_Ad\u0131<\/code><br \/>\n2.  <code>(Ders_Ad\u0131, Konu_Ad\u0131) -> \u00d6\u011fretmen_ID<\/code><br \/>\n3.  <code>\u00d6\u011fretmen_ID -> Konu_Ad\u0131<\/code> (Verilen varsay\u0131ma g\u00f6re)<br \/>\n4.  <code>Konu_Ad\u0131 -> \u00d6\u011fretmen_ID<\/code> (Verilen varsay\u0131ma g\u00f6re)<\/p>\n<p>Bu tablo 3NF&#8217;dedir \u00e7\u00fcnk\u00fc anahtar olmayan hi\u00e7bir \u00f6zellik (bu tabloda anahtar olmayan \u00f6zellik yoktur, \u00e7\u00fcnk\u00fc t\u00fcm \u00f6zellikler aday anahtarlar\u0131n bir par\u00e7as\u0131d\u0131r) ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131\u011fa sahip de\u011fildir. Ancak BCNF&#8217;de de\u011fildir \u00e7\u00fcnk\u00fc:<br \/>\n*   <code>\u00d6\u011fretmen_ID<\/code> bir belirleyicidir (<code>\u00d6\u011fretmen_ID -> Konu_Ad\u0131<\/code>), ancak tek ba\u015f\u0131na bir aday anahtar de\u011fildir (\u00f6rne\u011fin, O1 Veritaban\u0131 ve Programlama derslerinde ders veriyor).<br \/>\n*   <code>Konu_Ad\u0131<\/code> bir belirleyicidir (<code>Konu_Ad\u0131 -> \u00d6\u011fretmen_ID<\/code>), ancak tek ba\u015f\u0131na bir aday anahtar de\u011fildir.<\/p>\n<p>Bu durum, <code>\u00d6\u011fretmen_ID<\/code> ve <code>Konu_Ad\u0131<\/code> aras\u0131nda kar\u015f\u0131l\u0131kl\u0131 bir ba\u011f\u0131ml\u0131l\u0131k oldu\u011fu ve her ikisinin de tablonun tamam\u0131 i\u00e7in aday anahtar olmamas\u0131 durumunda ortaya \u00e7\u0131kan bir anormalliktir. \u00d6rne\u011fin, O1 \u00f6\u011fretmeninin Java konusunda ders verdi\u011fini de\u011fi\u015ftirmek istedi\u011finizde, O1&#8217;in ge\u00e7ti\u011fi t\u00fcm ders kay\u0131tlar\u0131nda bu de\u011fi\u015fikli\u011fi yapman\u0131z gerekir.<\/p>\n<p><strong>BCNF&#8217;ye D\u00f6n\u00fc\u015ft\u00fcrme:<\/strong><br \/>\nBCNF&#8217;yi sa\u011flamak i\u00e7in, belirleyici olan ancak aday anahtar olmayan \u00f6zellikleri ve onlara ba\u011f\u0131ml\u0131 olan \u00f6zellikleri ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z.<\/p>\n<p><strong>1. <code>\u00d6\u011fretmen_Konu<\/code> tablosu olu\u015fturma:<\/strong><br \/>\n<code>\u00d6\u011fretmen_ID -> Konu_Ad\u0131<\/code> ve <code>Konu_Ad\u0131 -> \u00d6\u011fretmen_ID<\/code> ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ayr\u0131 bir tabloya ta\u015f\u0131r\u0131z. Bu tabloda <code>\u00d6\u011fretmen_ID<\/code> ve <code>Konu_Ad\u0131<\/code> her ikisi de aday anahtar ve dolay\u0131s\u0131yla birincil anahtar olabilir.<\/p>\n<p><code>\u00d6\u011fretmen_Konu<\/code> tablosu:<\/p>\n<p>| \u00d6\u011fretmen_ID | Konu_Ad\u0131    |<br \/>\n| :&#8212;&#8212;&#8212;- | :&#8212;&#8212;&#8212;- |<br \/>\n| O1          | Java        |<br \/>\n| O2          | SQL         |<br \/>\n| O3          | Java        |<\/p>\n<p><em>(Not: Bu \u00f6rnekteki &#8220;Bir konu sadece belirli bir \u00f6\u011fretmen taraf\u0131ndan verilir&#8221; kural\u0131, <code>\u00d6\u011fretmen_Konu<\/code> tablosunda <code>Konu_Ad\u0131<\/code>&#8216;n\u0131n birincil anahtar olmas\u0131n\u0131 gerektirir, <code>\u00d6\u011fretmen_ID<\/code>&#8216;nin de birincil anahtar olmas\u0131n\u0131 gerektirir. Bu, asl\u0131nda <code>\u00d6\u011fretmen_ID<\/code> ve <code>Konu_Ad\u0131<\/code> aras\u0131nda bire bir ili\u015fki oldu\u011funu g\u00f6sterir. Bu durumda, her ikisi de tek ba\u015f\u0131na aday anahtard\u0131r ve bu tablo BCNF&#8217;dedir.)<\/em><\/p>\n<p><strong>2. Orijinal tabloyu g\u00fcncelleme:<\/strong><br \/>\n<code>Ders_\u00d6\u011fretmen<\/code> tablosu:<\/p>\n<p>| Ders_Ad\u0131  | \u00d6\u011fretmen_ID |<br \/>\n| :&#8212;&#8212;&#8211; | :&#8212;&#8212;&#8212;- |<br \/>\n| Veritaban\u0131 | O1          |<br \/>\n| Veritaban\u0131 | O2          |<br \/>\n| Programlama | O3          |<br \/>\n| Programlama | O1          |<\/p>\n<p>Art\u0131k <code>Ders_\u00d6\u011fretmen<\/code> tablosunda <code>(Ders_Ad\u0131, \u00d6\u011fretmen_ID)<\/code> bir aday anahtard\u0131r. <code>\u00d6\u011fretmen_Konu<\/code> tablosunda ise <code>\u00d6\u011fretmen_ID<\/code> (veya <code>Konu_Ad\u0131<\/code>) bir aday anahtard\u0131r ve dolay\u0131s\u0131yla her belirleyici bir aday anahtard\u0131r. Her iki tablo da BCNF&#8217;dedir.<\/p>\n<h3>Denormalizasyon: Ne Zaman ve Neden?<\/h3>\n<p>Normalizasyon, veri b\u00fct\u00fcnl\u00fc\u011f\u00fc ve tekrar\u0131n\u0131 azaltma a\u00e7\u0131s\u0131ndan ideal olsa da, baz\u0131 durumlarda performans kay\u0131plar\u0131na yol a\u00e7abilir. \u00d6zellikle karma\u015f\u0131k raporlama veya y\u00fcksek okuma (read) yo\u011funluklu sistemlerde, \u00e7ok say\u0131da birle\u015ftirme (join) i\u015flemi gerektiren y\u00fcksek normalizasyon seviyeleri sorgu performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. Bu gibi durumlarda, <strong>denormalizasyon<\/strong> ad\u0131 verilen bir teknik devreye girebilir.<\/p>\n<p>Denormalizasyon, kas\u0131tl\u0131 olarak normalizasyon kurallar\u0131ndan saparak, veri tekrar\u0131n\u0131 art\u0131rma pahas\u0131na sorgu performans\u0131n\u0131 art\u0131rmay\u0131 ama\u00e7lar. Bu genellikle a\u015fa\u011f\u0131daki senaryolarda tercih edilir:<\/p>\n<p>*   <strong>Raporlama ve Analitik Sistemler (OLAP):<\/strong> Bu sistemlerde genellikle b\u00fcy\u00fck veri k\u00fcmeleri \u00fczerinde karma\u015f\u0131k birle\u015ftirmeler ve toplama i\u015flemleri yap\u0131l\u0131r. Denormalize edilmi\u015f tablolar, bu sorgular\u0131n \u00e7ok daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilir.<br \/>\n*   <strong>S\u0131k Eri\u015fimli Veriler:<\/strong> \u00c7ok s\u0131k okunan ve nadiren g\u00fcncellenen veriler i\u00e7in denormalizasyon, okuma s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131saltabilir.<br \/>\n*   <strong>Veri Ambarlar\u0131:<\/strong> Veri ambarlar\u0131 genellikle denormalize edilmi\u015f veya k\u0131smen denormalize edilmi\u015f star veya snowflake \u015femalar\u0131 kullan\u0131r.<br \/>\n*   <strong>Performans Engelleri:<\/strong> Normalizasyonun, belirli bir sorgu veya i\u015flem i\u00e7in kabul edilemez performans d\u00fc\u015f\u00fc\u015flerine neden oldu\u011fu tespit edildi\u011finde.<\/p>\n<p><strong>Denormalizasyonun Dezavantajlar\u0131:<\/strong><\/p>\n<p>*   <strong>Artan Veri Tekrar\u0131:<\/strong> Ayn\u0131 verinin birden fazla yerde depolanmas\u0131.<br \/>\n*   <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc Riskleri:<\/strong> G\u00fcncelleme, ekleme ve silme anormallikleri riski artar. Verilerin tutarl\u0131 kalmas\u0131n\u0131 sa\u011flamak i\u00e7in ek tetikleyiciler (triggers) veya uygulama katman\u0131 mant\u0131\u011f\u0131 gerekebilir.<br \/>\n*   <strong>Daha Fazla Depolama Alan\u0131:<\/strong> Tekrar eden veriler nedeniyle daha fazla depolama alan\u0131 gerektirir.<br \/>\n*   <strong>Daha Karma\u015f\u0131k G\u00fcncelleme \u0130\u015flemleri:<\/strong> Bir veriyi de\u011fi\u015ftirmek, birden fazla tabloda veya birden fazla s\u00fctunda g\u00fcncelleme gerektirebilir.<\/p>\n<p>Denormalizasyon, dikkatli bir analiz ve tasar\u0131m karar\u0131 gerektirir. Performans gereksinimleri ile veri b\u00fct\u00fcnl\u00fc\u011f\u00fc riskleri aras\u0131nda bir denge kurulmal\u0131d\u0131r. Genellikle, veritaban\u0131 \u00f6ncelikle normalle\u015ftirilir ve yaln\u0131zca belirli performans darbo\u011fazlar\u0131 tespit edildi\u011finde ve dikkatlice planland\u0131\u011f\u0131nda denormalizasyon uygulan\u0131r.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Veritaban\u0131 normalizasyonu, ili\u015fkisel veritaban\u0131 tasar\u0131m\u0131n\u0131n temel bir ilkesidir ve veri tekrar\u0131n\u0131 en aza indirerek, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc art\u0131rarak ve veri anormalliklerini ortadan kald\u0131rarak veritaban\u0131n\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 ve verimlili\u011fini sa\u011flar. 1NF, 2NF, 3NF ve BCNF gibi normal formlar, bu hedeflere ula\u015fmak i\u00e7in ad\u0131m ad\u0131m bir k\u0131lavuz sunar. Her bir normal form, bir \u00f6nceki formun gereksinimlerini temel al\u0131r ve veri modelini daha da rafine eder.<\/p>\n<p>*   <strong>1NF<\/strong>, veri atomikli\u011fini ve tekrar eden gruplar\u0131n olmamas\u0131n\u0131 sa\u011flayarak temel bir yap\u0131 olu\u015fturur.<br \/>\n*   <strong>2NF<\/strong>, bile\u015fik anahtarlardaki k\u0131smi ba\u011f\u0131ml\u0131l\u0131klar\u0131 ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>3NF<\/strong>, anahtar olmayan \u00f6zellikler aras\u0131ndaki ge\u00e7i\u015fli ba\u011f\u0131ml\u0131l\u0131klar\u0131 giderir.<br \/>\n*   <strong>BCNF<\/strong>, 3NF&#8217;nin daha kat\u0131 bir versiyonu olarak, her belirleyicinin bir aday anahtar olmas\u0131n\u0131 sa\u011flayarak daha nadir ancak kritik anormallikleri ele al\u0131r.<\/p>\n<p>Genel olarak, \u00e7o\u011fu i\u015f uygulamas\u0131 i\u00e7in 3NF yeterli bir normalizasyon seviyesi sunar. BCNF, \u00f6zellikle karma\u015f\u0131k aday anahtar yap\u0131lar\u0131na sahip tablolarda daha ileri d\u00fczeyde bir optimizasyon sa\u011flar. Ancak, normalizasyonun a\u015f\u0131r\u0131ya ka\u00e7mas\u0131, sorgular\u0131n daha fazla birle\u015ftirme i\u015flemi gerektirmesi nedeniyle performans\u0131 olumsuz etkileyebilir. Bu gibi durumlarda, denormalizasyon, performans gereksinimlerini kar\u015f\u0131lamak i\u00e7in bilin\u00e7li bir tasar\u0131m se\u00e7ene\u011fi olarak d\u00fc\u015f\u00fcn\u00fclebilir.<\/p>\n<p>Sonu\u00e7 olarak, veritaban\u0131 tasar\u0131mc\u0131lar\u0131 ve geli\u015ftiricileri, uygulaman\u0131n \u00f6zel gereksinimlerini ve performans hedeflerini g\u00f6z \u00f6n\u00fcnde bulundurarak do\u011fru normalizasyon seviyesini se\u00e7melidir. Ama\u00e7, veri b\u00fct\u00fcnl\u00fc\u011f\u00fc ile sistem performans\u0131 aras\u0131nda en uygun dengeyi bulmakt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri\nVeritaban\u0131 tasar\u0131m\u0131, bir bilgi sisteminin temelini olu\u015fturur","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-32445","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri\" \/>\n<meta property=\"og:description\" content=\"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri Veritaban\u0131 tasar\u0131m\u0131, bir bilgi sisteminin temelini olu\u015fturur\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-21T19:41:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri\",\"datePublished\":\"2025-10-21T19:41:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\"},\"wordCount\":3021,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\",\"name\":\"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-21T19:41:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri","og_description":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri Veritaban\u0131 tasar\u0131m\u0131, bir bilgi sisteminin temelini olu\u015fturur","og_url":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-21T19:41:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri","datePublished":"2025-10-21T19:41:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/"},"wordCount":3021,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/","url":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/","name":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-21T19:41:05+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/veritabani-normalizasyonu-1nf-2nf-3nf-ve-bcnf-ilkeleri-ve-uygulama-ornekleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Veritaban\u0131 Normalizasyonu: 1NF, 2NF, 3NF ve BCNF \u0130lkeleri ve Uygulama \u00d6rnekleri"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32445"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32445\/revisions"}],"predecessor-version":[{"id":32446,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32445\/revisions\/32446"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}