İlişkisel Veritabanı Tasarımı, İlişkiler, Normalizasyon ve Normal Formlar
Kaynak: http://www.zskblog.com/detay.aspx?id=21
| Süper bir anlatım. Facebooktan biraz buna vakit ayırıp yalayıp yutarsanız nasıl veritabanı planlayacağınızı öğrenmiş olursunuz… | ||||||||
İlişkisel veritabanı neredeyse tüm veritabanlarında kullanıldığı için tasarımı ve normalizasyonu önemli bir konu. İyi bir ilişkisel veritabanı tasarımı yapmanın bir çok avantajı vardır. Tasarlanan ilişkisel veritabanın kalitesine paralel olarak kısaca sıralanacak avantajlar şunlardır :
İlişkisel veritabanın tasarımının avantajlarına kısaca göz attıktan sonra ilişkisel veritabanında olabilecek 3 adet ilişki türünü sıra sıra inceleyelim:
Bire Bir İlişki Türü: (İlişkisel Veritabanı Tasarımı) Kural basitir ; tablodaki anahtar ilişkili tabloda sadece bir tane olabilir. Aynı mantığı şekille gösterelim: (İlişkisel Veritabanı Tasarımı)
Yukarıdaki şekilde Ogrenciler ve Liseler adında iki tablo var. Öğrencinin mezun olduğu lise bir tane olacağını düşünürsek şekildeki ilişki türü buna uygundur. Ogrenciler tablosundaki Mezun_Lise_Id alanı ile ilişkili tabloyla alakalı Lise_Id alanı eşleştirilerek ilişki sağlanmış olunuyor.
Yapılan kısaltmalara açıklık getirelim. Birden Çoğa İlişki Türü: (İlişkisel Veritabanı Tasarımı) Birden çoğa ilişkide bir tablodaki anahtar ilişkili olduğu tabloda birden çok kez olabilir.
Yukarıdaki şekilde bir karikaturcunu birden fazla karikature sahip olabileceğini çıkartabiliriz. Çünkü Karikatur tablosunda ilişkili olduğu tablonun anahtarı bulunuyor (Foreign Key). Bu ilişki türü en çok karşılaşılan ilişki türüdür. Karikatürcü ve karikatur bilgisini veritabanından çekecek olursak yazacağımız SQL kodu şöyle olurdu:
Çoktan Çoğa İlişki Türü: (İlişkisel Veritabanı Tasarımı) Çoktan çoğa ilişikiler karmaşıklığı nedeniyle veritabanında bir çok soruna neden oldur. Bunu nasıl yapağımızı örnek vererek açılayayım: Öncelikle Futbolcular ve Takimlar adında aşağıdaki şekildeki gibi iki tane tablo olşuturalım: (İlişkisel Veritabanı Tasarımı)
Daha önce yaptığımız gibi anahtari ilişkisel olduğu tabloya Foreign Key ( Komşu Anahtar) ekleyerek çoktan çoğa ilişkiyi sağlamak düşünürseniz mümkün değil.
Böylece hedefi tam 12′den vuracak şekilde ilişkisel veritabanı tasarımını yapmış olduk. Çoktan çoğa ilişkiyi birden çoğa indirgediğimiz için iki tane birden çoğa ilişki elde ettik yine bu sebepten iki tane FK (Foreign Key) ortaya çıktı. Dolayısıyla SQL sorugusu iki adet olacak. Birincisi bir futbolcunun oynadığı takımlar, ikicisi ise bir takımda oynayan futbolcular olacak. Birinci sorgumuz (Id numarası 1 olan futbolcunun oynadığı takımları getiren sorgu)
İkinci sorgumuz (Id numarası 1 olan takımda oynayan futbolcuları getiren sorgu)
Artık üç tip ilişki tipini öğrendik. Biraz da normalizasyon konusunu inceleyelim.
Normalizasyon Normalizasyon kısaca işinizi kolaylaştıracak bir takım kurallar kümesidir. Tablolarınızı uygun hallerde ilişkilendirme ve gecekteki olası büyümelere karşı esnek olacak şekilde organize edebilme yeteneğidir. Normalizasyonda kullanılan kurallar kümesine normal formlar denir. Toplamda 7 adet birbirini izleyen normal form vardır. Fakat 7 adet normal form kullanan çok azdır ya da yoktur. :) Genellikle ya 2 ya da 3 adet form kullanmak yeterli olmaktadır. Bu yüzden Normalizasyon konusunu anlatırken biz de 3 adet normal form kullanacağız. Daha önce yaptığımız örneğe benzer bir örnekle Normalizasyon konusuna giriş yapalım. Birinci normal formu uygulamak için düzeltilmesi gereken problemler olması gerekir. Veritabanında çalışırken oluşabilecek problem düz tablodur. Düz tablo bir sürü sütuna sahiptir ve birbirine benzer veriler yer alır. Tüm veriler düz tablo içinde yer alır. Bir takım ve takımda oynayan oyuncuların hepsinin sadece bir tabloda, yani düz tabloda olduğunu düşünün:
Yukırıdaki tabloda ileriye yönelik oluşabilecek en büyük sorun şudur: Takimda oynayan başka bir oyuncu eklemek için yeni sütünlar eklemek gerekir. Bu senaryo oldukça verimsiz ve fazla fiziksel alan tüketir. Problemi belirledikten sonra çözüm üretmek için artık birinci normal formu hazırlayabiliriz. 1) Birinci normal form: (İlişkisel Veritabanı Tasarımı ve Normalizasyon) Kurallar: Eğer kuralları uygularsak tekrarlanan veriler için tabloyu Futblcular ve Takimlar olarak ikiye ve ilişkiyi Foreign Key (Komşu Anahtar) kullanarak çözebiliriz.
Yaptığımız iki tablo ve arasındaki birden çoğa ilişki sayesinde bir takımda oynayan futbolcuları farkli bir tabloya ekledik ve böylece esneklik sağladık. 2) İkinci normal form: (İlişkisel Veritabanı Tasarımı ve Normalizasyon) Bu normal formun kuralları şöyle olsun ; Bu kuralı uygulayacak olursak yeni bir tablo oluşturak Birinci anahtara bağlı olmayan ve anahtar olmayan nitelikleri elemiş oluruz.
3) Üçüncü normal form: (İlişkisel Veritabanı Tasarımı ve Normalizasyon) Üçüncü normal form kuralları; Üçüncü normal forma alınmış hali:
Yukarıdaki şekilde takim kurucularının bilgisini başka bir tabloya taşıyarak esnekliği arttırdık. Normalizasyon konusu bu şekilde ve form sayısı ihtiyaca göre arttırılabilir. Sizde kendi ilişkisel veritabanını dizayn ederken bu üç ilişkiyi ve normalizasyonu uygulayarak veritabanına esneklik, kullanım rahatlığı ve hakimiyet sağlayabilirsiniz. |










Son Yorumlar