
Ekim 13, 2009 15:26 by
molks
Sql server da veritabanı ve tablo tasarımı oldukça önemlidir ve önceden üzerinde düşünmek gerekir.eğer tasarımı yaparken yeterince düşünmesseniz projenin ilerleyen kısımlarında,oldukça büyük sıkıntılar çekebilirsiniz.Ayrıca bir projeye başlarkende genelde ilk önce veritabanı hazırlanır ve uygulama bu database üzerine inşa edilir.Biraz araştırırsanız normalizasyon kurallarını anlatan birçok makale bulabilirsiniz ben bu yazıda daha önce normalize ettiğim bir database üzerinde neyi neden yaptıgımı göstererek anlatmaya çalışıcam.Aslına bakarsanız normalizasyonu her ne kadar normalizasyon kuralları belirliyor gibi gözüksede aslında tasarım çogunlukla ihtiyaca göre belirlenir ve yapısı şekillenir.Yani açıkcası normalizasyon kuralları altı kesin çizgilerle çizilmiş şeyler değildir , sadece bir yol göstericidir.

şekildeki diagramda bir film koleksiyoncusunun tutabiliceği tarzda bir database tasarlandı.Ben database i tasarlamaya başlamadan önce ilk olarak db de neler tutucağımı teker teker kategorilere bölmeye çalışırım.Öncelikli olarak satın aldıgım filmlerin teker teker bütün özelliklerini tutmak istediğim kesin.Demekki bir filmler tablom olacak.Ve en en önemlisi Filmler tablomda tutucağım kolanlardaki her bir değer o film için tek olacak.Mesela bir filmin bir tane adi olur,bir filmin bir tane yönetmeni olur,bir filmin bir tane konusu olur,bunları teker teker bir kagıda yazarak tabloları şekillendirmeye başlarım.Peki filmler tablosunun en son kolonunda tutulacak olan ödül nedir ? bil film birden fazla ödül alabilir,bu teorimize uymuyor.Filmler tablosu içinde ki ödül kolonuna filmler tablosuna baktıgımda direk filme ait bir ödül var mi yoksa yok mu görmek için hazırladıgım bir kolon,yani evet ve hayir yerine geçecek 0,1 bit değerlerini alacak.Peki teorinin ilk adiminda dediğimiz fimler tablosunda ki her kolonun bir film için tek olmasının dışında bişey olunca ne olacak ? o zaman anlıycaz ki yeni bir tablo yapmamız gerekiyor.
Ancak yeni tablo yapmaya geçmeden önce kolonun başındaki neden filmID olduguna ve onun yaninda neden bir anahtar işareti olduguna değinelim.Diyelim ki filmler tablomuzda hostel isimli bir korku filmi var ve gel zaman git zaman, tarantino'nun dişinda başka bir yönetmende hostel diye bir film çekti ve bunuda aynı tabloya kaydettik.Veritabanına, hostel isimli filmi bana getir diye bir sorgu çektiğimizde bize iki tane film birden gelicek,ama iki hosteli birbirinden ayıran kesin bir ayraç yok.Hadi burada yönetmenlerden bir şekilde istediğimiz kayda ulaşırız ama bir hastane veritabanı düşünün ve hastaların kayıtlarının tutuldugu bir tablo ve tabloda Tarık Kaygusuz diye bir kayıt varken,aniden başka bir Tarık Kaygusuz'un hastaneye geldiğini ve aynı tabloya kaydının girildiğini düşünün,bunları birbirinden nasıl ayırıcaz.Herşekilde kayıtları birbirinden ayıran bir sisteme ihtiyacımız var.bununda adi birincil anahtar yani primary key.primary key olan bir kolonda null kayit girilemez ve aynı 2 kayıt asla bunulamaz .Ve biz genellikle ID kolonunu (eğer değer numeric ise) otomarik artan yaparız ve her kayıt girildiğinde değerler kendiliğinden verilir.Bu konuda daha fazla bilgi için “indexler ve kısıtlamalar” isimli yazima bakabilirsiniz.
726adfcf-5969-453b-a293-9b1457d9b229|9|4.7