Tablo tasarımı ve ilişkilendirme

1 2 3 4
17/01/2011, 17:31

Hayri16

Access'in temeli bildiğiniz gibi tablolardır. Bütün işlemler Tablolar ve Alanları üzerinde yapılmaktadır.
Bu nedenle tabloların programın başından iyi tasarlanması işlerimizi kolaylaştıracağı gibi
programdan alacağımız verimi de arttıracaktır. Yeni başlayan arkadaşlarımız için bu olayı resimlerle
örnekleyerek anlatmaya çalışacağım.

Bir firmamız var. Bu firmada çeşitli görevlerde olan personel var. Bu personel zaman zaman belirli eğitim
seminerlerine , kurslara gidip geliyor. Personelle ilgili bu kurs kayıtlarını tutacak bir veritabanının
tablo yapısını tasarlamamız istendi.

Önce bizden istenen ne varsa onları yazalım:
Adı - Soyadı- TCNo - babaadı- Doğum tarihi- İli - Yabancıdili - Görevi- Kurs adı- Başladığı tarih -
Bittiği tarih. Tüm bu bilgilerle elimizde şu yapıda bir tablo olur.



Bu tablodaki verilerimizde şimdilik bir sorun yok gibi görünüyor. Ama personel Bir başka kursa gitmek
istediğinde , bu tablo yapımıza göre şöyle bir kayıt eklememiz gerekecek:



Bir çok bilgiyi tekrar girmek zorunda kaldık. Düşünün bu şekilde yüzlerce kayıt ekleyeceğimizi... O halde
bizim bu şekilde ki bir tablo yapımız pek işlevsel değil. O zaman ne yapalım?
Tablomuzun "hareketli parçalarını" yani değişebilir verileri ana tablomuzdan ayıralım.
Bu durumda elimizde şöyle bir tablo kalır.



Şimdi bu tabloya baktığımızda bazı alanların sıkça tekrarlandığını görüyoruz. Nedir bu alanlar. İli ve
yabancı dil alanları. Nasıl daha kolay yaparız? Bu alanları ayrı tablo yapıp, verileri oradan bu
tabloya ilşkilendirerek. Önce bu iki alanı ayrı tablo yapalım:





Sonra ana tablomuzdaki ili ve yabancıdili alanlarının veri tipini sayı haline getirip adlarını da ilno ve
dilno yapıyoruz. Buralara il ve dil tablosundan ilgili kaydın id numarasını aktaracağız.
Sonuçta tablomuz şu hale geliyor:



Buradaki işlemimizi tamamlamış gibiyiz. Şimdi gelelim hareketli olan bölümümüze.



Durum bu şekilde idi.
Bunu da bir tablo haline getiriyoruz. Buna bir de kisino diye sayısal alan ekliyoruz. Neden? Bu
bilgilerin hangi personele ait olduğunu bilmek için. kisino alanına , bu bilgiler hangi personele aitse onun
id sini yazacağız. Şimdi durum aşağıdaki gibi oldu:



Görüldüğü gibi burada da tekrarlanan alanlar var. Bunlar görev ve kurs alanları. Daha önce yaptığımız
gibi bu alanları da tablo haline getirip , bu tabloyla ilişkilendirelim.





Yine bu bağlantı kuracağımız alanları sayısal alan haline getirip , tablolardan ilgili kayıtların id
lerini aktaralım.



Tablomuzun yapısı bu şekilde oldu. En başa gelip o 2 personeli eklemek istediğimizde
yapacağımız iş sadece aşağıdaki gibi olacaktır.



Ne kadar kolaylık değil mi?
Bundan sonra istediğimiz işlemleri, sorguları bu şekilde daha güvenli, daha verimli ve daha kısa zamanda
yapmamız mümkün.
Tablolarımızın ilişki durumu da şöyle:



Son olarak:
1- Tablolarımızda değişebilen alanlarını ayrı tablo.
2- Tekrarlanan alanlarını ayrı tablo yapmalıyız.
3- Tablo ve Alan isimlerinde mümkün olduğu kadar (maalesef) Türkçe karakter ve boşluk kullanmamalıyız.
4- Otomatik sayı alanı mutlaka tablolarımızda olmalı.

Umarım yararlı olmuştur.
İyi çalışmalar.
17/01/2011, 17:46

alpeki99

Teşekkürler sayın Hayri16. Özellikle en son satırdaki bahsettiğiniz Otomatik Sayı'nın önemine dikkat etmek lazım.
17/01/2011, 18:53

Coskun0559

teşekkürler hayri hocam
17/01/2011, 18:58

okileturc

Tşk elinize sağlık
17/01/2011, 19:55

assenucler

Sayın Hayri16;

İyi akşamlar..

Bir çok arkadaşımıza yararlı olacak bu bilgilendirmeniz için teşekkürler.

Her şey gönlünüzce olsun..

Sevgi ve saygılar...
17/01/2011, 21:54

benremix

Sn Hayri hocam çok yararlı bilgiler sizin anlatımınızla daha bir anlaşılır olmuş. Ellerine sağlık.

Saygılar...

1 2 3 4