rasının değiştiğini haber veriyor. Siz de büyük bir vazifeşinaslık gösterip Proc- word kayıtlarına bakıyor ve gereken değişikliği yapıyorsunuz. Fakadat, Procmail ve Procbase programlarına yardımcı olan Esin'in bağlantı değe- rine sahip olduğunu unuttunuz. Data- base'iniz şu anda Şekil 3.'de olduğu gibi bir görünüm aldı. Esin ile bağlantı kurmak amacıyla sizin database'ini- zi kullanan bir kimse, yüzde 67 ihtimal- le onun eski -ve tabii, yanlış- numara- sını bulacaktır. Dosya düzenlemenizin başka sorun- ları da yok değil. Diyelim ki, Spread konusunda Cevat fevkalâde yardımcı oluyor ve onun özel telefon numarası- nı elde etmeyi başardınız. Bir gün, Spread arızalandığı için iptal edilin- ce siz de onun kaydını database'den sildiniz. Ertesi hafta, bir arkadaşınız Cevat'ın Comm. için de fevkalâde yardımcı olabileceğini söylüyor size. Ama, ne yazık ki, geçmiş olsun Cevat"- ın özel telefon numarasını kaybetmiş bulunuyorsunuz. Son bir potansiyel so- run daha: Eğer Esin sizin 100 ürününüz için bağlantı değerine sahipse, onun telefon numarasını yüz ayrı yerde kay- dederek database'inizde boşu boşu- na bir sürü yer işgal ve israf ediyorsu- nuz demektir. Kuşkusuz, eğer database'inizin ile- ride bir telefon rehberi olarak kullanı- labileceğini önceden görebilmiş ol- saydınız, tüm bu sorunlarınızın önüne geçilebilirdi. Database'inizi biri bağ- lantılar, öbürü de telefon rehberi ol- mak üzere, ikiye bölerdiniz. Böylece, her şey halloluverirdi. Verilerin düzenlenmesi, sizi ileriyi görmek zorunda bırakmaksızın elve- rişli ve uygun dosya yapıları oluştur- manızı imkân veren tahlil araçlar da sağlar. Bu araçlar yukarıda bahsi ge- çen sorunların doğmasını önler; dos- yalar çok geniş ve kendi aralarında ilişkili çok sayıda alanın oluşturduğu karmaşık bir manzara arzettiği za- manlarda bile... Tehlikeli dosya düzenlemelerini en- gellemek için, dosyanızdaki bağımlı- lıkların neyin nesi olduklarına iyice vd- kıf bulunmalısınız. Bağımlılıklar ile teh- likeli dosya yapıları arasındaki bağ- lantıyı, Help'teki bağımlılıkların veri dü- zenlenmesi işinden biraz anlayan her- kese açık seçik ikaz işaretleri verdiği- ni göstererek açıklayacağım. Geçişli Bağımlılıklar Farzedelim ki, Şekil 4., Help dosya- nizdaki tüm bağımlılıkları liste halinde lılığa scıhıp olduğu durumlarda orta- ya çıkar: Az > veB— > C(Şekil 2'de bu bağımlılıklar Ürün- > Bağlantı ve Bağlantız > Telefon biçimindedir) Ve, Bile A arasında hiç bağımlılık yok- Herhangi bir geçişli bağımlılık teh- likeli bir dosyalama yapısına İşaret eder. Esin'in telefon numarasının Help dosyasında gereksiz yere tekrar edi- lişigibi. Az> Bz > Cşeklinde bir ge- çişli bağımlılık her zaman, A'nın farklı değerleri için C değerleriyle birlikte düzenlenen B değerlerinin tekrarlan- ması sonucunu verecektir. Ve bu tek- rarlanış, sırası geldiğinde, eğer tutar bir de database'inizi değiştirirseniz bi- ribirini hiç tutmayan, yanlış bilgilere de yol açabilir. Esin'in telefon numa- rasının yanlış kaydı meselesinde oldu- ğu gibi. Aynı zamandan, yer israfına da sebep olabilir. bunun örneğini, Esin'- in telefon numarasının 100 defa kay- dedilmesi olayında gördük Geçişli bağımlılıklar, dosycılcırın dü- zenlenmesinde dadimi olarak yapısal sorunlara sebebiyet verirler. Eğer bu tür geçişli bağımlılıklara dikkat eder- seniz, yukarıda izah ettiğim güçlükler- den kendinizi korumüş olursunuz. Ne Yapmalı? Bu makalenin sizi, database dosya- larınızı yeniden bir ğöz gezdirmeye ve içerdikleri bağımlılıkların bir dökümü- nü çıkarmaya ve sonra da geçişli ba- ğımlılıkları bir daha incelemeye sev- kedeceğini ümit ediyorum. Ama, öy- le uzun boylu büyüleneyim demeyin. Yapılanmış programlamanın gerekti- ğinde GOTO ifadelerinden istifa etme- si gibi, verilerin düzenlenmesi teorisi de, düzenleyiciye yönelik bir dizi uyarı olarak düşünülmelidir. Help dosyası- nın tehlikeli olabileceğinde gösterdi- ğim gibi, çeşitli nedenler onu kendi haline bırakmayı da haklı gösterebi- lir. Mesela, bir dosyadaki geçişli ba- ğımlılıktan kurtulmanın olağan yolu, dosyayı iki yeni dosyaya bölmektir. Si- zin sahip olduğunuz database siste- mi bir seferde iki dosyaya bölünme- ye müsdit olmayabilir. Bu nedenle, Bağımlılık eğer dosyalarınızda geçişli ya da gö- mülü bağımlılıklar keşfederseniz, dos- ya yapısını değiştirmeye kalkışmadan önce, işin daha da çatallaşabilece- ğini de hesaba katın. En azından iki önemli soru kalıyor geriye: Bir geçişli veya gömülü ba- ğımlılık keşfettiğinizde, bunu nasıl dü- zelteceksiniz? Ve database'leri daha işin en başından bu türden bağımlı- lıklar yaratmamaları için, nasıl düzen- lemek gerekiyor? Bu soruların cevap- larını daha ilerki sayılarımızda bula- caksınız. Ayrıca, aşağıda adları veri- len kitapların incelenmesi, bu sorula- rın cevaplarını kendi başınıza bulma- nızı sağlayacaktır. Ürün Buğlaniı Telefon no: Spread...... 56 Procword... CötTÜ vanane Procmail... Procbcıse Şekil 1. Help. Bılgısayar ürünlerinin bir dosya database' Ürün Bcıglcın'n Telefon no: Procworad... 6 PrEAOsinreyı Procword ÜTÜ srama Proemail ... Procbase... Şekil 2. Halp'e yeni bir bağlantı ilave ediyor. Doğan eklendi. Bcgıcıntı Telefon no: an 5 Ürün Procword... Procmcıl Procbcıs'e.“ Şekil 3. Help'de bir bağlantı için tutar- sız, yanlış telefon numaraları, Esin Ürün- > Bağlantı Database'de her Ürün için ycılnızccı bir bağlantı mevcut demektir (Bu ba- ğımlılık esası Şekil 2'nin örneğinde geçerli değildir. Çünkü, Procward ürü- nü için birden fazla bağlantı gösterilmiştir.) Bağımlılık Bağlantız > Telefon Database'de bir bağlantı verilmiş ve bu bağlantı ile yalnızca bir tek tele- fon numarası bağlantılı demektir. (Bu bağımlılık esası, Şekil 1'deki örnek için geçerli ama, Şekil 3 için geçerli değildir.) Şekil 4. Help'te muhtemel bağımlılıklar. gösteriyor. Ürün'den Bağlantı'ya ve Bağlantı'dan Telefon'a olan geçişli bağımlılık'a dikkat buyurunuz. Geçişli bağımlılık A.B ve C alanları iki bağım- -— CO NOCOre 10