19 Mart 2015 Perşembe

Veritabanı Oluşturmanın Basit ve Etkin Çözümü: Filemaker'a Giriş

Filemaker ile tanışalı yaklaşık 7-8 sene oluyor. Hikayesi de oldukça ilginç: 

Kısmı zamanlı olarak üniversitede çalışmaya başlamıştım. İkinci üniversiteyi okumaya başlayınca babaya el açmak biraz zor gelmişti. Eğitim Enstitüsü deyip "Enstitü" isminin büyüsüne kapılmayın. Eğitim yuvası falan sanmayın. Tamamen hikaye idi. Öğrenci belgesi çıkartacaksanız alırsınız öğrenci dosyasını eline, yazmaya başlarsınız bilgileri tek tek. Bu halde idi. Derken sivri zekalı bir bilgisayar meraklısı olarak bir veritabanı oluşturulmasını bu şekilde çok daha hızlı işlem yapılabileceğini yüksek sesli dile getirdim. Bilgisayar ve Öğretim Teknolojileri(BÖTE) alanında "doktora"ya kadar eğitim veren bir üniversiteden ve hariçte biri mühendislik, diğeri önlisans düzeyinde eğitim veren iki ayrı bölüm daha var ama üniversitede öğrenci belgesi çıkartmak için word kullanıyor. Excel bari olsa daha kolay olur ya ama kafa o kadar çalışmıyor.

Neyse gel zaman git zaman BÖTE bölüm başkanı beni odasına çağırdı. Arkadaş beni tartacak ya. SQL ve Access'ten girdi. Hiç işime gelmedi açıkçası. O kadar vakit harcamak istemiyordum. Zaten verdikleri üç kuruş para onu da kesmek için uğraşan bir "Enstitü Sekreteri" vardı. Koca torpilinden pembe dizi izlemeye ara vermiş de müdür olmuş. Derken ismini hakikaten tam hatırlayamadığım "Öğretim Görevlisi" Filemaker önerdi. O an "o ne lan" diye içimden geçirmedim değil ama adam hakikatli anlıyormuş bu işten. Bana 1-2 saat eğitim verir gibi yaptı ama ben altıma ettim o ara şaşkalozluktan. Veritabanı oluşturmak bu kadar basit miydi? Geçtik, sağ olsun bana setup dosyasını "crack" ile birlikte teslim etti ki bir daha "adamsın lan" dedim. Yüzüne karşı içimden elbette ki.

SQL'deki arayüz eksikliği ve kod bilgisi ihtiyacı yoktu. Base'deki hantallıktan söz etmiyorum bile. Access'e ne nerede idi diye kaybolmanıza gerek kalmıyordu.

Macera bu şekilde başladı. O sıralar daha 6 versiyon Filemaker'dan bahsediyoruz ama iş görüyordu. Öğrenci belgelerinde ve çıkarılması gereken diğer formlarda işimi oldukça rahatlatmıştı. Hatta numara üzerinden öğrencinin kayıt senesi, bölümü gibi bilgileri de otomatik tanımlamıştım. 

Zamanla işin şeklini biraz daha arttırdım. Excel dosyalarını doğrudan programa aktarmaya başladım. Word'den başka bir şey kullanmayan memur takımını excel'e alıştırmak doğrusu çok vaktimi aldı. Bir sonraki adım da ise programı network üzerinden paylaştım ve herkes aynı programın üzerine giriş yapabilmesini sağladım. Bu noktada kimin ne halt ettiğini takip etmek biraz güçleşti ki ondan sonra onun  da bir şekilde çözümünü buldum.

İlk aşamadaki en büyük sıkıntım script kurmak, relation kurmak ve portal tool özelliğini kullanmak oldu. (tab, web viewer  gibi özellikler sonra geldi) Gel gör ki bunların bir çoğu zaten Filemaker 6'da yoktu. Bunlar zamanla girdi, gelişti ve ilerledi. Şu an benim gördüğüm en azından en kolay tasarım sağlayan, çoklu erişime müsaade eden ve scriptler aracılığıyla dilerseniz verilere takla attırabileceğiniz en basit grafik arayüzlü veritabanı tasarım programı "Filemaker" olduğunu ilan etmemek mümkün değil. Çok uzun zamandır özellikle "open source" bir alternatifini aramama rağmen bir netice elde edemedim. Birçok alternatifin olmadığından değil; alternatiflerin Filemaker ile kıyaslandığında başta grafik arayüz olmak üzere birçok özellikte geri kalmaları nedeniyle. En yakın rakibi "Kexi" ise çok daha  primordiyal bir arayüze sahip ve script için sizi Python bilmeye mecbur eden bir yapıya sahip. Sadece Linux platformlarda çalışması ise ayrı bir handikap. Sene olmuş 2015 hala platform ayırt ediyorlar. Ayıp lan ayıp. Filemaker'ın Linux versiyonunun olmaması da iki kere ayıp. Bu kadar ayıplama yeter sanırım.

Filemaker'ın görünümünden başlayalım. İlk olarak ihtiyacınız olan bir table ve fieldları oluşturun.

Filemaker'da table, layout ve fieldlar vardır. Her table bir excel dosyasına, her layout bir excel sekmesine ve her field ise bir excel sütununa denk gelir.

Tablelar birbirininden bağımsızdır ancak birbirleri arasında relation kurmaları mümkündür. Bir nevi "düşeyara" mantığı. Ancak çok daha etkili ve kesin sonuç. Hata payı ise doğru bir iş yapıldığında ise "0".

Layoutlar ise aynı table üzerine kurulu olabilir. Dilendiği takdirde birden fazla table oluşturulabilir ve bu tablelar üzerinden farklı layoutlar tanımlanabilir. Bunun mesela arkada görünmesini istemediğiniz herhangi bir "calcualation" türü field ya da farklı bir tasarım için kullanabilirsiniz. Filemaker üç aynı layout üzerinde üç farklı otomatik tasarıma sahip.

Otomatik tasarımlar:

Table view: Klasik excel görünümüdür.
List view: Belirli bir tasarımı alt alta ekler. Bu şekilde herhangi bir table görünümünden çok daha fazla özelleştirme mümkündür. Eğer benim gibi milyon satırlar ile uğraşmak durumdan iseniz size inanılmaz faydası dokunacak ve oldukça sık kullanacağınız bir tasarım modelidir.
Form view: İdeal kullanım modudur. Herhangi bir tasarım kısıtlaması olmamasına rağmen form view, sadece bir record için verileri görüntüleyebilir. Diğer iki tasarım modelinde ise tasarımın müsaade ettiği kadar veri görüntülemek mümkün. Birçok tasarımcının form view'e ana ekran olarak kullanmakta... Hareketli resim kabul edilse ve interaktif mouse duyarlı bir hale geldiği takdirde Filemaker birçok web tasarım programına da Fatiha okunmasına neden olabilir. Son sürümle birlikte gelen "pop over" özelliği ise sanki buna dair bir göz kırpma.

Özellikle web tasarım açısında doğrudan "web publishing" imkanı tanıması ve kullanıcı tanımlamaları yapılabilmesi nedeniyle işi çok çok kolaylaştıracaktır. Ancak advanced sürümünün dosyanın aktif kullanımı için azami 5 kullanıcıya imkan tanıdığını, fazlası için Filemaker Web Server sürümünün gerektiğinin altını çizelim.

Web publishing üzerinden önce LAN üzerinden, port forwarding yapılarak internet üzerinden veri tabanı paylaşmak mümkündür. İnternet tasarımı için ideal olduğunu iddia etmemin yukarıdaki nedeni bu idi.

Field'lar için belli ayrımlar gözetilmiş. Bunlardan önemli olanlar;

Text: Adı üzerinde açıklamaya lüzum yok.
Number: Adı üzerinde fakat calculation ve scriptler için önemli.
Container: Depo alanı, resim ve pdf eklemek hatta doğruda veri kaydı oluşturmak için ideal.
Calculation: Excel formüllerinin hemen hemen hepsine erişim sağlıyor. Bazı eksikleri yok değil ama bunun için "custom hesaplama imkanı tanınmış. Oldukça fonksiyonel. Scriptlerin işini azaltıyor. Fieldlar için dahili script olarak düşünebiliriz. Fieldların her birinin daha önce bir sütun olduğunu dile getirmiştik. Satıra karşılık gelen Filemaker kavramının adı ise "record". Record içi hesaplamalar nedeniyle bu tür satırları bir nevi "mini script" olarak nitelemek doğru olur. Bu şekilde scriptlerin daha hızlı netice vermeleri sağlanabilir.

Geriye şimdilik anlatacağım iki ayrı önemli husus kaldı.

İlki relation kurma. Table oluşturduğunuz kısımda üç ayrı seçenek karşınıza çıkacaktır. Table, field ve relation.

Relation kurma biraz komplike bir iş. Benim de halen tam anlamı ile vakıf olduğumu söyleyebileceğim bir konu değil ama işimi gördürecek kadar iyi kullanabiliyorum.

İki ayrı excel dosyasının varlığını düşünün, Bu ikisininde bir değer arasında eşitlik olduğunu varsayalım. Daha net bir örnek vermek gerekirse; elimizde üç ayrı liste var şu şekilde tasarlanmış:

Ara not: Tırnak içinde verilen değerler "table" isimlendirmeleridir.

1 - İl ID / İl, "İl"
2 - İlçe ID / İlçe / İl ID, "İlçe"
3 - Semt ID / Semt / İl ID / İlçe ID, "Semt"

Her birinin diğeri ile muhakkak bir ilişkisi var. İlişkilerin rakamlar üzerinden kurulmasını pratik ve daha kolay buluyorum. Galiba sayısalcı olmamdan sebep. Haliyle ID olarak tanımlanan sütunlar field olarak tanımlanarak Filemaker içine aktarılacak ve aktarım sonrası her bir liste için farklı bir table oluşturulacaktır. Oluşturulan ayrıca bir table üzerinden bu üç table üzerindeki verileri birbiri ile ilişkilendirip görüntüleyeceğiz. Görüntüleme table'sinin adını "Master Page" olarak koyalım ve tüm fieldlardan birer adet oluşturalım.

Buna göre ilişki aşağıdaki gibi kurulacak:

Ara not: Veriler "table, field" şeklinde verilmiştir.

Master Page,  İl =  İl, İl
İl, İl ID = İlçe, İl ID
İlçe, İlçe ID = Semt, İlçe ID

Master Page, İlçe = İlçe, İlçe
İlçe, İlçe ID = Semt, İlçe ID

Biraz karmaşık durmasının sebebi üç basamaklı bir ilişki kurulması. Eğer tek basamaklı bir ilişki kurulmak istense idi yukarıdaki satırların herhangi birinin yazılması yeterli olacaktı.

Relation kurduk da ne oldu gibi bir söz çıkarsa :D, işte benim beklediğim soru derim. Gel bakalım sazan.

Relation kurulması sayesinde field girişi yapmadan matematiksel eşitlikler sayesinde portal aracılığyla bir diğer table'da kayıtlı veri görüntülenir. Yani yukarıdaki eşitlikler sayesinde bir form view table oluşturup, biraz üzerine cila olarak field özelleştirme yaptığımızı farz edelim. Bu şekilde;

İl seçtiğimizde ilçeleri;
İlçeleri seçtiğimizde ise semtleri doğrudan portal üzerinde görüntülemek mümkün olacaktır.

Bunu bir tür labirent gibi düşünün ve dilediğiniz kadar uzatabilirsiniz... Tabii gerekli relationların doğru kurulabildiği takdirde. İşin daha güzel tarafı benim bu belirttiğim görüntülemeleri 20 milyon satır veri arasında bile gayet seri ve bilgisayarımı kilitlemeden başarabilmesi.

Scriptler ise bir eleştiriye muhatap. Maalesef doğrudan elle kod girişi mümkün değil. Daha önceleri C++ ve Python kullanırken faydalandığım Notepad++ isimli programa Filemaker özel eklentisi yapılmış olmasına rağmen sağlıklı değil ve düzgün çalışmıyor. Ya da ben çalıştıramadım. Çalıştırabilen haber etsin. Elle kod girişini mümkün kılan eklentilerin tamamı ise hak ettiklerinden çok daha fazla para talep ediyor. 5-10 dolar olsa alırdık ama bunlar vur deyince öldürmüş. Hayvan herifler!

Daha önce programlama ile haşır neşir olmuş, algoritma kurmayı bilen herkes için tatminkar bir sonuçlarda hesaplamalar sunabiliyor. Otomatik işlemleri yürütebiliyor. Veri madenciliği için de ideal olduğunu söyleyebilirim.

Bunların dışında her dosya için farklı yetkilendirmelerde kullanıcılar oluşturmak, kullanıcılara şifre atamak, kullanıcılara belli girişleri yasaklamak, her kayıt içerisinde oluşturulma ve değiştirilme tarihlerinin kaydını tutmak, kim tarafından oluşturulduğunun ve değiştirildiğini kaydetmek gibi bir çok seçeneğe de sahip.

Tabii, iş ilanlarında tanınmadığından ötürü "Filemaker Veritabanı Yöneticiliği" göremezsiniz. Bunun nedeni Filemaker "commercial" yani; ticari bir uygulama olması. Bunun yeri bol bol, Oracle görürsünüz ki onun en büyük avantajı ise "open source" yani açık kaynak kodlu ve ücretsiz bir program olması.

Tüm bunlara karşın bilgisayar kaynaklarını da sömürmemesi bakımından Filemaker "can"dır.

Vesselam...


--
Yeni Toplum Dergisi - yenitoplumdergisi@gmail.com

Hiç yorum yok:

Yorum Gönderme