Kayıt Tarihi: 25.01.2009
Toplam 2 konu açtı.
Toplam 6 yorum yaptı.
Toplam
0
puanı bulunmakta.
Beğeniler: 0 / 0
çok güzel anlatım sağolun
Kayıt Tarihi: 21.03.2009
Toplam 6 konu açtı.
Toplam 20 yorum yaptı.
Toplam
0
puanı bulunmakta.
Beğeniler: 0 / 0
Çok teşekkürler, ellerinize saglık, harika olmuş..
Kayıt Tarihi: 23.05.2008
Toplam 2 konu açtı.
Toplam 13 yorum yaptı.
Toplam
0
puanı bulunmakta.
Beğeniler: 0 / 0
güzel bir çalışma olmuş elinize sağlık
Kayıt Tarihi: 21.03.2009
Toplam 4 konu açtı.
Toplam 69 yorum yaptı.
Toplam
0
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2007 EN,
Beğeniler: 0 / 0
Bu kadar keyifli anlatılır mı bir konu??. Süper.
teşekkürler sn. Berkant ve teşekkürler şişman adam...
Kayıt Tarihi: 05.03.2008
Toplam 252 konu açtı.
Toplam 3.105 yorum yaptı.
Toplam
131
puanı bulunmakta.
Mevcut Office Sürümü:
Office 2013,
Beğeniler: 9 / 23
Şişman adam diye tanınan ama resminde pek şişman görünmeyen  büyük üstat Türkay Ürkmez'in sitesine de bakmanızı tavsiye derim.. Kendisi daha çok C# ile ilgilense de yukarıdaki gibi makaleleri Access severleri de yakından ilgilendirmektedir.
http://www.turkayurkmez.com/
Javascript this.setState({sign:"Here comes the sun...."})
Kayıt Tarihi: 21.03.2009
Toplam 6 konu açtı.
Toplam 20 yorum yaptı.
Toplam
0
puanı bulunmakta.
Beğeniler: 0 / 0
Degerli arkadaşlar, Berkant beyin yolladığı algoritmayı açıklayan mailinde kafamı karıştıran soru işaretleri vardı.. Onlar nasıl oldu bilmiyorum, hem kodların içinde hemde metinde, kodların içinde olanlar kodun bir parçası mı bilmiyorum ama metinde olan soru işaretleri okumayı zorlaştırıyordu.. bende bunları düzeltmeyi düşündüm ve biraz zaman harcayarak yaptım..Umarım faydalı olmuştur.. Kodlardaki soru işaretlerinin orada olması gerektiginden emin degilim, eğer kafa karıştıracak bir fazlalık yada yanlışlık varsa lütfen sizde düzeltin.. Unutmayalım ki egitim bölümündeki bilgiler bu konuları hiç bilmeyen yada çok az bilen arkadaşlara yöneliktir, o yüzden burada yaptığımız küçük bir hata boşuna kafa karışıklıgına sebep olmaktadır..Faydalanacağınızı umud ediyorum.. Seygiyle kalın..
Alıntı: Algoritma, yazılım ve veritabanı kavramlarına giriş
Merhabalar;
Aşağıda göreceğiniz Algoritma, yazılım ve veritabanı kavramı hakkındaki makaleler, büyük üstat Türkay ÜRKMEZ'DEN alıntıdır. Kendisinin sitesine de uğramanızı tavsiye derim.
http://www.turkayurkmez.com/
Programcılık yani yazılım olaya dışarıdan bakan birçok kişi için asosyal bir meslek gibi gözükmesine rağmen aslına bakarsanız; programcılığın, kod yazmanın bir aşk olduğunu görürsünüz. Ve bu aşkın en büyük sebebi ise, o yazılan programın iskeletini oluşturan algoritmadır.Peki ama nedir bu algoritma, Bu kadar övülmeye değer mi gerçekten? Neden bir aşk gibi heyecan verici ve eğlencelidir? Ve en önemlisi neden bu kadar önemlidir?Sanırım çocukluğunda, Tom ve Jerryi sevmeyen yoktur. Özellikle, Tom un Jerry i yakalamak için kurduğu, şu ciddi zeka gerektiren tuzakları herkes hatırlar.Örneğin; Tom bilardo ıslakası ile bilardo topuna vurarak düzeneği başlatır. Top yuvarlanarak masanın sonunda, kaldıraç işlevini gören bir tahtaya çarparak düşürür. Tam tahtanın düşmesiyle birlikte bir bowling topu yuvarlanmaya başlar ve tam hızla bir davula çarpar. Davuldan gelen ses titreşimleri, birkaç bir şeyi tetikler ve sonunda bir ağ Jerrynin üzerine düşmek üzere serbest kalır. Gerçi çoğu zaman Jerry kurtulur. Ama bu konumuzun dışında. Böyle bir düzeneğin çalışmasını izlemek oldukça eğlencelidir. Peki böyle bir düzeneği inşa etmek mi? Eğer bunun da çok eğlenceli olacağını düşünüyorsanız, emin olun iyi bir programcı olabilirsiniz demektir. Çünkü iyi bir program, hedefe ulaşmak için tasarlanmış sağlam bir algoritma üzerine kurulmuştur.
Algoritma kavramını irdelemek için, biraz kafamızı bilgisayarların ve sanal hayatın dışına uzatıp, evrenin ve hayatın kendisine bakalım. Tamam, belki bir algoritma fanatiği olarak iddialı bir cümle olacak ama şunu rahatlıkla söyleyebilirim ki; Hayat ve Doğada bile algoritma vardır. Evet. Bilinen en klasik felsefeye göre hayat bir neden sonuç bütünüdür. İnanmazsanız gelin Şişman Adamın (ki o ben oluyorum) her sabah tekrar eden algoritmik yaşamına bir bakın:
Saat 07.30 Saat çalar. Şişman Adam uyanır ve beş Dakka daha uyuyayım diyerek mırıldanır. Genellikle yirmi dakika uyur ve aniden yataktan fırlar çünkü işe geç kalmak üzeredir. Hemen mutfağa koşar kendine bir şeyler hazırlar ve kahvaltı yapmaya başlar. Yer, yer, yer, yer doymuş mudur? HAYIR! Yine yer, yer, yer, doymuş mudur? Yine hayır... Tam o sırada beyni, işe geç kaldığını söyler ve maalesef doymadan kalkar. İşe gitmek üzere yola koyulur. Çıktığında üç olasılık vardır; a) Otobüs, b) Tren, c)Dolmuş birini seçmek zorundadır. Bunun içinse saatine bakar ve şu şekilde düşünür:
Eğer saat 07.50 ise trenle gider.
Eğer saat 08.00 ise otobüs
Eğer saat 08.05 ise dolmuş
Çünkü; hedefi zamanında işte olmaktır.
Tüm bu söylediklerimiz üzerine algoritma kavramını bir inceleyelim..
İyi bir Algoritma ;
* Hedef
* Koşullar
* Parametreler
Olarak sayabileceğimiz öğelerden oluşan bir kavramdır. Eğer bu öğeleri sorunsuz bir şekilde tamamlayıp, birleştirirseniz algoritmanızı tamamlamışsınız demektir.Hedef, zaten belirli bir ihtiyaç analizi süreci sonrasında oluşturacağınız bir kavram, Diğer iki öğe ise bu hedefin nasıl, ne şekilde gerçekleşeceği üzerine yoğunlaşır.Bana kalırsa, bu noktada en önemli öğe, koşul öğesidir. Hedefine kilitlenmiş bir algoritmanın temelinde, koşul kavramı yatmaktadır. Hatta işin en eğlenceli kısmıdır diyebilirim. Şişman Adamın algoritmasında, tüm koşullar işe zamanında gitmek hedefi üzerine şekilleniyor. O nedenle; uykusunu alamasa da, kahvaltıda karnını doyuramasa da hedefini gerçekleştirmek üzere, tek bir parametre yani saatin kaç olduğuna bakarak hareketine karar veriyor.İşte bir bilgisayar programının çalışma algoritması da böyledir. Söz yine programa gelmişken şunu söyleyebiliriz.Eğer program bir canlı olarak düşünülürse, programcı onun ebeveynidir. Büyüyünce ne olacağını (hedefi), hayata dair bilgileri (parametreleri) ve onları nasıl kullanacağını (koşullar) ona ebeveyni öğretir.Eh. Artık onun neden bir aşk olduğunu ve önemli bir aşk olduğunu sanırım daha net anlamışsınızdır. Bu yazı da size keyifli gelmişse, mutlaka bir programlama dilini öğrenmeye başlayın derim. Daha önceki makalemizde belirttiğimiz gibi, programcılık, hayatın kendisidir. Bu nedenle, Şişman Adam üzerinden kavramları incelemeye devam edeceğiz. Şişman adam; hareketlerine, yapacağı işlere nasıl karar verir? Mutlaka ve mutlaka, herkes de olduğu gibi onun da bir karar mekanizması var ve bu mekanizma temel olarak neden sonuç ilişkisine dayanır. Bu ilişkideki nedensellik ise en temelde var yok ya da evet hayır değerleri taşır. Efendim, Elektronikteki gibi mi dediniz?
Daha ötesine bakın lütfen... İnsanlardaki gibi desek çok mu abartmış oluruz. Şu sözü, bir elektronik aygıt mı söyledi yoksa; Olmak ya da olmamak. Evet insan düşüncesi de bu temel ilke ile karar veriyor: Herhangi bir eylemin gerçekleşip gerçekleşmediğine bakmak... Programcılıktaki adıyla; True ya da False olup olmadığına...
Şişman Adamın, bu konudaki örneklerine bir bakalım isterseniz...
Adamımız; günlerden birgün, yalnızlığa canının tak ettiğini düşünür ve biraz rahatlamak için (!) Bara gider. Barda meyve suyunu yudumlarken karşısındaki bayandan etkilendiğini hisseder. O anda fark etmese de beyni şu şekilde düşünür:
EĞER karşıdaki bayan sana bakıyorsa
Git onunla konuş.
DEĞİLSE
Kısmet değilmiş.
KARAR VERİLDİ
Bu yapıyı VB.NETe çevirirsek:
IF bayanbakıyormu = true THEN
MessageBox.Show("Git Konuş")
ELSE
MessageBox.Show("Kısmet Değilmiş")
END IF
İşte sevgili yazılım dostları, tüm yazılım dilleri için bel kemiği olan Karar yapılarına temel bir giriş yaptık. Ancak tabii ki olay bu kadar değil. Olayı çok da uzatmadan Şişman Adama geri dönelim.
Şişman Adamın ayda bir kere psikolog bir arkadaşına gidip danışma gibi bir özelliği var. Şimdi size bu son görüşmeden kısa bir konuşmayı aktaralım.Her şey dokuz yaşımdayken başladı dostum... Kahvedeki o yaşlı amca beni o kadar yıpratmıştı ki, hala hatırladıkça tüylerim diken diken oluyor: O gün, mahallede arkadaşlarımla oyun oynuyorduk. Birden kahvenin önünde oturan yaşlı bir adam yanıma geldi ve elinde tuttuğu boş Uzun Samsun paketini bana göstererek şu aşağıdaki cümleyi kurdu.
EĞER bu sigara varsa
Bu sigaradan al
YOKSA EĞER Kısa Samsun varsa
Onu Al
YOKSA EĞER Uzun Maltepe varsa
Onu Al
YOKSA EĞER Kısa Maltepe varsa
Onu Al
O KADAR
Bu cümleyi unutamadım dostum. Evet,Şişman Adamın bu garip anısının tabii ki, VB.NET ile bir bağlantısı var. Yukarıdaki cümlenin aynısını bakın VB.NET dilinde nasıl yazıyoruz:
IF uzunsamsunvarmi = true THEN
Messagebox.Show(‘Uzun Samsun Al?)
ELSE IF kisasamsunvarmi = true THEN
Messagebox.Show(?Kısa Samsun Al?)
ELSE IF uzunmaltepevarmi = true THEN
Messagebox.Show(?Uzun Maltepe Al?)
ELSE IF kisamaltepevarmi = true THEN
Messagebox.Show(?Kısa Maltepe Al?)
END IF
Sanırım farketmişsinizdir, şimdiye kadar karar yapılarını sadece bir eylemin sonucuna göre kullandık. Oysaki, normal bir insan çoğu zaman, karar verirken birbirinden farklı birkaç eylemin sonucuna bakmaktadır...Örneğin Şişman Adam, ÖSS de barajı geçip de, sıra tercih aşamasına geldiğinde şöyle düşünmüştü:
EGER puanım bu bölüme yetiyorsa VE bu bölümde okumak beni mutlu edecekse
Yazarım..
KARAR VERİLDİ.
Ya da daha spesifik bir örneği Şişman Adamın anılarından aktaralım: Şişman Adam, katıldığı bir nikah töreninde şöyle bir gözlem yapmış: Damat ve Gelin, nikah memurunun huzuruna çıktıkları anda, hayatları boyunca unutamayacakları en güzel EVET i diyeceklerini biliyorlardı. Ve yine bildikleri bir şey vardı ki; içlerinden birinin HAYIR demesi durumunda, bu evlilik gerçekleşmeyecekti.
Yani bir cümleyle şöyle özetlenebilir bu durum:
EĞER Damat ?evet? der VE Gelin de ?evet? derse
Evlenirler.
DEĞİLSE (İçlerinden biri hayır derse)
Evlenemezler
BUDUR.
İşte bu cümlede VB.NET de kullanılan AND operatörünü anlamamıza olanak sağlayacaktır.
IF Damat = Evet AND Gelin = Evet THEN
MessageBox.Show (Evlenirler)
ELSE
MessageBox.Show (Evlenemezler)
END IF
Normal hayattaki kararlara geri dönelim...Zaman zaman, öyle durumlar oluşur ki; karar vermeniz için iki eylemden birinin gerçekleşmesi yeterli olur. İşte bu durumda da VB.NET tarafında VEYA anlamına gelen OR kullanırız...
IF Gun = ?Cumartesi? OR Gun = ?Pazar? THEN
MessageBox.Show(?Hafta Sonu?)
ELSE
MessageBox.Show(?Hafta İçi?)
END IF
Peki... her eylemin bir sonucu mu vardır şu hayatta? Hayır tabii ki... Bazen, eylemin gerçekleşme şekline göre birden fazla sonuca kendinizi hazırlayıp ona göre karar vermeniz gerekir. Bunun örneğini bakalım Şişman Adam nasıl veriyor...
Şişman Adam, paranoyak bir adam olduğu için, araba kullanırken ışıklara gelmeden neredeyse bir kilometre önceden aşağıdaki gibi düşünür...
Işıklara Ulaştığında
Işık Kırmızı ise
Duracak
Işık Sarı ise
Bekleyecek
Işık Yeşil ise
Geçecek
Bitti
İşte sevgili Şişman Adam fanatikleri...Bu tarz bir karar mekanizmasını VB.NET de select case yapısını kullanarak yapıyoruz
SELECT CASE isiklar
Case is ?Kırmızı?
MessageBox.Show(?Dur?)
Case is ?Sarı?
MessageBox.Show(?Bekle?)
Case is ?Yeşil?
MessageBox.Show(?Geç?)
END SELECT
Gördüğünüz gibi dostlar... Programcılığı hayatın temellerinden ayıramayacağınızı bir kez daha gösterdik.
Şunu asla unutma ey sevgili okur... Burada olduğunuz sürece şişman adam maceralarına devam edecek.
Hepinize sağlam algoritmalı kodlar diliyorum. Hayatın tüm anlarının, yazılımda bir karşılığı olduğunu artık anladınız biliyorum... Ama, durmayacak bu şişman adam! Koşacak ve zayıflamayacak! : )
Şimdi sevgili dostlar... Üçüncü makalemizde, şişman adamımız bizi döngülerin içine atıyor. Bakalım neler olacak...
Öncelikle, döngünün ne anlama geldiği hakkında biraz beyin fırtınası yaşayalım. Çoğu aksiyon filminde klişeleşmiş bir replik vardır. Zamanı geldiğinde harekete geçeceğiz. Saatlerimizi ayarlayalım. Bu repliği söyleyen arkadaş, koşul olarak kendisine zamanı seçiyor ve bu koşul gerçekleştiği an, eyleme geçiyor.Biz yine buradaki koşul kavramının felsefesine bir inelim. İnsan, her türlü hareketine yaşamının devam etmesi için zorunlu olanlarda dahil koşullar aracılığı ile karar verir. Zaman da, insanların İcad ettiği koşullardan biridir bu durumda...Peki. Beklenen koşul gerçekleşmediğinde ne yapar? Buna verilecek en temel yanıt, koşulun gerçekleşmesini bekler olacaktır öyle değil mi? Koşul gerçekleştiği anda ise, zafer onun olacak ve eylemine başlayacaktır. İşte tüm bu sürece biz, programcılıkta döngü adını veriyoruz. Bu kadar felsefi giriş yeter, Şişman Adama dönelim. Bakalım o bize bunu nasıl anlatacak? Bizim Şişman Adam, bir zamanlar bir bankada yöneticilik yapıyordu. Kahramanımız, pek de otoriter biri sayılmaz ama , stratejist biri olduğu rahatlıkla söylenebilir. Günlerden bir gün , mesai saatinin bitiminden yaklaşık bir saat önce, acilen bir yere gitmesi gerekir. Bankadan çıkmadan önce, yaklaşık elli kişilik bir kuyruğun, bir banka memurunun önünde biriktiğini görür. Memurun yanına giderek şöyle der :
İşin bitmesi İÇİN Birinci kişiden başla, ellinci kişiye kadar birer birer git
Bir kişinin işini hallet
Sıradakini çağır.
Memur bu durumdan ne kadar memnun bilmiyorum ama yukarıdaki cümle sanki bir For Next döngüsünü çağrıştırıyor:
FOR kisi as integer = 1 to 50 Step 1
MessageBox.Show (kisi & . Kişinin işi yapıldı)
NEXT
Bakın bir For...Next döngüsü için en temel parametreler karşımıza çıktı. Bunlar;
* Başlangıç Noktası
* Bitiş Noktası
* Başlangıçtan Bitişe hangi adımlarla gideceği...
Buradaki, örnek lütfen sizi yanıltmasın... Örnekte; başlangıç noktası minimum, bitiş noktası maksimum (1 to 50) artış değeri ise 1 (step 1) olarak belirtiliyor. Ancak bu bir zorunluluk deği. Yani maksimumdan minimuma da For..Next döngüsü kurmak mümkün. Fakat bu durumda STEP -1 olarak verilmelidir.
FOR kisi as integer = 50 to 1 Step -1
MessageBox.Show (kisi & ?. Kişinin işi yapıldı?)
NEXT
Bakınız sevgili dostlar, For...Next döngüsü çalışırken üç tane zorunlu parametre sahibiyiz. Ancak, hayatımızdaki koşulların gerçekleşme süreçleri (döngüler) her zaman böyle spesifik parametrelerden oluşmazlar. Her ne kadar yurdum insanı, sorulan adrese hep 100 metre ilerde solda? dese de, genelde spesifik bir değerden (50 kişi gibi) bir çırpıda bahsetmemiz pek olası değildir. Tabii Yağmur Adam gibi değilseniz...Durum böyle olunca işin içine, spesifik parametre içermeyen; yalnızca, koşulun gerçekleşip gerçekleşmeme durumuna göre hareket eden bir döngü mekanizmasına ihtiyaç duyulur...Ya tamam biliyorum biliyorum çok resmi gidiyor bu yazı... Hani şimdi Şişman Adam fanatikleri hafiften kısa kes beaaa, ben şişman adamı arıyorum diyor olabilir. Tamam canım hemen sözü bizim Şişman Adama bırakıyorum...Şişman Adam, akşamları eve trenle dönmeyi tercih ediyor genelde. Söğütlüçeşme tren istasyonundan bindiği banliyö treninden Atalar istasyonunda iniyor ve ulaşımında tren ya da otobüs kullanan çoğu insan gibi arada kaç tane istasyon olduğunu hiç bilmiyor. Yani şişman adamın bilinci, trene bindikten sonra şöyle işliyor:
Trenin durduğu istasyon Atalardan farklı olduğu SÜRECE
Trende Kal
Tren sonraki istasyona devam etsin
Bu ifadede görüldüğü gibi, spesifik olan tek şey, koşulun kendisi yani, tren istasyonunun Şişman Adamın ineceği durak olan Atalardan farklı olması.
Bu durumu bakın VB.NET e nasıl çeviriyoruz
While istasyon <> Atalar
Trende Kal
Sonraki istasyona git
End While
Bu kadar basit !!!
Şimdi sevgili dostlar... Programcılık Aleminin ve VB.NET in en sağlam döngüsü olan FOR EACH döngüsünü tamamen Şişman Adamın tombul ellerine bırakıyorum...Şişman Adam, yalnız yaşayan bir adam. Yo yanlış anlamayın, asosyal olduğundan falan değil, evi o kadar dağınık ki, hiç kimse onunla yaşamaya tahammül edemiyor. Tabii her kahramanda olduğu gibi, bizim şişman adamın da duygusal bir yönü var. Gel gelelim bu duygusal taraf geçen günlerde dank etti ve adamımız bundan sonra temiz bir adam olacağına söz verdi. Hemen evi temizlemek için bir algoritma düşündü... Düşündü... Ve aşağıdaki cümleyi kurdu :
Odanın içindeki her bir eşya için
Eşyanın tozunu al.
Sıradaki eşyaya geç.
Sonra da bunu günlüğüne aşağıdaki gibi geçirdi:
For Each esya in oda
MessageBox.Show (esya & ?nın tozu alındı?)
Next
Mükemmel bir döngü! Kral bir döngü !
Sevgili algoritma aşıkları! Döngülerde sık karşılaşılan bir mantıksal hataya karşı hepinizi uyarmak Şişman Adamın boynunun borcudur. Bu mantıksal hatanın adı: Sınırsız Döngüdür. Ve yazılımcılar arasında, sınırsız döngülere giresice diye bir takılma bile söz konusudur. Makalenin başında belirttiğimiz döngü tanımına gönderme yaparak diyebiliriz ki; gerçekleşmesi mümkün olmayan bir koşula yönelik oluşturulan döngü, sınırsız döngüdür. Nasıl yani? Şöyle yani... Kırmızı kar yağdığında, seninle evleneceğim derseniz birine, yüzünüze tokadı yiyeceğiniz aşikardır. Çünkü, bu bir sınırsız döngüdür.
Örneğin For Next döngüsünde anlatılan ikinci örneği sınırsız döngüye sokalım:
FOR kisi as integer = 50 to 1 Step 1
MessageBox.Show (kisi & .? Kişinin işi yapıldı?)
NEXT
Dikkat !! 50 den başlan kisi degiskeni, 1er 1er ARTARAK 1e ulaşmaya çalışıyor ! 30 Şubat da buluşuruz demek gibi bir şey bu Amman dikkat derim!
Evet, sevgili dostlar... Şişman adam, bu maceranın da sonuna bu şekilde geldi. Bir sonraki makalede görüşmek üzere...
Şişman Adamın bir yenisi gelene kadar sınırsız döngüye girmemeniz temennisiyle. Sevgili dostlarım; eğer bu maceraların takipçisiyseniz; yazılımın, hayatın tam içinden olduğunu biliyorsunuz demektir ve eğer bunun bilincindeyseniz; benden de böyle bir yazım tarzı bekliyorsunuz demektir. Ama söz konusu Veritabanı olunca. Ya, Heyecanlanmayın tamam. Şaka yaptım sadece Aması falan yok Veri tabanı da, hayatımızın içinden bir kavram. Şöyle düşünün arkadaşlar (bu tarzı yemin ederim çok özlemişim.) Günlük hayatımızda, doğumumuzdan ölüme kadar olan süreç içersinde tüm yaşamsal ihtiyaçlarımızı karşılamamızda yardımcı olan en önemli şey nedir sizce? Hadi canım dürüst olun! Para dır. Öyle değil mi? Peki sizler günlük hayatınızda bu paraya sürekli ulaşabilmeniz, üzerinde işlem yapabilmeniz ve paranın güvenliğini sağlamak için ne yaparsınız. Sıralayalım:
* Anneme veririm, annemden alırım.
* Yastığımın içine koyarım.
* Testiye koyup bahçeme gömerim
* Bankaya yatırırım ve böylece internet, telefon gibi iletişim cihazlarını kullanarak parama istediğim zaman erişir, üzerinde işlem yapabilirim. Hem de güvenli olur.
Buradaki durumda; en hızlı ve güvenilir olanı seçersek; bu seçenek hiç şüphesiz ki; Banka olacaktır.
İşte sevgili dostlarım; günlük hayatımızdaki paranın yerini, yazılım hayatında veri almaktadır. Bankanın yerini ise Veritabanı . O zaman Yukarıda yer alan son maddeyi buna göre tekrarlayalım.Veritabanını kullanarak verime istediğim zaman erişir, üzerinde işlem yapabilirim. Hem de güvenli olur. (yo hayır tabii ki Copy-Paste yapmadım ellerimle yazdım). Arkadaşlar, üzerinde önemle duruyorum ki, veritabanına kavramına Hakim olmak ve ona hak ettiği ehemmiyeti vermek çok önemli. Lütfen ve lütfen veri tabanı bilmeden yazılım konusunda çok fazla yol kat edilemeyeceğinin bilincinde olalım. Bu benden beklenmeyen ciddi uyarıdan sonra, hayattaki örneklerimize geri dönelim. Dostlarım; mademki, veriyi para ile bir tutuyoruz, bu yoldan hareketle şunu söyleyebiliriz, önemli olan parayı BİRİKTİRMEK değil YÖNETMEK tir. Yoksa efenim Enflasyonu var, Devalüasyonu var. Risk yönetimini ciddiye almak lazım. Yatırım yönetimi konusunda tecrübeli insanlardan öğrendiğim kadarıyla; paranın birbiriyle ilişkili olacak şekilde birden farklı yatırım kanallarına bölünerek değerlendirilmesi çok daha iyiymiş. Ama burada önemli olan kriter, yatırım kanallarının çok olması DEĞİL, ilişkilerinin sağlıklı olmasıymış. Devam etmek isterim ama, konumuz SQL değil mi? Mademki veri eşittir para, o zaman acaba yatırımcı ağabeylerin / ablaların sözlerini veritabanında da kullanabilir miyiz?
Evet, aslında sevgili dostlarım iki paragraf önce, ilişkisel veritabanı yönetimi sistemi? Relational DataBase Management System (RDBMS) kavramına girmiş oldunuz. Yazılım dünyasına hayırlı ve uğurlu olsun. Evet, arkadaşlar, veritabanındaki yatırım araçlarımız ise tablolarımızdır. Tablolar arası kurulan ilişkiler aracılığıyla; verinize güvenilir ve hızlı erişir ve aynı oranda güncelleyebilirsiniz. İşte bu, verileri tablolara bölme ve tabloları birbiriyle ilişkilendirme yöntemlerine de normalizasyon adı verilir.
Dostlarım, tecrübeli yatırımcılar nasıl tecrübelerini diğer yatırımcılara aktarıyorlarsa, RDBMS kavramına yılların emeğini vermiş insanlar da bizlere öyle aktarıyorlar modelleme yöntemlerini Normalizasyon kavramı da aslında bu tarz önerilerin bir manifestosudur. Söz gelimi; Excelde oluşturulmuş bir belge de veri tabanı olarak düşünülebilir ancak hımm bak böyle yaparsan daha iyi olur der bize normalizasyon. Bir veritabanının normalizasyonunu oluştururken başlangıç olarak amaçladığınız sonuca karar vermelisiniz dostlar. Yani elinizdeki verinin olabilecek en detaylı çıktısını örnekleyerek yola çıkarsınız. Hadi eğlence başlasın o zaman.. Senaryomuz bir telefonla pazarlama şirketi üzerinden olsun. Bu şirketin, nasıl çalıştığını kabataslak bir çizelim önce?
Şirketimiz birkaç kategoriden oluşan ve birkaç farklı tedarikçinin sağladığı ürünleri, kayıtlı müşterilerine ulaştırmaktadır. Satılan ürünler, anlaşmalı kargo şirketleri tarafından müşterilere ulaştırılmaktadır. Bu arada, şirketin çalışanları sattıkları ürünlere belli oranlarda prim alırlar. Bu durumda söz konusu şirket için sipariş verilerinin tutulması çok büyük önem taşımaktadır.
Bu paragraf, bazı şeylerin kafamızda canlanması için yeterli sanırım. Bakınız bazı kelimelerin üzerinden geçelim ve daha dikkatli olalım
* birkaç kategoriden oluşan
* farklı tedarikçinin sağladığı
* ürünleri
* kayıtlı müşterilerine
* anlaşmalı kargo şirketleri
* çalışanları
* sipariş
(Bu sefer copy¬-paste yaptım. İtiraf ediyorum)
İstediğimiz en detaylı veri çıktısı ise aşağıdaki gibi olsun:
Sipariş No......... 1
Müşteri Adı....... Ayhan Çalışkan
SiparişTarihi...... 07.01.2007
Gönd.Gereken T. 14.01.2007
Kargo Tarihi...... 10.01.2007
Kargo Ücreti..... 100 YTL
Alınan Ürün...... Plazma TV
Ürün Kategorisi. Elektronik
Ürün Adedi 1
Sipariş Toplam 2500 YTL
Şimdi Biraz kendimizi zorlayalım ve bazı sorular soralım:
1. Böyle bir veriyi en hızlı ve en güvenli şekilde nasıl elde ederim
2. Bu veriden daha farklı olarak nasıl veriler üretilebilir?
İkinci sorumuzdan başlayalım.
* Çalışanlar satışları üzerinden prim aldıklarına göre, hangi çalışanın ne kadar ürün sattığı bilinmek istenecektir.
* Hangi müşterinin belirli bir dönemde ne kadar ürün aldığı görülmek istenebilir.
* Bir tarih verilip, o tarihteki siparişler görülmek istenebilir.
* Kargo şirketlerinin durum takibi istenebilir
* En çok hangi ürünün satıldığı / kar ettirdiği bilinmek istenebilir.
* En çok kazandıran sipariş görülmek istenebilir
Ve daha fazlası. Bu patronlar hep böyle canım isterler de isterler. Şimdi biz, bu veritabanının nasıl normalize edileceğine bir bakalım. Bir an için, bilgisayar diye bir şeyin icat edilmediğini var sayalım. Ama yine de, yukarıdaki raporları isteyen bir patron mutlaka olurdu herhalde! (Ey sevgili patronum eğer bu yazıyı okuyorsan seni tenzih ederim Sözüm meclisten dışarı
Şimdi madem bilgisayar yok, o zaman raporları hazırlamanız için kendinize bir ekip kurardınız dimi? Peki Bu ekibin görev dağılımı en verimli nasıl olabilirdi? Verimlilik derken şunu kastediyorum, ekibinizdeki tüm kişilerin performansı yüksek olmalıdır ki; istediğiniz raporu hızlıca hazırlayabilsinler. Çok sıkılıp bunalmasınlar. Her veriyi nerede bulabileceklerini çok iyi bilsinler. Yani o konuda uzman olsunlar. Demek ki, ekipteki her kişiye uzman olması gereken bir konu vereceğim;
Örneğin;
* Mehmet bey; siz yalnızca çalışanların bilgilerinden sorumlusunuz. Her bir çalışanın, adı, soyadı, iletişim bilgileri, doğum tarihi sizden sorulacak
* Aykut bey; siz ise Kargo şirketlerinden sorumlusunuz efenim
* Emre bey, siz Kayıtlı Müşterilerden sorumlusunuz. Şirketin müşteri Portföyündeki tüm bilgileri ne var ne yok bilmenizi istiyorum
* Cihan bey aramızdaki en tecrübeli sizsiniz bu nedenle Sipariş bilgilerini de size emanet ediyorum? Hangi siparişimiz hangi müşterimiz tarafından alınmış. Hangi çalışan satmış, sipariş tarihleri falan sizden sorumludur efendim
* İlhan bey, siz siparişlerin bazı detaylarından sorumlusunuz. Örneğin hangi siparişte hangi üründen kaç adet var? İndirim felan yapılmış mı bu görev sizin?
* Derya hanım, siz ürün bilgilerinden sorumlusunuz?
* Ayhancım dostum, sen kategorileri çok iyi bileceksin. Ona hakim olacaksın hadi göreyim seni?
* Tuğrul Bey siz de, efenim lütfen tedarikçi şirketlerimiz hakkındaki tüm verilere sahip olunuz.
Şimdi değerli ekip arkadaşlarım beni iyi dinleyiniz. İşleri hızlandırmak için şöyle bir şey yapacağız; Şöyle ki :
1. Ayhan ve Tuğrul bey siz telefon numaralarınızı Derya hanıma veriniz.
2. Derya Hanım siz de telefon numaranızı İlhan Beye veriniz lütfen.
3. İlhan Bey siz, Cihan beyin de telefon numarasını alın.
4. Emre Aykut ve Mehmet Bey sizlerde telefon numaralarınızı Cihan beye veriniz lütfen?
Bakın arkadaşlar bu sayede şöyle bir sistem kurmuş olduk;
Bu resim küçültülmüştür. Tam boyutunda görmek için tıklayın.
Şimdi niye böyle bir şey yaptık. Şöyle düşünün yazılım dostları, ben Derya hanıma, Ürünlerin hangi kategorilere ait olduklarını ve bu ürünleri kimden tedarik ettiğimizi sorarsam; Derya hanım hemen Ayhan beyi arayarak ürünlerin kategorilerini soracak. Bilgileri aldıktan sonra da, Tuğrul beyi arayıp, tedarikçilerin isimlerini alacak. Yani, bu bilgiler, Derya hanımda toplanacak ve istediğim rapor hazırlanmış olacak dimi? Peki yukarıdaki en detaylı veri çıktısını istersem?
O zaman;
1. Cihan Bey, Mehmet Beyi arayarak, Çalışan ismini sorar
2. Cihan Bey, Emre Beyi arayarak, Müşteri ismini sorar
3. Cihan Bey, Aykut Beyi arayarak siparişi götüren kargo şirketini sorar
4. Cihan Bey, İlhan Beyi arayarak hangi ürünün sipariş edildiğini sorar
5. İlhan bey bunu bilmediğinden, Derya hanımı arar ve ürün adını öğrenir
6. Derya hanım kategorisini öğrenmek için Ayhan beyi arar
Ve ben raporumu yine elde ederim !!!!
Ya sevgili dostlar tahmin ettiğiniz gibi yukarıdaki senaryoda, ekibimde bulunan insanlar aslında birer tablo. Ve tablolar birbirlerine ilişkiler ile bağlı?
Bakın bir kavram daha görmüş oluyorsunuz böylece.
Primary Keyler ve Foreign Keyler. Bunu şöyle açıklayalım.
Tuğrul beyin cep telefonu numarası kendisinin PrimaryKeyidir.
Derya hanımın cep telefonundaki rehberde yer alan Tuğrul Beyin numarası ise ForeignKeydir.
Derya Hanım bu Foreign Keyi kullanarak Tuğrul Beye ulaşır.
İŞTE VERİM DİYE BEN BUNA DERİM
Süper oldu ama dimi? Ben yöneticilik mi yapsam ne?
Evet, sevgili yazılım severler. Bu makalemde, normalizasyon kavramını naçizane Şişman Adam tarzında anlatmaya çalıştım sürç-i lisan ettiysek affola.
Umarım hoşunuza gitmiş ve veritabanı kavramının mantığını anlamışsınızdır.
Not: Bu makaleler Sayın Türkay Ürkmez den izin alınarak sitemizde yayımlanmıştır.
|