Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Access Dersanesi (http://www.excel.web.tr/forumdisplay.php?f=171)
-   -   Veri Tabanı Kavramına Giriş (http://www.excel.web.tr/showthread.php?t=33418)

beab05 18-06-2007 14:30

Veri Tabanı Kavramına Giriş
 
Aşağıdaki yazı büyük üstat Türkay Ürkmez'den alıntıdır.. Bilhassa tablolar ve ilişkiler konusundaki anlatımı herkesin anlayacağı türden ve kendine has üslubu ile yapılmıştır..

Şö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; Excel’de oluşturulmuş bir belge de veri tabanı olarak düşünülebilir ancak “hmm bak böyle yaparsan daha iyi olur” der bize normalizasyon…


Bir veritabanının normalizasyonunu oluştururken başlangıç olarak “amaçladığınız sonuç” a 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ı kaba taslak 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:


Böyle bir veriyi en hızlı ve en güvenli şekilde nasıl elde ederim
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 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 di mi? 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 – indirim 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 hakim 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 bey’e 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

Şimdi niye böyle bir şey yaptık? Şöyle düşünün yazılım dostları, ben Derya hanım’a, Ürünlerin hangi kategorilere ait olduklarını ve bu ürünleri kimden tedarik ettiğimizi sorarsam; Derya hanım hemen Ayhan bey’i arayarak ürünlerin kategorilerini soracak. Bilgileri aldıktan sonra da, Tuğrul beyi arayıp, tedarikçilerin isimlerini alacak. Yani, bu bilgiler, Derya hanım’da toplanacak ve istediğim rapor hazırlanmış olacak. Di mi ? Peki yukarıdaki “en detaylı veri çıktısı” nı istersem?


O zaman;

1. Cihan Bey, Mehmet Bey’i arayarak, Çalışan ismini sorar

2. Cihan Bey, Emre Bey’i arayarak, Müşteri ismini sorar

3. Cihan Bey, Aykut Bey’i arayarak siparişi götüren kargo şirketini sorar

4. Cihan Bey, İlhan Bey’i 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 bey’i 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….


PrimaryKey’ler ve ForeignKey’ler… Bunu şöyle açıklayalım…


Tuğrul bey’in cep telefonu numarası kendisinin PrimaryKey’idir…

Derya hanımın cep telefonundaki rehberde yer alan Tuğrul Bey’in numarası ise ForeignKey’dir…


Derya Hanım bu ForeignKey’i kullanarak Tuğrulbey’e ulaşır…


İŞTE VERİM DİYE BEN BUNA DERİM


Süper oldu ama di mi ? Ben yöneticilik mi yapsam ne ?



Evet sevgili yazılımseverler… 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…

gitarisyen 28-12-2007 00:29

Sayın beab05;

Yazının bir çıktısını aldım. Çok keyifli, anlaşılır ve dolu bir yazı gerçekten. İlk defa görüyorum bu yazıyı. Bu güzel üslubundan dolayı Türkay Ürkmez'e ve bu güzel yazıyı eklediğiniz için size teşekkür ederim.

Saygılarımla...

naxos 28-12-2007 00:35

Tek Kelimeyle Muhteşemmm

beab05 28-12-2007 00:39

6 ay geçmiş vay canına ;) Bu linki birçok defa referans olarak verdim ama ilk defa sizler kayda değer buldunuz. Gerçekten çok eğlenceli ve anlaşılır bir tarzı var..

gitarisyen 28-12-2007 00:52

Alıntı:

beab05 tarafından gönderildi (Mesaj 229013)
6 ay geçmiş vay canına ;) Bu linki birçok defa referans olarak verdim ama ilk defa sizler kayda değer buldunuz. Gerçekten çok eğlenceli ve anlaşılır bir tarzı var..

6 ay boyunca -Access konusunda her eline geçeni okumaya çalışıp, her yazıyı araştıran biri olduğunu düşünen biri olarak- bu yazıyı görmemiş olma ayıbı da bana yeter. :kafa:

beab05 28-12-2007 00:58

Ne acıdır ki birçoğumuzun yaptığı gibi daha tabloda "birincil anahtar" ın ne olduğunu bilmeden pencere gizlemeye ya da adı tablo olan ama sadece adı tablo olan tablolardan oluşmuş bir veritabanı ve formlarında binbir çeşit rengin barındığı kayıp akıp giden yazılardan başımızın döndüğü en basit hata denetimlerinin bile yaptırılmadığı veritabanlarımıza nasıl şifre koyarız diye düşünüyoruz, saklanıp gizlenecek bir tasarım varmış gibi..

halise 28-12-2007 01:35

bu yazıdan sonra dedimki iyki veritabanı yada bilgisayar varmış, şu kadarcık bir iş için trafiğe bakarmısınız:)
Teşekkürler beab05, yazı faydalı oldu..

muhammetozgen 27-02-2015 14:19

tesekkürler sanırım bu yazı ile kapıyı actık ama daha kapıdan içeri adım atabilmek içiin daha cok tesekkur yazıları yazmam gerek bide içerde gezindiğimi düşününce ....


Saat 04:03

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.