Tablo Tasarımı 

İyi bir veritabanı tasarımı, iyi düşünülmüş tablo tasarımı ile başlar. Bu ilke uygulamada şu anlama gelir: Mouse işaretçisini Access simgesi üzerine doğru götürmeden önce, elinize bolca kağıt, bir de kalem alın ve başlayın tablo tasarımına. (Kağıdınız kareli, kaleminiz de kurşunkalem olursa ve elinizin altında bir de silgi bulunursa, tablo tasarımınızın başarılı olacağını şimdiden garanti ederim!) Önce kağıda bu veritabanı projesinin sonunda ortaya çıkmasını istediğiniz liste, rapor ve diğer ne türlü belge varsa, hepsini başlıklar halinde yazın. Bu kağıdı önünüze koyun ve ayrı sayfalara buradaki her bir maddenin kağıda döküldüğünde nasıl görünmesini istiyorsanız o şekilde görünümünü çizin. İstediğiniz başlıkları, altbaşlıkları, sütunları ve satırları belirtin. Sonra bu sayfalarda gördüğünüz şekillere bakarak, alanları (sütun başlıklarını) listeleyin. Örneğin, kendinize bir telefon defteri-temas çizelgesi hazırlıyorsanız, alan tanımlarınız şöyle olabilir:

1. Sıra no = otomatik sayı

2. Adı = metin, 20 karakter boyutunda, boş olamaz

3. Soyadı = metin, 20 karakter boyutunda, boş olamaz

4. Adres Satır 1 = metin, 30 karakter boyutunda, boş olabilir

5. Adres Satır 2 = metin, 30 karakter boyutunda, boş olabilir

6. Şehir = metin, 20 karakter boyutunda, boş olabilir

7. Posta kodu = metin, 5 karakter boyutunda, boş olabilir

8. Ülke = metin,  20 karakter boyutunda, boş olabilir

9. Doğum tarihi = tarih (otomatik olarak boyutlanır), boş olabilir

10. Doğum gününde kart yollayacak mıyım= evet/hayır, boş olabilir

10. Eşinin Adı = metin 20 karakter boyutunda, boş olabilir

11. Çocuk 1 Adı = metin 20 karakter boyutunda, boş olabilir

12. Çocuk 2 Adı = metin 20 karakter boyutunda, boş olabilir

13. Çocuk 3 Adı = metin 20 karakter boyutunda, boş olabilir

14. Çocuk 4 Adı = metin 20 karakter boyutunda, boş olabilir

15. Ev telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir

16. İş telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir

17. Cep telefon no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir

18. Faks no = metin, xxxx-xxx-xxxx biçiminde, boş olabilir

19. En son ne zaman görüştüm = tarih, boş olabilir

20. Son güncelleme tarihi = tarih, boş olamaz

Alan listesini tamamladıktan sonra bu alanlar, bir tabloda mı toplanmalı, birden fazla tabloya mı bölünmeli sorusuna cevap verin. Yukarıdaki örnekte iki noktadaki aksaklığı görmüş olmalısınız. Birinci aksaklık çocuklarla, ikinci aksaklık telefon numaralarıyla ilgili.

Önce birinci sorunu ele alalım. Beş çocuklu bir dostunuzun beşinci çocuğu bu listeye yazılamaz. O halde buradaki 16 alan en azından iki tabloya bölünmeli; çocuklara ilişkin olan alanlar dışındaki bütün alanlar “Aileler” tablosunda toplanmalı, bütün çocuklar “Çocuklar” adlı tabloda yer almalıdır. Çocuklar tablosunun alanları ise şöyle olabilir:

1. Sıra no = otomatik sayı

2. Çocuğun adı = metin, 20  karakter boyutunda, boş olamaz

3. Çocuğun ailesi kimliği = metin, 20 karakter, boş olamaz

Şimdi burada başka bir sorun var: çocuğun aile kimliği, babasının veya annesinin soyadı olacaksa ve aynı soyadı taşıyan iki dostumuz varsa, çocuğun kime ait olduğunu bilemeyiz. Aslında bu sorun, ortaya başka bir sorun daha çıkartıyor: diyelim ki aynı adda iki dostumuz var; ikisinin de eş ve çocuk durumu ile adreslerini ve telefon numaralarına ilişkin elimizdeki bilgilerin aynı olduğunu (mesela bu bilgiler elimizde yok ve dolayısılya bu sütunlar boş!) varsayalım. Bu iki kişiyi listeye “benzersiz kayıt” olarak nasıl kaydedebiliriz? Otomatik sıra numarasını birincil anahtar yaparak! Her aileye ait kaydın benzersiz olmasını sağlayan otomatik sıra numarasını aile tablosunda birincil anahtar yaparsak, daha sonra çocuk tabllosuyla ilişki sağlayan anahtar olarak kullanabiliriz.

Şimdilik bu tabloların oluşturulacağı üzerinde durmayalım. Burada sadece kavramsal olarak çocuklarla aileleri arasında bağ kurmaya çalışıyoruz. Aileler tablosunda “Aile Sıra No” adlı bir sütun açar ve bu sütunu Access’e Otomatik Sayı alanı olarak otomatik şekilde doldurtabiliriz. Sonra, çocukları kaydettiğimiz tabloda, her çocuğun ailesini, aile tablosundaki Aile Sıra No bilgisini tekrar ederek belirtebiliriz. (Nasıl’ın üzerinde durmuyoruz!) Diyelim ki Masum Sayan adlı iki arkadaşımızın ikişer çocuğu var. 5 numaralı aileye mensup Masum Sayan ile 6 numaralı aile mensup Masum Sayan’ın çocukları da aynı Aile Sıra No’sunu aldıkları anda, gereksiz bilgi içeren veya bilgi kaybına yol açan bir tablo tasarımından kurtulmuş, yani Aile tablosunda “çocuk 1,” “çocuk 2,”.. “çocuk x” şeklinde kimi ailede boş kalacak, kimi ailede yetmeyecek sütunlar açmamış oluruz.

Yukarıda muhtemel alanlarımızın listesini döktüğümüzde, iki sorunla karşılaştığımızı söylemiştik. Birinci sorun çocuklarla ilgiliydi. Onu çözdük. Fakat aynı durum, telefon numaraları için de var. Birden fazla ev, iş, faks veya cep telefonu olanlara ilişkin tüm telefon numaralarını tablomuza işleyebilmek için mutlaka çocuk tablosunu eklediğimiz gibi, veritabanımıza ideal olarak dört ayrı telefon numaraları tablosu (ev, iş, faks ve cep telefonları tabloları) ekleyip, bunlara da Aile Sıra No sütunu açıp, her telefon numarası ile telefonun sahibini ilişkilendirebiliriz.