Merhaba Arkadaslar;
Bu makalede sizlerle paylasmak istedigim konu sudur.
Diyelim ki bir veritabani uygulamasi gelistiriyoruz. Ve kullandiginiz VeriTabani Accsess. VeriTabanini normalizasyon kurallarina göre tasarlamissiniz. Daha sonra da veritabaninin iliskilerini belirtmissiniz
Iliskileri düzenlerken “Bilgi Tutarliligini Zorla” “Iliskili Alanlari Ardarda Güncellestir” “Iliskili Kayitlari Ardarda Sil” Onay Kutularini da isaretlemissiniz. Bunlari yaparak veri bütünlügünü saglamis oluyoruz. Bir kayit silinse bile o kaydi bagli diger kayitlarda silinecek. Yani gereksiz kayitlar kalmayacak. Buraya kadar hersey güzel.
VeriTabanini normalizasyon kurallarina göre tasarladik ki veri tekrarini önlemek, ayni seyleri defalarca yazma hamalligindan kurtulmak için…
Dolayisiyla veri tekrari olmadigi için ayni seyleri defalarca yazmadigimiz için VeriTabani boyutuda büyümeyecektir.(Acaba ?)
Evet, herseyi düsündük gibi. Ama bir yeri düsünemedik. Oda Tutacagimiz veriler için uygun veri tipini seçmek. Diyelim ki ADSOYAD isminde bir kolonumuz olsun ve alan boyutuda 25 karakter olarak belirleyelim. Accses de Metin (sql dll char olarak) tipinin alan boyutunu biz belirleyebiliyoruz.
Ve bu hücreye “ISMAIL KOCACAN” seklinde bir veri girelim. Toplam kaç karakter etti? (14)
E biz 25 karakter olarak belirlemistik.11 karater bosluk kaldi. 
Accsess de diger VeriTabanlarinda olan VarChar veya diger Var ile baslayan veritipleri olmadigi için bu sekilde 11 karakterlik bir bosluk kaldi. Iste o gereksiz bosluklarda veritabanin boyutunu büyütecek zamanla…
Bununda üstesinden gelmenin bir yolu var. Yani tablolardaki kullanilmayan bosluklari silerek veritabaninin boyutunu küçültmenin.
VeriTabanini Açtikdan Sonra Araçlar-> VeriTabani Hizmet Programlari->VeriTabanini Sikistir ve Onar komutunu vererek bosluklari silerek sikistirabiliyorsunuz.
Buraya kadar hersey güzelde. Hemen akla su soru geliyor. Acaba ben bu sikistirma islemini hiç kullanicilari ugrastirmadan, onlarin ruhu bile duymadan ben yazilimsal olarak nasil yapabilirim derseniz? Sonuçta kullanici dedigimizde bir insandir. Her ne kadar kullanici olsada bir türlü kullanamaz.
Kalkar Tablodan biseyler siler. Biseyleri degistir. Sonra da der senin programin çalismiyo. Hay senin gibi programcinin deyip…
Içten sövgüleriyle kulaklarimizi çinlatabilir…
Evet, yazilimsal olarak ben asagidaki gibi Baglanti cümlesi isi halletim.
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Compact Without Replica Repair=True;Data Source=DB.mdb
Isterseniz asagidaki bir baglanti cümlesi kullarak parolali veritabanina baglanti kurabilirsiniz
Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=12345;Jet OLEDB:Compact Without Replica Repair=True;Data Source=DB.mdb")
VeriTabanina parola koymak için Accsess Dosya -> Aç ->Özel Kullanimda aç dedikten sonra Araçlar ->Güvenlik menüsünden VeriTabani parolasi verebilirsiniz.
Bu baglanti dizelerini ezbere bilmiyorum. Delphide Forma bir Tane TadoConnection koyun. EditConnectionString deyin.

Diger özellikleri de test edip ne ise yaradigini görebilirsiniz. Isin sira yukarda gördügünü windowcukta gizli. 
Sonuç Olarak;
Accsess VeriTabani nasil yazilimsal olarak onarabilecegimizi anlatmaya çalistim. Sunuda belirtmek isterim. Jet OLEDB:Compact Without Replica Repair=True özelligini de ekleyip baglantiyi açtiginiz da Her baglanti açilisinda veritabani onarilacaktir. Belki baglanti esnasinda onarma islemide uzun sürebilir.
O sebeble farkli bir baglanti nesnesi ile baglanti açip kapatabilirsiniz. Tabi o farkli baglanti nesnesinin baglanti dizesi özelligine Jet OLEDB:Compact Without Replica Repair=True özelligini eklemeyi unutmayin. Baglanti açildiginda zaten veritabani onarilacaktir. Daha sonra kapatabilirsiniz. Yada size kalmis banane yahu
Umarim faydali olmusumdur.
Ismail Kocacan(Yazilimci Bozuntusu)