02/06/2009, 16:42
mesudi
İLİŞKİSEL VERİTABANI (RELATIONAL DATABASE)
Bir tablo bir tek varlığa ait bilgileri tutmak için tasarlanır. Örneğin bir kitap tablosunda sadece kitaplara ait bilgiler vardır. 20 adet kitap bilgisi varsa, bu tabloya 20 adet satır eklenecek demektir. İlişkisel veri tabanı yaklaşımını ilişkisel yapan asıl unsur verilerin tablolara parçalanarak saklanmasıdır.
Tabloların kaç adet olacağı ve birbiriyle nasıl ilişkilendirileceğine karar verirken var olan kuralları kullanarak mantıksal bir plan ile hareket edilir.
Eğer tablolar üzerinde verileri normalize etmezseniz birçok sıkıntı oluşabilir. Bazı bilgiler birden fazla tekrarlanabilir. Bir bilgiyi güncellemek, veri eklemek ve silmek için birden fazla yerde bulma, değiştirme ve silme yapmanız gerekebilir. Bu nedenle normalizasyon kurallarını kullanmalısınız.
Genel kabul gören beş normalizasyon kuralı vardır. Bu kurallar, ilişkisel veri tabanının tanımı ile birlikte ortaya konmuştur. Veri tabanı normalizasyonu yukarıdaki resime bağlı olarak anlatılacaktır. Açıklamalar yapılırken bu resme dikkat etmelisiniz.
1. Normalizasyon Kuralı
Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir. Örneğin kitap tablosunda, birden fazla yazarı olan kitap için yazar1, yazar2, yazar3 diye alanlar açsanız, bu kurala uymamış olursunuz. Böyle bir durumda, ayrıca yazarlar tablosu da oluşturarak kuralı çiğnememeye dikkat etmelisiniz.
2. Normalizasyon Kuralı
Bir tablo için, anahtar olmayan her alan, birincil anahtar olarak tanımlı tüm alanlara bağlı olmak zorundadır. Mesela, Ödünç tablosuna KitapAdi diye bir alan ekleseydik, bu sadece ödünç verilen kitap ile ilgili bir bilgi olacaktı ve oduncNo'na bağlı bir nitelik olmayacaktı. Bunu çözmek için, kitap adlarını ayrı bir tabloda tutarak sorun çözülür. Ya da anahtar alanın birden fazla alandan oluştuğu tablolarda, anahtar alanlardan sadece birine bağlı veriler, tabloda yer almamalı, ayrı bir tabloya taşınmalıdır. Bunun tersi de geçerlidir. Yani iki ya da daha fazla tablonun birincil anahtarı aynı olamaz. Şayet böyle ise, bu iki tablo tek tabloya indirilmelidir.
3. Normalizasyon Kuralı
Bir tablo için, anahtarı olmayan bir alan, anahtarı olmayan başka hiç bir alana bağlı olamaz. Örneğin, kitaplarımız için cilt tipi adında bir alan ekleyip burada da karton kapak için K, deri cilt için D, spiral cilt için S yazsaydık, bu kodlama, kitap tablosunun birincil anahtarı olan kitapNo alanına bağlı bir kodlama olmayacaktı. Çünkü bu kodlama bir başka anahtarı olmayan alana bağlıdır. Bunun sonucunda da veri tabanımızda, karşılığı olmayan bir kodlama yer almış olacaktır. Cilt tipi bilgisini kodlu olarak tutan alan aslında cilt tipi açıklaması olan başka bir alana bağlıdır. Bu ilişki başka bir tabloda tutulmalıdır. Bu durumda, ciltŞekli adında bir tablo açmamız gerekir. Bu tablonun alanları da ciltTipKodu ve ciltSekli olmalıdır. Ancak bundan sonra, kitaplar tablosunda ciltTipi adında bir sütun açıp buraya da D,S,K gibi kodları yazabilirsiniz.
4. Normalizasyon Kuralı
Birincil anahtar alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire-çok ilişkisine izin verilmez. Örneğin, tablomuzda yer alan bir kitap hem hikaye kitabı hem de kişisel gelişim kitabı olabilir.
4.normalizasyon kuralını sağlamak için, her bağımsız bire-çok ilişki için ayrı bir tablo oluşturmak gerekir. Bu örnekte, türler diye bir tablo açmamız ve daha sonra da kitapTurleri diye bir başka tablo daha açmamız gerekiyor. “Kişisel Gelişim Hikâyeleri” adlı kitap için, öncelikle kitap numarası, Hikâye bölümünün kodunun yer aldığı bir satır; ardından da yine kitap numarası,
ardından da kişisel gelişim türünün kodunun aldığı yeni bir satır daha eklemek gerekir.
5. Normalizasyon Kuralı
Tekrarlamaları ortadan kaldırmak için her bir tabloyu mümkün olduğunca küçük parçalara bölmek gerekir. Aslında ilk 4 kural sonuçta bu işe yarar ancak, bu kurallar kapsamında olmayan tekrarlamalar da 5.normalizasyon kuralı ile giderilir. Örneğin, kitaplarımız için bir edinme şekli bilgisi girilecek sütun eklemek isteyelim:
Bu bölüme girilebilecek bilgiler bellidir: Bağış veya satın alma gibi.
Bu bilgileri başka bir tabloda tutabiliriz. Böylece, kullanıcıların bu alana gelişigüzel bilgiler girmesini engellemiş olursunuz. Bu da sorgulama esnasında verileriniz arasında bir tutarlılık sağlar. Bu işlem sonucunda, tutarsızlıklara neden olabilecek ve sık tekrarlayan “look-up table” terimi kullanılır. Ancak, veri tabanı normalizasyon kuralları, bir ilişkisel veri tabanının tasarlanma aşamalarını değil de ilişkisel veri tabanında yer alacak kayıtların ilişkisel veri tabanı ile uyumlu olup olmadığını denetlemeye yöneliktir. Özetle ilişkisel bir veri tabanı tasarımı şu dört ögeyi barındırmalıdır.
• Veri tekrarı yapılmamalıdır.
• Boş yer mümkün olduğunca az olmalıdır.
• Veri bütünlüğü sağlanmalıdır.
• Veriler, aralarında bir ilişki tanımlamaya müsait olmalıdır.
KAYITLARIN İLİŞKİLENDİRİLMESİ
İlişkiler tablolardan verileri birbirine bağlayarak tabloların kullanışlılığını artırır. Böylece ilişkisel veri tabanları oluşturulur. Veriler konu veya göreve göre çeşitli tablolarda depolanır, ancak veriler ilişkilidir ve belirttiğiniz şekilde bir araya getirilebilir. Tablolar arasında ilişki kurmak suretiyle, veri tabanı dosyası düz veri tabanı olmaktan kurtarılır. Tablolar arası ilişki, daha hızlı sorgu icrası yapılmasını sağlar; veri-işlem işleri daha verimli olur. Bu sayede verileri güncelleştirirken, bütün tabloları elden geçirmek ve hatta yeniden girmek zorunda kalınmaz. Sadece güncelleştirilmesi gereken tabloya ek veya bu tabloda değişiklik yapılır. İlişkilendirme temelde bir tablodaki varlığa ait bilgilerin anahtar olan sütundan hareketle başka bir tablodan takip edilmesini sağlar. Tablolar arasında üç tip ilişki vardır:
1.Bire-Bir İlişki
İlişkilendirdiğiniz iki tablodan birincisi ile ikincisi arasında sadece bir kayıt
eşleşebilir. Bu tür ilişkilere bire-bir ilişki denir. İki tablo arasında bire bir ilişki varsa bu iki tablo birbirinin devamı demektir ve genellikle bir tek tablo olarak birleştirilir. Bu tür ilişkilendirme tablolarda sık kullanılmaz.
2.Bir-Çok İlişki
En çok kullanılan ilişki şeklidir. Bu ilişkide A tablosundaki bir kayıt B tablosundaki birden çok eşleşen kayda sahiptir. Bunun tersi doğru değildir. Yani B tablosundaki bir kayıt A tablosundaki yalnızca bir kayıt ile eşleşir.
Örneğin, Müşteriler ve Siparişler tablolarının birçok ilişkisi vardır: Her müşteri birçok sipariş verir ancak her sipariş bir müşteriye aittir.
3. Çok-Çok İlişki
Bir çok-çok ilişkide, A tablosundaki bir satırın B tablosunda çok sayıda eşi vardır ve tam tersi de geçerlidir. Bu tür ilişkileri, birincil anahtarları A ve B tablolarının yabancı anahtarlarından oluşan bağlantı tablosu diye adlandırılan üçüncü bir tablo tanımlayarak oluşturabilirsiniz.
KAYNAK : Internet'ten alıntıdır.
NOT : Okumada kolaylık olması amacıyla konu tekrar elden geçirilmiştir. alpeki99
Bir tablo bir tek varlığa ait bilgileri tutmak için tasarlanır. Örneğin bir kitap tablosunda sadece kitaplara ait bilgiler vardır. 20 adet kitap bilgisi varsa, bu tabloya 20 adet satır eklenecek demektir. İlişkisel veri tabanı yaklaşımını ilişkisel yapan asıl unsur verilerin tablolara parçalanarak saklanmasıdır.
Tabloların kaç adet olacağı ve birbiriyle nasıl ilişkilendirileceğine karar verirken var olan kuralları kullanarak mantıksal bir plan ile hareket edilir.
Eğer tablolar üzerinde verileri normalize etmezseniz birçok sıkıntı oluşabilir. Bazı bilgiler birden fazla tekrarlanabilir. Bir bilgiyi güncellemek, veri eklemek ve silmek için birden fazla yerde bulma, değiştirme ve silme yapmanız gerekebilir. Bu nedenle normalizasyon kurallarını kullanmalısınız.
Genel kabul gören beş normalizasyon kuralı vardır. Bu kurallar, ilişkisel veri tabanının tanımı ile birlikte ortaya konmuştur. Veri tabanı normalizasyonu yukarıdaki resime bağlı olarak anlatılacaktır. Açıklamalar yapılırken bu resme dikkat etmelisiniz.
1. Normalizasyon Kuralı
Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir. Örneğin kitap tablosunda, birden fazla yazarı olan kitap için yazar1, yazar2, yazar3 diye alanlar açsanız, bu kurala uymamış olursunuz. Böyle bir durumda, ayrıca yazarlar tablosu da oluşturarak kuralı çiğnememeye dikkat etmelisiniz.
2. Normalizasyon Kuralı
Bir tablo için, anahtar olmayan her alan, birincil anahtar olarak tanımlı tüm alanlara bağlı olmak zorundadır. Mesela, Ödünç tablosuna KitapAdi diye bir alan ekleseydik, bu sadece ödünç verilen kitap ile ilgili bir bilgi olacaktı ve oduncNo'na bağlı bir nitelik olmayacaktı. Bunu çözmek için, kitap adlarını ayrı bir tabloda tutarak sorun çözülür. Ya da anahtar alanın birden fazla alandan oluştuğu tablolarda, anahtar alanlardan sadece birine bağlı veriler, tabloda yer almamalı, ayrı bir tabloya taşınmalıdır. Bunun tersi de geçerlidir. Yani iki ya da daha fazla tablonun birincil anahtarı aynı olamaz. Şayet böyle ise, bu iki tablo tek tabloya indirilmelidir.
3. Normalizasyon Kuralı
Bir tablo için, anahtarı olmayan bir alan, anahtarı olmayan başka hiç bir alana bağlı olamaz. Örneğin, kitaplarımız için cilt tipi adında bir alan ekleyip burada da karton kapak için K, deri cilt için D, spiral cilt için S yazsaydık, bu kodlama, kitap tablosunun birincil anahtarı olan kitapNo alanına bağlı bir kodlama olmayacaktı. Çünkü bu kodlama bir başka anahtarı olmayan alana bağlıdır. Bunun sonucunda da veri tabanımızda, karşılığı olmayan bir kodlama yer almış olacaktır. Cilt tipi bilgisini kodlu olarak tutan alan aslında cilt tipi açıklaması olan başka bir alana bağlıdır. Bu ilişki başka bir tabloda tutulmalıdır. Bu durumda, ciltŞekli adında bir tablo açmamız gerekir. Bu tablonun alanları da ciltTipKodu ve ciltSekli olmalıdır. Ancak bundan sonra, kitaplar tablosunda ciltTipi adında bir sütun açıp buraya da D,S,K gibi kodları yazabilirsiniz.
4. Normalizasyon Kuralı
Birincil anahtar alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire-çok ilişkisine izin verilmez. Örneğin, tablomuzda yer alan bir kitap hem hikaye kitabı hem de kişisel gelişim kitabı olabilir.
4.normalizasyon kuralını sağlamak için, her bağımsız bire-çok ilişki için ayrı bir tablo oluşturmak gerekir. Bu örnekte, türler diye bir tablo açmamız ve daha sonra da kitapTurleri diye bir başka tablo daha açmamız gerekiyor. “Kişisel Gelişim Hikâyeleri” adlı kitap için, öncelikle kitap numarası, Hikâye bölümünün kodunun yer aldığı bir satır; ardından da yine kitap numarası,
ardından da kişisel gelişim türünün kodunun aldığı yeni bir satır daha eklemek gerekir.
5. Normalizasyon Kuralı
Tekrarlamaları ortadan kaldırmak için her bir tabloyu mümkün olduğunca küçük parçalara bölmek gerekir. Aslında ilk 4 kural sonuçta bu işe yarar ancak, bu kurallar kapsamında olmayan tekrarlamalar da 5.normalizasyon kuralı ile giderilir. Örneğin, kitaplarımız için bir edinme şekli bilgisi girilecek sütun eklemek isteyelim:
Bu bölüme girilebilecek bilgiler bellidir: Bağış veya satın alma gibi.
Bu bilgileri başka bir tabloda tutabiliriz. Böylece, kullanıcıların bu alana gelişigüzel bilgiler girmesini engellemiş olursunuz. Bu da sorgulama esnasında verileriniz arasında bir tutarlılık sağlar. Bu işlem sonucunda, tutarsızlıklara neden olabilecek ve sık tekrarlayan “look-up table” terimi kullanılır. Ancak, veri tabanı normalizasyon kuralları, bir ilişkisel veri tabanının tasarlanma aşamalarını değil de ilişkisel veri tabanında yer alacak kayıtların ilişkisel veri tabanı ile uyumlu olup olmadığını denetlemeye yöneliktir. Özetle ilişkisel bir veri tabanı tasarımı şu dört ögeyi barındırmalıdır.
• Veri tekrarı yapılmamalıdır.
• Boş yer mümkün olduğunca az olmalıdır.
• Veri bütünlüğü sağlanmalıdır.
• Veriler, aralarında bir ilişki tanımlamaya müsait olmalıdır.
KAYITLARIN İLİŞKİLENDİRİLMESİ
İlişkiler tablolardan verileri birbirine bağlayarak tabloların kullanışlılığını artırır. Böylece ilişkisel veri tabanları oluşturulur. Veriler konu veya göreve göre çeşitli tablolarda depolanır, ancak veriler ilişkilidir ve belirttiğiniz şekilde bir araya getirilebilir. Tablolar arasında ilişki kurmak suretiyle, veri tabanı dosyası düz veri tabanı olmaktan kurtarılır. Tablolar arası ilişki, daha hızlı sorgu icrası yapılmasını sağlar; veri-işlem işleri daha verimli olur. Bu sayede verileri güncelleştirirken, bütün tabloları elden geçirmek ve hatta yeniden girmek zorunda kalınmaz. Sadece güncelleştirilmesi gereken tabloya ek veya bu tabloda değişiklik yapılır. İlişkilendirme temelde bir tablodaki varlığa ait bilgilerin anahtar olan sütundan hareketle başka bir tablodan takip edilmesini sağlar. Tablolar arasında üç tip ilişki vardır:
1.Bire-Bir İlişki
İlişkilendirdiğiniz iki tablodan birincisi ile ikincisi arasında sadece bir kayıt
eşleşebilir. Bu tür ilişkilere bire-bir ilişki denir. İki tablo arasında bire bir ilişki varsa bu iki tablo birbirinin devamı demektir ve genellikle bir tek tablo olarak birleştirilir. Bu tür ilişkilendirme tablolarda sık kullanılmaz.
2.Bir-Çok İlişki
En çok kullanılan ilişki şeklidir. Bu ilişkide A tablosundaki bir kayıt B tablosundaki birden çok eşleşen kayda sahiptir. Bunun tersi doğru değildir. Yani B tablosundaki bir kayıt A tablosundaki yalnızca bir kayıt ile eşleşir.
Örneğin, Müşteriler ve Siparişler tablolarının birçok ilişkisi vardır: Her müşteri birçok sipariş verir ancak her sipariş bir müşteriye aittir.
3. Çok-Çok İlişki
Bir çok-çok ilişkide, A tablosundaki bir satırın B tablosunda çok sayıda eşi vardır ve tam tersi de geçerlidir. Bu tür ilişkileri, birincil anahtarları A ve B tablolarının yabancı anahtarlarından oluşan bağlantı tablosu diye adlandırılan üçüncü bir tablo tanımlayarak oluşturabilirsiniz.
KAYNAK : Internet'ten alıntıdır.
NOT : Okumada kolaylık olması amacıyla konu tekrar elden geçirilmiştir. alpeki99