Veri Tabanı Tasarımı

Gökhan YAVAŞ
gokhanyavas
Published in
5 min readApr 15, 2017

Herkese Merhaba,

Veri Tabanı Tasarımına başlamadan önce ihtiyaçların belirlenmesi gerekir. Tasarlanacak olan veri tabanının hangi verileri depolayacağı, tabloların neler olacağı ve ne tür veriler barındıracağı gibi sorular düşünülmelidir. Tüm bunları düşündükten sonra tasarım aşamasına geçilmesi gerekir. Düşünülmeden yapılan tasarımlar ileride hem sizin hem de başkalarının zamanını boşa harcamasına yol açacaktır.

İlk defa veri tabanı kelimesini duyanlar için tanımı biraz açmak istiyorum. Veri tabanı, içinde birilerine veya ürüne ait bilgileri içeren ortamdır. Veri tabanları tablolardan, tablolar ise sütun ve satırlardan oluşur. Örnek bir tablo görüntüsü;

Tablolar ve Kısıtlayıcılar

Veri tabanlarının tablolardan oluştuğunu belirtmiştik. Benim bu konuda anlatmak istediğim birbiriyle ilişkileri olan tabloların oluşturduğu yapı yani ilişkisel veri tabanı yapısı.

Daha önceki makalelerimde bir tablonun nasıl yaratıldığını ve bu tablolarında kısıtlayıcılar ile şekillendirildiğini belirttim. Bu yapıların ne olduğunu bilmeden veri tabanı tasarımı yapmanın neredeyse lafta kalacağını belirtmek isterim. Bu yüzden öncelikle bunları buradan öğrenmeniz gerekmektedir. Ben bunları biliyorum diyorsanız konunun devamını okuyup bilgi edinebilirsiniz.

Normalizasyon

İlişkisel veri tabanları tasarlanırken gereksiz veri tekrarını, bilgi kaybını önlemek amacıyla normalizasyon işleminin uygulanması gerekmektedir. Normalizasyon uygulanarak ilişkilerin normal forma getirilmesi sağlanır. Normalizasyon, taslak veri tabanı üzerinde bazı işlemler yaparak taslağı son haline yaklaştırma yöntemidir. İyi tasarlanmamış bir veri tabanında ekleme, güncelleme ve silme işleminden kaynaklanan bozulmalar nedeniyle kullanım zorluklarını meydana gelir. Normalizasyon, veri tabanında bu tür sapmaları ortadan kaldırmayı sağlayan bir süreçtir.

Birinci Normal Form(1NF)

Herhangi bir tablonun tekrarlı veriler içerdiği duruma 1NF denir.

[caption id=”attachment_2504" align=”alignnone” width=”934"]

1NF örnek tablo yapısı[/caption]

1NF Özellikleri:

  • Tüm özellikler birincil anahtara bağımlıdır.
  • Tabloda tekrarlanan gruplar yoktur. Yani her satır ve sütunun kesiştiği noktada sadece bir bulunmaktadır.

1NF Sorunları:

1NF biçimindeki tabloda ekleme, güncelleme ve silme işlemlerinde bazı sorunlarla karşılaşabiliriz. Örnek tablo üzerinden gidelim. Silme işlemi ve güncelleme işlemi yapmak istiyoruz. ID adresine göre yaptığımızı varsayalım. ID’si 1 olan kayıtı silmek veya güncellemek istediğimizde 1 ID’sine sahip olan tüm kayıtlar etkilenecektir. Tablodaki verilerin milyonlarca olması durumunda ortaya çıkacak sorunu hayal edebiliyor musunuz?

İkinci Normal Form(2NF)

Veri tabanı tasarımı sırasında birinci normal formun neden olduğu sorunları çözmek için birinci normal formdaki tabloyu başka normal tablolara bölmemiz gerekir.

[caption id=”attachment_2506" align=”alignnone” width=”861"]

1NF özelliğinde tablo[/caption]

Tablolar bölünürken fonksiyonel bağımlılık göz önünde bulundurulmalıdır. Bölünen tablolardan birinin birincil anahtarı ile bölünen diğer tablodaki birincil olamayan bir alan arasında bağımlık varsa buna tam bağımlılık denir. Bu duruma ikinci normal form adı verilir.

Örnekteki tabloda meydana gelen sorunları azaltmak için 2NF’ye dönüştürülmesi gerekmektedir. Bunun için yapılması gereken anahtara bağlı olmayan sütunları anahtara bağlamak ve yeni tablolara bölmek olacaktır. Yani şu şekilde olmalı;

[caption id=”attachment_2507" align=”alignnone” width=”861"]

2NF biçiminde tablo 1[/caption]

[caption id=”attachment_2508" align=”alignnone” width=”490"]

2NF biçiminde tablo 2[/caption]

2NF Sorunları:

2NF biçiminde olan tabloya veri ekleme ve silme işlemlerinde bazı sorunlarla karşılaşılabilmektedir. Örneğin üyeler tablosundan veri silmek istediğimizi varsayalım. O il ve ilçede bulunan tek üyeyse, o üyenin bulunduğu adres bilgisi silinecektir. Silinen adresi tekrar eklemek istediğimizde üye kaydı yoksa satır ekleme sorunu ile karşılaşırız.

Üçüncü Normal Form(3NF)

İkinci normal form ile ortaya çıkan sıkıntıları çözmek için nitelikler arasında geçişli fonksiyonel bağlılıkları ortadan kaldırmamız gerekmektedir. Bir tablodaki veriden başka bir tabloda bulunan aynı veri üzerinden ilişkili diğer bir veriye ulaşıp, ulaştığımız veriyi kullanarak üçüncü bir tabloda farklı bir veriye erişiyorsak bu işlemi geçişli fonksiyonel bağımlılık olarak isimlendiririz.

Bir anahtara bağlı olmayan geçişli bağımlılıklar tablolara dönüştürüldüğü zaman 3NF elde edilmiş olur.

Üçüncü normal form özelliğindeki tablolar hem 2NF’nin özelliklerine sahip olmalı hem de geçişli fonksiyon bağımlılığı bulunmamalıdır.

3NF sorunları:

Aşağıdaki tabloda ilişkili 3NF şeklinde olup bazı sorunlar içermektedir. Bir öğrenci birden çok ders alabildiği gibi bir derse de birden çok öğretmen girebilir.

3NF’de karşılaşılan sorunları önlemek için Boyce-Codd normal formunu elde etmeye çalışmamız gerekir.

Boyce-Codd Normal Form(BCNF)

Bir tablonun BCNF olup olmadığını anlamak için tablonun tüm belirleyicileri tespit
edilip, her birinin aday anahtar özelliği taşıyıp taşımadığını kontrol etmeliyiz.
Veri Tabanı tablolarını 1NF, 2NF ve 3NF işlemine uygun olarak düzenledikten sonra
bazı tablolarda tüm alanların aday anahtar olarak kaldığını görebiliriz, bu durumda BCNF
işlemine göre tablo veya tablolarımızı parçalamamız gerekir.
Veri tabanı tasarımında A → B şeklinde bir fonksiyonel bağlılık bulunuyorsa, bu
bağımlılıktaki B birincil anahtar olmak zorundadır. 3NF tasarımında A anahtarı bir aday
anahtar (candidate key) olmak zorunda değildir. Ancak BCNF’de bunun tersine A → B
şeklindeki bir fonksiyonel bağımlılık durumunda A bir aday anahtar olmalıdır.

4NF ve 5NF

Kayıtlar arasında çok sayıda tekrarlama söz konusuysa, kayıtlar ilgili tablolara bölünerek 4NF oluşturulmaktadır.

Örneğin proje adı ve kullanılan teknolojiler isiminde iki kolonumuz olsun. Her proje farklı teknoloji kullanılarak geliştirileceğinden ve birçok teknoloji kullanılarak geliştirileceğinden teknolojiler farklı tablolarda tutulmalı ID’leri ilgili tabloda tutulmalıdır.

5NF olan bir kayıt aynı zamanda diğer normal formları da içerir. 5NF kısıtlama olmadığı sürece 4NF’den farklı değildir.

Tekrarlamaları ortadan kaldırmak için her tablonun mümkün olduğunca küçük parçalara bölünmesi gerekir.

Normalizasyon Algoritması

Şimdiye kadar bahsettiğimiz kuralları toplarsak aşağıdaki gibi algoritma ortaya çıkar.

[caption id=”” align=”alignnone” width=”587"]

Normalizasyon basamakları[/caption]

Örnek

Anlatılanları içeren Merkezi Kütüphane Sistemi veri tabanı şeması/tasarımı.

Basit gibi dursa da veri tabanı tasarlamak zor iştir. Kendinize iyi bakın ;)

Kaynak: MEB-VT-481BB0124

--

--