Son Dakika Haberlerini Takip Edebileceğiniz FrmTR Haber Yayında.
Forum TR
Go Back   Forum TR > Programlama Dilleri Yazılım Teknolojileri ve Algoritmalar > Programlama > database programlama
FrmTR'ye Reklam Vermek İçin: [email protected]

Verİ Tabani Normalizasyon Kurallari

Programlama Kategorisinde ve database programlama Forumunda Bulunan Verİ Tabani Normalizasyon Kurallari Konusunu Görüntülemektesiniz => Veritabanı normalizasyonu, ilişkisel veritabanı sistemlerinde tablolara karar verme kurallarıdır. Sağlıklı bir veritabanı uygulaması için bu kurallara uyma zorunluluğu uygulamanın kapsam ...

Cevapla
 
Konu Araçları
Eski 25-02-06, 16:03   #1

Varsayılan Verİ Tabani Normalizasyon Kurallari


Veritabanı normalizasyonu, ilişkisel veritabanı sistemlerinde tablolara karar verme kurallarıdır. Sağlıklı bir veritabanı uygulaması için bu kurallara uyma zorunluluğu uygulamanın kapsam ve önemiyle doğru orantılıdır.
İlişkisel bir veritabanı sistemi Veritabanı Tasarımı makalemizde ifade edildiği gibi veri bütünlüğünün sağlanması, bilgi tekrarının önlenmesi, verilerin doğru ve etkin bir biçimde kullanılması sağlamaktadır. Veritabanı sistemlerinde veriler tablolarda tutulmaktadır. Normalizasyon kuralları da bu tablolarda tutulacak verilerin nelerden oluşacağına karar verme kuralları olduğuna göre ilişkisel veritabanı tasarımı aşamasında gerekli bir işlemdir. Genel kabul görmüş 5 normalizasyon kuralı vardır.
1. Normalizasyon Kuralı:
Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir. Örneğin dersler tablosunda, ders tipi için zorunlu, seçmeli diye alanlar açsaydık, bu kurala uymamış olurduk. Böyle bir durumda, ayrıca ders tipleri tablosu oluşturularak bu kural çiğnenmemiş olur.
İpucu: Verileri virgül veya bir başka karakter ile ayırıp aynı alanda tutmak ve daha sonra program içerisinde split ile bu değerleri ayırmak ilişkisel veritabanının doğasına aykırıdır.
2. Normalizasyon Kuralı:
Bir tablo için, anahtar alan dışındaki her alan, birincil anahtar olarak tanımlı tüm alan veya alanlara bağlı olmak zorundadır.
Örneğin, Staj tablosunda OGRENC_ADI diye bir alan eklese idik, bu sadece STAJ ile ilgili bir bilgi olacaktı ve OGRENCI_NO'ya bağlı bir özellik olmayacaktı. Bunu çözmek için, öğrenci bilgilerini ayrı bir tabloda tutmak gerekir.
Eğer anahtar alan birden fazla alandan oluşuyorsa, anahtar alanlardan sadece birine bağlı veriler, tabloda yer almamalı, bu veriler ayrı bir tabloda tutulmalıdır.
Bunun tersi de geçerlidir. Yani iki ya da daha fazla tablonun birincil anahtarı aynı olmamalı. Eğer 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, dersler için ders tipi adında bir alan ekleyip burada da zorunlu ders için Z, seçmeli dersler için S, zorunlu seçmeli dersler için ZS yazılsaydı, bu kodlama, dersler tablosunun birincil anahtarı olan DERS_KODU alanına bağlı bir kodlama olmayacaktı. Çünkü bu kodlama bir başka anahtarı olmayan alana bağlıdır. Bunun sonucunda da veritabanında, karşılığı olmayan bir kodlama yer almış olacaktı. Ders tipi bilgisini kodlu olarak tutan alan aslında ders tipi açıklaması olan başka bir alana bağlıdır. Bu ilişki başka bir tabloda tutulmalıdır.
Bu durumda, ders tipleri adında bir tablo gereklidir. Bu tablonun alanları da DERS_TIPI_KODU ve DERS_TIPI_ADI olmalıdır. Ancak bundan sonra, dersler tablosunda DERS_TIPI_KODU adında bir sütun açıldıktan sonra buraya da ders tipleri tablosunda tanımlanan ders tipi kodları yazılabilir.
4. Normalizasyon Kuralı:
Birincil anahtar olan alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire çok (1-N) ilişkisine izin verilmez.
4.Normal formu sağlamak için, her bağımsız bire çok (1-N) ilişki için ayrı bir tablo oluşturmak gerekir.
5. Normalizasyon Kuralı:
Veri tekrarlarını önlemek 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, öğrencinin uyruğu ile ilgili verinin girileceği bir sütun olsun: Bu bölüme girilecek bilgiler bellidir: T.C., Almanya, Fransa,.. gibi.
Bu bilgiler başka bir tabloda tutabilir. Böylelikle, kullanıcıların bu alan gelişi güzel bilgiler girmesi engellemiş olur. Bu da sorgulama esnasında veriler arasında bir tutarlılık sağlar. Bu işlem sonucunda, tutarsızlıklara neden olabilecek ve sık tekrarlayan veriler başka bir tabloya taşınmış olacaktır.
Veritabanı normalizasyon kuralları, bir ilişkisel veritabanının tasarlanma aşamalarını değil de ilişkisel veritabanında yer alacak kayıtların ilişkisel veritabanı ile uyumlu olup olmadığını denetlemeye yönelik olduğundan hareketle sonuç olarak ilişkisel bir veritabanı tasarımı;
- Yer kullanımı çok iyi olmalı dolayısıyla boş yer mümkün olduğunca az olmalıdır.
- Veri bütünlüğü sağlanmalı ve veri tekrarı yapılmamalıdır.
- Veriler, kendi aralarında bir ilişki tanımlanmaya uygun olmalıdır.
  Alıntı Yaparak Cevapla
Eski 09-05-06, 01:23   #2

Varsayılan Cvp: Verİ Tabani Normalizasyon Kurallari


ya yorumların güzel ama bi nokta var. sen öyle bir anlatmışsınki her şeye bir tablo gibi bir mantık çıkıyor.
veri tabanlarında karşılaşılan en büyük sorun verilere ulaşım ve verilerin çekilmesi sorunudur.
mesela ilişkli iki tablo var diyelim. birinde göğrenci bilgileri diğerinde ülkeler var. bir öğrencinin bilgilerini çekeceğiz. şimdi 1. tablodan öğrenciyi bulmak için 20 milisaniye gerekiyor diyelim. öğrenciyi bulduktan sonra ilişkili tablodan ülkeyi bulmak içinde 2 milisaniye gerekiyor diyelim. toplam sorgu süremiz ne kadar oldu 22 milisaniye. ha bu 2 milisaniye önemlimi diceksiniz. çok önemli bu sadece bi ülke için. ya 10 tane tablodan aynı anda veri çekmeye kalkarsanız ne olur. ota site tablo yaparsanız, veri tabanı çakılır kalır.

veri tabanı tasarımında elbette en az yer israfı yapmak lazım ama şu an yer diye bir sorun çok dert değil. şu an en büyük sorun hız. bir harddisk almak 100-200 dolar olsun diyelim. ama bir bilgisayar almak bundan daha pahalı.
diğer bir mevzuda veri tabanı tasarlarken index ler çok önemli. kesinlikle ve kesinlikle indexler sql sorgularında en fazla hangi alana göre şartlı sorgu yapılacaksa o alan seçilmeli. index siz sorgu indexli sorguya göre kayııt sayısının en az yarısı misli kadar YAVAŞTIR....

Mesajı son düzenleyen dikce_sham ( 09-05-06 - 01:27 )
  Alıntı Yaparak Cevapla
Eski 09-05-06, 09:02   #3

Varsayılan Cvp: Verİ Tabani Normalizasyon Kurallari


tabiki haklısınız.Biz her konuda sizlere bir öğrenci için bir tablo bir ülkeler için yine ayrı bir tablo yapın demiyoruz.Burada olay senin tercihin sonucunda sen işin şu kısmına bakıyosun.İki tablo var biri ülke diğeri öğrenci ülkeyi seçtim o ülkeye ait öğrencileri bulacak.bu arada 2 ms. ülkeyi bulmada yavaşladım diyosun haklısın yavaşlamış olabilirsin sen olaya o yönden baktın ama ben sana farklı bir bakış açısı daha sunayım.

tek tablo yaptın öğrenci tablosu ve bu tabloya ülke diye bi alan koydun peki koymuş olduğun bu alan acaba tabloyu 2 ms. azmı yoruyor bunu hiç kıyas ettinmi eklemiş olduğun alan sql esnasında hafızada ne kadar yer kaplıyor bunu test ettinmi etmedik tabi onun için 2 ms. gibi bir farkı dile gertirebiliyosunuz.

Size ota site tablo yapın demiyoruz.biz sadece gerekli olduğu yerlerde tablo kullanın diyoruz.aramalarda özellikle index alanlarda yapılan aramaların hızlı olduğunu dile getiriyoruz.


bırakın hızı hafızada kaplamış olduğu yeri..Yazılım işi grup çalışmasıdır.Grupta çalışan insanlar aynı normalizasyon kurallarına uymadıkları zaman yapılan projelerde sonuca ulaşamazlar veya sizin dediğiniz gibi düşünenler var ise proje sonlanmayacaktır.

Sonuç itibari ile konumuzda yazmış olduğumuz normalizasyon kuralları pek çok yazılım firması tarafından benimsenmiş durumdadır.
  Alıntı Yaparak Cevapla
Eski 12-05-06, 00:11   #4

Varsayılan Cvp: Verİ Tabani Normalizasyon Kurallari


Ya sonuçta ilişkili tablodanda çeksen aynı yeri kaplayacak. hatta daha fazla yer kaplayacak. çünkü ilişkili tablodaki veriye ulaşmak için belli bir miktar bellek alanı harcayacak ve bunun genel sorguya etkisinin ortalamasını alırsan daha fazla bellek kullanımına sebep olduğunu görürsün.

Aslında ben veri tabanı tasarım ve yönetiminde fazla uzman değilim. ama Veri tabanı hazırlamak ve kullanmak bir sanat. Dediğin normalizasyon kuralları geçerli kuralllar. Benim eleştirim şu sebepten dolayı idi. gördüğüm veri tabanı yönetim programlarının çoğunda aşırı derecede tablo kullanılmış. bir sorgu için 10 tabloya kadar belkide daha fazla tablodan aynı anda veri çekiliyor ve buda aşırı yoğunluk olduğunda tıkanmalara sebep oluyor. Bence hız için bellekten feragat edilebilir.
Veri tabanlarında sizin veri tabanı tasarımınız nasıl olursa olsun, sonuçta istekte bulunulan veri miktarı değişmiyor. yani istediğiniz veriler mesela ad soyad falan felan. gelip giden veri aynı olduğu için burada hızın artırılmasında iş veri tabanı yapısına düşüyor. birşeyleri ne kadar karmaşıklaştırırsanız, yaptığınız işteki hem sizin hemde işin performansı düşer. basitlik her zaman daha iyidir.
  Alıntı Yaparak Cevapla
Eski 06-02-07, 13:46   #5

Varsayılan C: Verİ Tabani Normalizasyon Kurallari

Yaşar Gözüdeli adlı yazarın kitabından aynen alıntı yapılmış.Üstelik yazan kişi kendiyazısı gibi ifade etmiş.Büyük bir saygısızlık
  Alıntı Yaparak Cevapla
Cevapla

Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz

Konu Araçları

Gönderme Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
Smiley Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı



5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Şikayet Mailimiz. İçerik, Yer Sağlayıcı Bilgilerimiz. Reklam Mailimiz. Gizlilik Politikası


Reklamı Kapat

Reklamı Kapat