ACCESS VERİTABANI OLUŞTURMA Bülent Ecevit Üniversitesi, Geomatik Mühendisliği, Veri Tabanı Yönetim Sistemleri Dersi Veri Tabanı Planlama ve Tasarlama Hazırlayacağınız veri tabanını kimler kullanacaksa onlarla konuşunuz. Veri tabanının hangi raporları oluşturmasını istiyorsanız taslağını çiziniz. Veri tabanında verilerinizi kaydetmek için kullandığınız formları bir araya getiriniz. MS Access’te Tabloları, sorguları ve diğer nesneleri oluşturmadan önce tasarımınızı kâğıt üzerindeoluşturmak ve üzerinde çalışmak iyi bir fikirdir. Ayrıca tasarlamakta olduğunuz veri tabanına benzeyen ve tasarlanmış tabanlarını inceleyebilirsiniz. iyi veri da Veri tabanınızda gerek duyduğunuz alanları belirlemektir. Veri tabanında her alan belirli bir konuyla ilgili bir olguyu içerir. Örneğin, ürünlerinizle ilgili hangi olguları Ayrıca oluşturacağınız veri tabanında ana nesne olan tabloları belirlemelisiniz. Her tablo birkonu hakkında bilgi içermelidir. Daha önce belirlediğiniz olgulardan yararlanarak alan listenizi bulundurmak istersiniz? Düşünün: Ürünün adı, üretim tarihi, üretim yeri, içindekiler ve son oluşturunuz. Bu liste ihtiyaç duyduğunuz tablolara ilişkin ipuçları sağlar kullanma tarihi. Belirlediğiniz bu olguların her biri için ayrı ayrı alan oluşturmanız gerekecektir. VERİ TÜRLERİ AÇIKLAMA Metin Alfabetik ve sayısal türde her türlü bilgi veya işlem gerektirmeyen bilgilerin girilebildiği alan türüdür. Bu alan maksimum 255 karakter bilgi alır. Not Bir tablo alanı için metin türünün uzunluğu yetmiyorsa not türü seçilebilir. Bu tür alanlara 65535 karaktere kadar bilgi girilebilir. Sayı Üzerinde işlem yapılabilecek sayısal verilerin girilebileceği alan türüdür. Alan boyutunu belirlerken aşağıdaki boyut türleri seçilebilir Tarih/Saat Tarih ve saat türündeki bilgilerin girilmesi için kullanılır. Para Birimi Parasal değerler için tanımlanır. Bu alanda 15 basamak tamsayı, virgülden sonra da 4 basamak bilgi tutulabilir. Otomatik Sayı Bu bilgi alandaki sayı değeri girilen her yeni kaydın numarası otomatik olarak tutulur. Evet/Hayır Bu bilgi alanı iki sonuçlu bilgiler için kullanılır. Evet/Hayır, Açık/Kapalı, Doğru/Yanlış gibi veriler tutulur. Köprü İnternet adresi gibi bir yere bağlantı kurmak için bu veri türü kullanılır. Bu alana girilen veriye tıklanırsa yazılı olan İnternet adresine bağlantı kurulur. OLE Nesnesi Resim, ses, film gibi nesnelerin veri tabanına eklenmesini sağlar. Tablo ve Alan Özelliklerini Tanımlama İlişki Türleri • 1’e 1, 1’den çoğa(1-n), çoktan çoğa(n-m). • 1’e 1 • Bilet otomasyonu, tiyatro için bilet satılıyor ve her bileti yani koltuğu yalnızca bir kişi satın alabiliyor. Elimizde iki tane tablo bulunsun bunlardan biri müşteri tablosu ikincisi ise bilet tablosu. Bu iki tablo arasındaki ilişki birebir olur. Çünkü ? her müşteri yalnızca bir bilet satın alabiliyor ve her bilet yalnızca bir kişiye ait olabiliyor. Peki ilişkiyi kurarken hangi tabloya ekleme yapacağız? Müşteri tablosu mu Bilet tablosu mu? Eğer bilet tablosuna müşteri id’sini eklersem bu durum da satılmayan biletler için bu bölüm null(boş) değerini alacaktır. Ancak bu bizim istediğimiz bir durum değil. Onun yerine müşteri tablosuna bilet id’sini eklersek her eklenen müşteri bir bilet satın almış olacağı için herhangi bir null değeri söz konusu değildir. • 1’den çoğa(1-n) En fazla rastalanan ilişki türüdür. Bir dershanede öğrenciler ve bu öğrencilere danışmanlık yapan öğretmenleri tutan iki adet tablomuz olsun. Bu iki tablo arasında kurulan ilişki 1’e n ilişki olur. Çünkü ? bir öğretmen birden fazla öğrenciye danışman olabiliyor ancak bir öğrenci en fazla bir öğretmenden danışmanlık alabiliyor. Hangi tabloya ekleme yaparak ilişkiyi kuracağız? Öğretmen tablosunu ele alalım. Eğer bu tabloya öğrenci id’lerini eklemeye başlarsak her öğrenci için o öğretmen tablosuna tekrar tekrar aynı öğretmenin verisini girmiş olacağız. Veri tekrarı en son isteyeceğimiz olaydır. Bu yüzden öğretmen id’lerini öğrenci tablosunda tutmalıyız. • çoktan çoğa(n-m) • İki tabloda birden fazla bağa sahiptir. Bu yüzden iki tablo bu ilişkiyi açıklamak için yeterli olmaz. Bir üniversitede ders seçimi yapan öğrenciler ile seçilen derslerin kayıtlarının tutulduğunu düşünelim. Bu durumda elimizde iki adet tablo bulunmaktadır: Öğrenci ve dersler. Bir öğrenci birden fazla ders seçebilirken, bir derste birden fazla öğrenci tarafından seçilebilmektedir. Bu durumda aralarında çoktan çoğa bir ilişki oluşmaktadır. Bu durumu tablolaştırırken ? • Bir üçüncü tabloya daha ihtiyacımız olmaktadır. Üçüncü tablo seçim tablosu olacak ve burada ders ile öğrencinin id’leri tutulacaktır. SQL (Structed Query Language) • İlişkisel Veritabanı Yönetim Sistemleri (Relational Database Management SystemsRDBMS) modeli ilk önce 1970 yılında Dr. E.F. Codd tarafından tarif edilmiştir. SQL veya Structured English Query Language (SEQUEL), IBM firması tarafından Codd’un modelini kullanmak için geliştirilmiştir. SEQUEL daha sonra SQL olmuştur. 1979 yılında, Relational Software (günümüzde Oracle Corporation), SQL’in ilk ticari uygulamasını geliştirmiştir. Bugün SQL, ilişkisel veritabanı yönetim sistemleri standardı olarak kabul edilmektedir. • SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir (sub language). SQL ile yalnızca veri tabanı üzerinde işlem yapabiliriz. SQL cümlecikleri kullanarak veri tabanına kayıt ekleyebilir, olan kayıtları değiĢtirebilir silebilir ve bu kayıtlardan listeler oluşturabiliriz. • Veritabanı içindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir. SQL Deyimleri Verilere Erişmek (SELECT) • Veritabanındaki verilere erişmenin, diğer bir deyişle onları görmenin en sık kullanılan yöntemidir. • Veritabanımızdaki hangi tablo yada tablolardaki alanları (bilgileri) görmek istiyorsak SQL cümlemizin başında mutlaka SELECT deyimi yer almalıdır. • Bu komut ile veritabanı üzerindeki tablonun hangi kolonları alacağımız veritabanına söyleriz. Tablonun bütün kolonlarını görmek istiyorsak '*' karakterini kullanırız. Sadece belli kolonları görmek istiyorsak kolon isimlerini aralarına virgül koyarak yan yana yazmalıyız. SELECT Alan_Adı FROM Tablo_adı; SELECT * FROM personel; SELECT * FROM meslekler FROM • Bu komut bütün SQL cümleciklerinde bulunması gerekli bir komuttur. Bu komut ile hangi tablolar üzerinde çalışacağımızı veri tabanına söylüyoruz. Eğer aynı sql cümleciği ile bir kaç tablo üzerinde işlem yapmak istersek tablo isimleri arasına virgül koymalıyız. • SELECT * FROM personel; ? Personel tablosundaki bütün kayıtları seç(göster). WHERE Gerçek hayat'ta bu kayıtların sadece bir kısmına ihtiyaç duyarız. Bize gerekli olan dataları diğerlerinden ayıran bazı özellikleri vardır. İşte bu özellikleri Where komutu yardımı ile kullanarak gerekli datalara ulaşabiliriz. Where komutu ile select sorgu cümleciğimize şart ifadesi eklemiş oluyoruz. Yaşı 40'dan büyük personeli listeleme istersek; SELECT * FROM personel WHERE Dogum_tarihi < ‘23.10.1976' BETWEEN (ARASINDA) Aralıklı sorgulama yapmak istersek kullanabileceğimiz bir operatördür. Öğrenci numarası 240 ile 400 arasında olan öğrenciler kimlerdir? SELECT * FROM öğrenciler WHERE öğrenci_no> =240 AND öğrenci_no < = 400; • BETWEEN komutu ile daha kısa olacaktır. SELECT * FROM öğrenciler WHERE öğrenci_no BETWEEN 240 AND 400; LIKE • İçinde belli bir karakter dizisi bulunan datalara (verilere) ulaşmak istersek kullanabileceğimiz bir operatördür. SELECT * FROM personel WHERE adres LIKE '%İstanbul%' Bu sorgulama ile adres alanında İstanbul geçen kayıtları listelemiş oluruz. SELECT * FROM personel WHERE adres LIKE '%İstanbul' Bu sorgulama ile adres alanının sonunda İstanbul geçen kayıtları listelemiş oluruz. SELECT * FROM personel WHERE adres LIKE ‘İstanbul%' Bu sorgulama ile adres alanının başında İstanbul geçen kayıtları listelemiş oluruz MAX Tablo içinde, verilen kolondaki en büyük değeri geri döndürür. Genel yazım biçimi aşağıdaki gibidir; Select MAX(kolon_adı) FROM tablo; En fazla aylık ücret alan personel ne kadar maaş alıyor? Select MAX(aylik_ucret) From ucretler; Okul içerisinde en fazla devamsızlığı bulunan öğrenciyi görmek istersek; SELECT MAX (devamsızlık) FROM öğrenciler; MIN Tablo içinde, verilen kolondaki en küçük değeri geri döndürür. Genel yazım biçimi aşağıdaki gibidir; Select MIN(kolon_adı) FROM tablo; En düşük aylık ücret alan personel ne kadar maaş alıyor ? Select MIN(aylik_ucret) From ucretler; SUM (TOPLA) Verilen kolondaki bütün değerleri toplayarak geri döndürür. Genel yazım biçimi aşağıdaki gibidir; Select SUM(kolon_adı) FROM tablo; Personele ödenen toplam ücret nedir ? Select SUM(aylik_ucret) From ucretler; AVG (ORTALAMA) Verilen kolondaki değerlerin aritmetiksel ortalamasını geri döndürür. Genel yazım biçimi aşağıdaki gibidir; Select AVG(kolon_adı) FROM tablo; Aylık ödenen ücret ortalamasını bulmak istersek ; Select AVG(aylik_ucret) From ucretler;