2 Kasım 2013 Cumartesi

Veritabanı, İlişkisel Veritabanları ve Veritabanı Tasarımı

 VERİTABANI NEDİR?
Bir okul; öğretmen ve öğrencilere ait kimlik bilgileri, ders programları, sınav sonuçları, yoklama raporları gibi bilgileri saklama gereksinimi duyabilir. Buna karşılık ticari bir firma ise; personel özlük bilgileri, depodaki malzemelere ait hareketler, müşterilerin telefon numaraları, gelen siparişler, gönderilen teslimatlar, ürün fiyatları gibi bilgileri de saklamak isteyebilir. Belirli bir düzen içinde korunmak istenen bilgilerin içeriği ne kadar farklı olursa olsun, ortak bir konu yada belirli bir amaçla ilişkili bilgilerin oluşturduğu bütüne Veritabanı denilmektedir.
Bir işletmenin günlük faaliyetlerini sürdürebilmesi için, işletmenin çeşitli konuları ile ilgili ve aynı zamanda işletmenin büyüklüğü ile de orantılı olarak, çok miktarda bilgi depolanması gerekebilir. Ancak bilgilerin sadece depolanması yeterli değildir. Bu bilgiler arasındaki ilişkilerinde saklanması gerekecektir. Çok büyük sayıdaki bilgilerin klasik dosya sistemi ile depolanması, tutulması mümkün olmadığı gibi veriler arasındaki ilişkilerin belirlenmesi de bir o kadar zordur.
Tasarımın önemli ilkelerinden biri olan veritabanının amacını ve ne için kullanılması gerektiğini belirledikten sonra, ortak bir hedefe yönelik verilerin gruplandırılarak tablolarda saklanması gerekir. Belirli bir konuyla ilgili olguların yer aldığı en temel veritabanı nesnesi olan tabloların amacı verileri depolamaktır. Ortak bir hedef dâhilinde farklı tablolarda yer alan verilerin, yeniden anlamlı biçimde bir araya getirilmesi gerekebilir. Bu işlemin gerçekleşebilmesi için tablolar arasındaki ilişkilerin tanımlanması gerekmektedir. İçerisinde yer alan tabloların birbirleriyle ilişkilendirildiği, tüm bilgileri tek tablo üzerinde barındırmayan, gereksiz tekrarlardan arındırılmış, güncelleme ve değişiklik yapılırken tüm veritabanının elden geçirilmediği, hızlı sorgulama yapılabilen, genişleme imkânları kısıtlı olmayan, esnek ve ortak bir amaca hizmet eden bir veritabanı İlişkisel Veritabanı olarak adlandırılabilir .

 VERİTABANI TASARIMI
Bir veritabanı tasarlarken mümkün olduğunca işlevsel olmasına dikkat edilmelidir. Bütün verileri tek bir tabloda toplamak hiçbir zaman amaca tam hizmet etmeyeceği gibi, her şeyin bir arada olması da veritabanının yönetilmesinde ve kontrolünde zorluklara, yapılmak istenilen değişikliklerin zaman almasına ve yapılacak sorgulamalarda zaman kaybına sebep olabilmektedir. Tabloları, sorguları ve diğer veritabanı nesnelerini oluşturmadan önce, tasarımı kâğıt üzerinde oluşturmak ve üzerinde çalışmak, ayrıca tasarımı düşünülen veritabanına benzeyen iyi kurgulanmış veritabanlarını, tabloları arasındaki ilişkileri de göz önünde bulundurarak incelemek iyi bir başlangıç olacaktır.
Veritabanı tasarlarken aşağıdaki temel ilkelerin belirtilen sırada uygulanması, tasarımdan beklenen amaca uygun sonuçların alınmasında önemli bir etken olacaktır.
 Veritabanının Amacını Belirleme
Veritabanı tasarlamada ilk adım, tasarımın amacını ve ne için kullanılması gerektiğini belirlemektir. Bunun için;
• Veritabanını kullanacak kişilerle konuşulmalı, tasarımcının ve kullanıcıların veritabanına sormak istediği sorular beyin fırtınası yöntemiyle toplanmalı,
• Veritabanının oluşturması istenilen raporların taslağı çizilmeli,
• Verileri kaydetmek için kullanılacak formlar bir araya getirilmelidir.
Veritabanının amacı belirlendiğinde, veritabanından istenilen bilgilerin listesi oluşmaya başlar. Bu listeden hareketle, veritabanında hangi olgulara ilişkin bilgilerin saklanması gerektiği ve her olgunun hangi konuyla ilgili olduğunun belirlenmesi gerekir. Bu olgular veritabanındaki alanlara (sütunlara) ve bu olguların ilgili olduğu konular da tablolara karşılık gelir.
Veritabanında Gerek Duyulan Alanları Belirleme
Her alan belirli bir konuyla ilgili bir olguyu içerir. Örneğin, müşteriler ile ilgili şirket adı, adres, şehir, ülke ve telefon numarası gibi olguların saklanması istenebilir. Bu olguların her biri için ayrı bir alan oluşturulması gerekebilir. Hangi alanlara gereksiniminiz olduğunu belirlerken, aşağıdaki tasarım ilkeleri unutulmamalıdır:
• Gerek duyulacak tüm bilgiler eklenmelidir.
• Bilgiler en küçük mantıksal parçalar halinde saklanmalıdır. Örneğin, çalışan adları çoğu kez Adı ve Soyadı gibi iki alana ayrıldığından, verileri Soyadı'na göre sıralamak daha kolaydır.
• Birden çok öğenin yer aldığı listelerden oluşan veriler için alan oluşturulmamalıdır. Örneğin, bir tedarikçiler tablosunda, tedarikçiden alınan her ürününün virgülle ayrılmış listesini içeren bir Ürünler alanı oluşturulursa, yalnızca belirli bir ürünü sağlayan tedarikçileri bulmak çok daha zor olacaktır.
• İfade sonucu oluşan türetilmiş veya hesaplanmış veriler eklenmemelidir. Örneğin, BirimFiyat ve Miktar alanları varsa, bu iki alandaki verileri çarpan ek bir alan oluşturulmamalıdır.
• Birbirine benzeyen alanlar yer almamalıdır. Örneğin, Tedarikçiler tablosunda Ürün1, Ürün2 ve Ürün3 isimli alanlar oluşturulursa, belirli bir ürünü sağlayan tüm tedarikçileri bulmak çok daha zor olacaktır. Ayrıca, belirli bir tedarikçi üçten çok ürün sağlarsa, veritabanının tasarımını değiştirmek gerekecektir. Bu alan Tedarikçiler tablosu yerine Ürünler tablosuna yerleştirilirse, ürünler için yalnızca bir alana gereksinim olacaktır.
Veritabanında Gereksinim Duyulan Tabloları Belirleme
Her tablo ortak bir konu ya da belirli bir amaç hakkında bilgi içermelidir. Alan listesi, gereksinim duyulan tablolara ilişkin ipuçları sağlar. Örneğin, bir İşeAlmaTarihi alanı varsa, bu alanın konusu bir çalışandır ve bu nedenle de Çalışanlar tablosuna aittir. Müşteriler için bir tablo, Ürünler için bir tablo ve Siparişler için farklı bir tablo veritabanında yer alabilir.
 Her Bir Alanın Hangi Tabloya Ait Olduğunu Belirleme
Her bir alanın hangi tabloya ait olacağına karar verilirken şu tasarım ilkeleri göz önünde bulundurulmalıdır:
• Alan, yalnızca tek bir tabloya eklenmelidir.
• Tablonun birçok kaydında görünen bilgilerin aynısını verecekse, alan bir tabloya eklenmemelidir. Tablodaki bir alanın çok miktarda yinelenen bilgi içereceği belirlenirse, o alanın yanlış tabloda olma olasılığı çok yüksektir.
Örneğin, bir müşterinin adresini içeren bir alan Siparişler tablosuna eklenirse, müşteri birden çok sipariş verdiğinde bu bilgiler birden çok kayıtta yinelenebilecektir. Bununla birlikte, adres alanı Müşteriler tablosuna koyulursa, yalnızca bir kez görünür. Bu bakımdan, bir veritabanındaki bir tablo, çalışma sayfası gibi düz bir dosya veritabanındaki bir tablodan farklıdır.
Her bilgi parçası yalnızca bir kez saklandığında, bu bilgi tek bir yerde güncelleştirilebilir. Bu daha faydalıdır ve böylece farklı bilgi içeren yinelenen giriş olasılığı da ortadan kalkmış olur.
Alanı Her Kayıttaki Benzersiz Değerlerle Tanımlama
İlişkisel bir veritabanı, farklı tablolarda saklı bilgileri bağlamak için, örneğin, çalışanların aldığı sipariş talepleri ile çalışanları ilişkilendirmek için, veritabanındaki her tablo veya tablodaki her ayrı kaydı benzersiz olarak tanımlayan bir alan veya alanlar kümesi içermelidir. Bu tür bir alana veya alanlar kümesi birincil anahtar olarak adlandırılır.
Birincil anahtar benzer bilgileri birbirinden ayıran ve her kaydı benzersiz kılan bir tanımlayıcıdır. Ayrıca bilgileri bir araya getirir. Bir tablo, birincil anahtar kullanılarak başka
bir tabloyla ilişkilendirilebilir. Tablolar bu şekilde veri paylaşır ve her iki tabloda da verilerin yinelenmesini engellenmiş olur. Birincil anahtarlar, bakımı zor olan ve birlikte çalışmayan çok sayıda yinelemeli listelerle çalışmak yerine ilişkisel veritabanlarının gücünden yararlanmaya olanak sağlar.
Anahtar alanların seçiminde, tasarımcıyı kısıtlamadığı sürece, doğal alanların tercih edilmesinde önemli fayda vardır. Örneğin, araçlar ile ilgili bir tablo oluştururken, plakalar anahtar alan olarak belirlenebilir. Çünkü her bir plakadan bir tek araç trafiğe çıkabilir. Bu tasarımcıyı kısıtlamaz. Öğrenci tablosu için, öğrenci numarası doğal bir anahtar alandır, çünkü aynı okulda, aynı numaradan bir öğrencinin daha bulunması söz konusu değildir.
Tablolar ilişkili olduğunda, bir tablonun birincil anahtarı diğer tablonun yabancı anahtarı olmaktadır.
Yinelenen Bilgi İçeren Alanlar İçin Ek Tablo Oluşturma
Veritabanı için gereksinim duyulan alanlar ve bu alanların yer alacağı tablolar belirlendikten sonra her hangi bir alanda tekrarlanan verilerin oluşması, tasarımında en sık karşılaşılan veri tekrarı hatasının olduğunu göstermektedir. Tasarımın hatasız olabilmesi, yinelemenin olduğu bu tablonun en az bir tabloya daha ayrılmasıyla mümkün olabilir. Tasarımın bu önemli ilkeleri dâhilinde unutulmamalıdır ki, her veritabanı projesine uyacak evrensel bir tasarım tekniği yoktur. Dolayısıyla iyi bir tasarım bu kurallar çerçevesinde tasarımcının ne kadar teferruatlı düşünebildiğine bağlıdır.
Anahtar Alana Bağlı Olmayan Alanları Belirleme
İlişkisel veritabanlarında, tablodan herhangi bir tek kayda erişmek için mutlaka bir farklı özellik sağlanmalıdır ve bu özellik de anahtar alan vasıtasıyla gerçekleşir. Ancak bazen, anahtar alan ile aynı tabloda yer aldığı halde, anahtar alan ile birebir ilişkisi olmayan bir alan bulunabilir. Bu türden alanları elimine edip ayrı tablolara ayırmak gerekmektedir.
Örneğin, bir kütüphane bilgilerini içeren veritabanı tasarımında, Ödünç tablosunu ele alacak olursak, ödünç verilen her kitap için ödünç alanın adresi de bilinmek istenebilir, ancak bu bilgi Ödünç tablosuna yazılmamalıdır. Çünkü Ödünç tablosunun birincil anahtar alanı, uygun bir doğal alan olmadığı için ödünç verme sayısını tutan OduncNo alanı olacaktır. Dolayısıyla bu alana yazılacak bilgi, ödünç verme işlemi ile doğrudan ilgilidir. Oysa ödünç alanın adres bilgisi, ödünç alan kişinin kendisine bağlı bir özelliğidir. Bu kişinin her aldığı kitap için adresini tekrar tekrar yazmaya gerek yoktur. Aynı şekilde otomasyon içerisinde başka yerlerde de bu kişinin adres bilgilerine muhtemelen ihtiyaç duyulabilir çünkü adres Ödünç tablosunun değil, üyenin bir özelliğidir.
Tablolar Arasındaki İlişkileri Belirleme
Veritabanında yer alacak bilgileri farklı tablolara belirli konu başlıklarına göre ayırıp, birincil anahtar alanlarını belirlendikten sonra veritabanımıza ilgili bilgileri ayrı tablolardan yeniden anlamlı biçimde bir araya getirmesini söyleyebilmek için, tablolar arasında ilişkilerin belirlenmesi ve tanımlanması gereklidir. Her biri bir konuya dair verileri barındıran tabloların tümü göz önüne alınmalı ve birbirleri ile olan ilişkileri tanımlanmalıdır. Örneğin, kütüphanede bulunan bir kitabı ödünç verebiliriz. Bu durumda, Ödünç tablosu ile Kitap tablosu arasında bir ilişki olacaktır. Kitapların üyelere ödünç verilmesinden dolayı, Ödünç tablosu ile Üyeler tablosu arasında da bir ilişki tanımlanmalıdır. Kitaplar ile üyeler arasında ortak bir amaca yönelik herhangi bir bilgi olamayacağından dolayı bu iki tablo direkt bir ilişki içinde değildir, ancak dolaylı olarak Ödünç tablosu üzerinden bir birlerine bağlıdırlar.
Tasarımı Geliştirme
Tasarımı yapılan veritabanında gerek duyulan tablolar, alanlar ve tablolar arası ilişkiler belirlendikten sonra, sıra tasarım üzerinde çalışmaya ve olabilecek hataları araştırmaya gelmiştir. Veritabanı tasarımını şimdi değiştirmek, tabloları veriyle doldurduktan sonra değiştirmekten daha kolaydır. Kullanılacak Veritabanı Yönetim Sisteminde tasarlanan yapıyı oluşturduktan sonra henüz veri girişi yapılmadan veritabanındaki ilişkileri denemek için, istenilen yanıtları almak amacıyla sorgular oluşturup oluşturulamayacağı denetlenmeli, formların ve raporların taslakları oluşturulup beklenilen sonuçları gösterip göstermediği kontrol edilmelidir. Ve son olarak veritabanının iyileştirilmesi ve esnek bir tasarımın olabilmesi için eğer varsa gereksiz yinelenen veriler tespit edilmeli ve ortadan kaldırılmalıdır.
Tasarımı İyileştirme
• Tablolara isim verirken mümkün olduğu durumlarda tekil isimler kullanılmalıdır. Böylece hem daha anlaşılır bir tasarım yapılmış hem de daha sonra kodlama aşamasında karşılaşılabilecek karışıklığın önüne geçmiş olunur. Örneğin, içinde kitap ile ilgili bilgiler bulunduracak tablonun adını Kitap koymak oldukça mantıklıdır.
• Tabloların yapısını oluştururken ilk sıraya o tablo için birincil anahtar olarak belirlenen alanı yerleştirmek bir kural değildir ancak tablonun okunabilirliği ve göze hoş görünmesi açısından tercih edilmesi, iyi bir tasarım için yararlı olacak bir tekniktir.
• Bir tablo için doğal bir anahtarın belirlenemediği durumlarda tabloya, yapay birincil anahtar alan eklenir. Bu anahtar alan isimlendirilirken genellikle tablo adı ile başlar ve sonuna ID ifadesi eklenir. Örneğin, Sipariş tablosunda her bir siparişi birbirinden benzersiz kılan bir doğal anahtar bulunmadığı durumlarda, birincil anahtar olarak atanan yapay anahtara SiparisID ismi verilebilir.
• Farklı tablolarda yer alan iki alan aynı veriyi tutuyorsa, iki alana da aynı ismi vermek, karışıklığa yol açabilir gibi görünse de aslında bu sayede daha düzgün bir yapı ortaya çıkar. KitapNo alanı, Kitap tablosunda da Ödünç tablosunda da kitap numarası tutmaktadır. Bu alanlardan birine KitapNo diğerine OduncGidenKitapNo demek, karışıklığa neden olabilir. En iyi seçim her iki tabloda ortak veri tutan alanlara aynı ismi vermektir.
 SONUÇ
Veritabanları ana hatlarıyla, veriyi verimli şekilde depolamayı ve bilgiye dönüştürmeyi amaçlayan sistemlerdir. Veritabanı sistemleri, günümüzde hemen her gün kullandığımız birçok yerde karşımıza çıkmaktadır. Faturalarımızın ödenmesi, sinema rezervasyonları yada sıklıkla kullandığımız e-posta işlemlerinin temelinde bir veritabanı bulunmaktadır. Büyük veya orta ölçekli bir veritabanı projesinin geliştirilme sürecinde doğruluk, güvenlik, verimlilik hayati önem taşımaktadır. Hataların oluşmasını engellemek ve esnek bir veritabanı tasarımına sahip olmak için on adımda anlatılan bu tasarım ilkelerinin belirtilen sırada uygulanması gerekir. Tasarımın bu önemli ilkeleri dâhilinde unutulmamalıdır ki, her veritabanı projesine uyacak evrensel bir tasarım tekniği yoktur. Dolayısıyla iyi bir tasarım bu kurallar çerçevesinde tasarımcının ne kadar teferruatlı düşünebildiğine bağlıdır.

Hiç yorum yok:

Yorum Gönder