1- VERİTABANI TASARIMI VE TANIMI

 

Oluşturulan kısa yol üzerinde mouse’un sol tuşu ile çift tıklatılarak program çalıştırılır. Daha öncede bahsedildiği gibi prowin32.exe sonuna yazılan “–p _desk.p” ifadesi ile kısa yol çalıştırıldığında Progress desktop penceresi ekrana gelir.

 

 

 

 

 

 

Progress Desktop penceresinde yer alan 6 simgeden, üçünü açıklayalım, bu simgelere tools menüsünden de ulaşmak mümkündür.

 

Data Dictionary:

 

Veritabanımızın tasarımını ve tanımının yapılacağı simgedir (veritabanının yapısına buradan bakılabilir).  Burada yapılabilen işlemler; yeni veritabanı (database) yaratma, tablolar (tables) oluşturma, bilgi alanları (fields) oluşturma ve tablolara indexler oluşturma işlemleri yapılabilmektedir.

 

 

 

 

 

 

 

 

 

 

Data Dictionary butonuna basıldığı anda, ekrana gelen “Dictionary Startup” penceresinde;  varolan veritabanına bağlantı (Connect to an Existing Database), yeni bir veritabanı yaratma (Create a New Database) ve  hiçbir veritabanını seçmeden devam (Continue with No Database) seçenekleri sunulur, burada yeni bir veritabanı yaratma (Create a New Database) seçimi yapılarak “OK” butonuna basılır.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Create Database penceresinde veritabanının ismi “ogrenci” olarak girilir,

Start with:

An Empty Database                 : Boş veritabanı.

A copy of the Sports Dat.        : Spor veritabanının kopyasını oluşturur.

A copy of Some Other Dat.: Diğer veritabanı (isim verebileceğiniz) seçilerek kopyasını oluşturur.

Burada boş veritabanı seçilerek “Ok” butonuna basıldığında ogrenci veritabanı oluşturulmuştur.

 

Oluşturulan “ogrenci” veritabanına o anda bağlanılması için “Connect Database” ekranında “Ok” tuşuna basılarak bağlantı kurulur.

 

 

Bağlantı kurulduktan sonra Data Dictionary penceresi gelecektir.

 

Burada şimdilik iki liste yer almaktadır. Birincisi veritabanlarının, diğeri tabloların listesidir (Data Dictionary başlıklı pencere).

 

O zaman yeni bir kavram daha ortaya çıkmaktadır o da tablo kavramıdır. Veritabanı en az bir tablodan oluşmalıdır. Dersimizin daha iyi anlaşılması için, fakültenin öğrenci işleri ile açıklayalım;

 

Öğrenci İşleri’nde

 

Öğrencilerin özlük bilgileri        (ozluk)

Numarası, adı, soyadı, doğum tarihi, sınıfı gibi bilgiler

 

Okutulacak ders bilgileri (ders)

Dersin kodu, adı, kredisi, dersi veren öğretim elemanı

 

Öğrencilerin, okutulan derslerden seçmiş olduğu ders bilgileri (notlar)

Öğrencinin numarası, dersin kodu, dönemi, şubesi, vize, final, basari notu gibi bilgiler tutulmalıdır.

 

Bilgi tutulması için 3 tane yapı oluşturulmuştur. Bu yapılara tablo denilmektedir. 3 tablo yerine tek tabloda da bilgiler tutulabilirdi. Fakat bilgi tekrarının önlenmesi, bilgilere hızlı erişim gibi nedenlerden dolayı birkaç tablo yapısı tercih edilmelidir. Tek tablo olsa idi şöyle bir yapı olmalıydı;

                                                          

Numara

Adı

Soyadı

D.Kodu

D.adı     

Vize

final

91050099

Yahya

Demircan

A308

Progress 8.A

30

60

91050099

Yahya

Demircan

A211

G.Astronomi

50

70

92050002

Banu

Demirel

A308

Progress 8

45

80

92050002

Banu

Demirel

A211

G.Ast.

50

90

92050002

Banu

Demirel

A308

Progress

40

80

93050005

Muhittin

Altınkaya

A308

Progress 8.

50

80

 

Bu tabloya bakılırsa, aynı dersi alan öğrenciler için ders isimleri tekrar tekrar girilmiş, ders isimleri farklı girilmiş, bir öğrenci 20 ders alacaksa her defasında öğrencinin adı soyadı bilgileri girilmek zorunda kalınmıştır, bu bilgiler yanlış girilmiş ve bilgiler tekrar edilmiştir.

 

Bunun yerine, mantık ölçüsünde en küçük tablolar halinde bilgiler tutulursa veritabanı mantığına uyulmuş olacak, kullanıcıların da  daha az iş ve daha doğru çalışılması sağlanacaktır.

 

Örnek Veritabanı yapısı:

 

Çok sayıdaki tabloların birbiriyle çalışması olayına ilişkili (bağlantılı) veritabanı  denilmektedir. İlişkili çalışabilmesi için tabloların ortak bilgi alanlarından oluşması gerekir. Oluşturacağımız tablolar;

 

 

Tablo: Ozluk

 

 

Bilgi Alanı Adı (Field Name )

Alan Tipi(Data Type)

Biçimi(Format)

Ogr_No

char

X(8)

Adi

char

X(15)

Soyadi

char

X(15)

Sinifi

inte

9

D_Tarihi

date

99/99/9999

Cinsiyeti

char

X(1)

Ilce_Kodu

char

X(4)

Harc_Kredi

logi

yes/no

Adres

char[3]

X(30)

 

 

 

Tablo :Ders

 

 

Bilgi Alanı Adı (Field Name )

Alan Tipi(Data Type)

Biçimi(Format)

Kodu

Char

X(6)

Ders_Adi

Char

X(30)

Kredi

Decimal-2

>9,9

Sicil_No

Char

X(5)

Donem

Char

9999-99/9

 

 

 

Tablo: Notlar

 

 

Bilgi Alanı Adı (Field Name )

Alan Tipi(Data Type)

Biçimi(Format)

Ogr_No                          

Char

X(8

Kodu                           

Char

X(6

Donem                          

Char

9999-99/9

Sube                           

Char

X(1)

Vize                           

Integer

>>9

Final                          

Integer

>>9

Basari                          

Integer

>>9

 

 

 

Tablo :Ilce

 

 

Bilgi Alanı Adı (Field Name )

Alan Tipi(Data Type)

Biçimi(Format)

Ilce_Kodu

Char

X(4)

Ilce_Adi

Char

X(25)

 

 

 

Tablo :Ogretmen

 

 

Bilgi Alanı Adı (Field Name )

Alan Tipi(Data Type)

Biçimi(Format)

Sicil_No

Char

X(5)

Ogretmen_Adi

Char

X(15)

Ogretmen_Soyadi

Char

X(15)

Unvan

Char

X(1)

 

Burada bilgi girilecek yerlere alan (field) denilmektedir, bilginin çeşidine alan tipi (data type), ne kadar yer ve nasıl girilmesi gerektiği ise biçimi (boyut) olarak tanımlanmaktadır.

 

Bu tablolara gerekli diğer alanlar da eklenebilir.

 

Alan tipleri : Character, integer, decimal, logical, date ve diğerlerdir.

 

Biçim (Boyut) ise bir alanın, character (klavyede yer alan bütün işaretler harf, sayı, simge), integer (sayı), decimal (ondalıklı sayı) gibi tiplerden oluşuyorsa o alana girilecek bilginin karakter sayısı ve giriliş biçimini gösterir.

 

 

Ozluk Tablosu

Ogr_no

Ilce_kodu

 

 

 

Ders Tablosu

Kodu

Donemi

Sicil_No

 

 

Notlar Tablosu

Ogr_no

Kodu

Donemi

 

 

Ilce Tablosu

Ilce_kodu

 

 

 

Ogretmen Tablosu

Sicil_No

 

Dikkat edilirse beş tablo da birbirleriyle aynı olan alanları içermektedir. Ozluk ile Notlar tabloları, öğrencinin numarası (ogr_no) ile bağlantılı, Ders ile Notlar tabloları da, dersin kodu ve donemi ile bağlantılı hale getirilmiştir. Ozluk tablosu, Ilce tablosuyla Ilce_kodu, Ders tablosu Ogretmen tablosunda Sicil_No bilgi alanıyla ilişkilendirilmiştir. Bağlantı kurulabilmesi için alan isimlerinin aynı ve içerdiği bilginin de aynı olması gerekmektedir. İçeriği aynı, fakat alan ismi farklı olduğu taktirde bağlantı kurmakta güçlük çekilmektedir. Aynı olduğunda Progress ilişkiyi otomatik kuruyor, farklı olduğunda bunu 4GL kodlarıyla ilişkilendirilmesi gerekmektedir.

 

Tablo Oluşturma:

 

Artık tablolar ve tabloları oluşturan alanların tanımlanmasına geçilebilir. Data Dictionary ekranında,

 

 

 

Butonlardan hangisi seçili ise (Tables seçili) ekranın altında yer alan (Create Table, Table Properties ve Delete Table) üç buton da yukarıda seçili simgelerle ilgili işleri yapar. Tablo butonu seçili olduğundan; Yeni Tablo (Create Table), Tablo özellikleri (Table Properties) ve Tablo sil (Delete Table)  butonları yer alır.

      

Burada yeni tablo butonuna basılmak suretiyle ozluk tablosunu oluşturmaya başlanırsa, karşınıza aşağıdaki ekran çıkacaktır.

 

 

 

Bu pencerede sadece Table Name alanına ozluk yazıp Ok butonuna basılırsa, tablo oluşturulmuş olur ve direkt aşağıdaki Bilgi Alanı oluşturma penceresi gelir. Bu pencereden hemen alanları tanımlamaya geçilebilir veya vazgeç (Cancel) tuşuna basılarak çıkılır. Şimdi vazgeç butonuna basarak alan oluşturma penceresinden çıkalım. Data Dictionary ekranında yer alan butonlara ilave olarak fields ve indexes butonları gelmektedir.

 

İndex

Oluşturma butonu

 

Bilgi Alanı (Field)

Oluşturma butonu

 

 

 

 

Alan Oluşturma:

 

Yukarıdaki pencerede “Field” butonuna basılırsa Data Dictionary penceresinde Create Field, Fields Properties ve Delete Field butonları yer alacaktır. Bu butonlardan Create Field butonuna basılırsa aşağıdaki Bilgi alanı oluşturma penceresi gelecektir.

 

 

Bu pencerede Ozluk tablosunun alanlarını oluşturmaya başlayalım. Yukarıdaki pencerede;

Field Name                  : Ogr_no

Data Type                   : Character

Format                        : x(8)

Label                            : Öğrenci No (daha sonra formlar da kullanılmak üzere)

Column label                : Öğrenci No (Listeleme, browse ekranlarında kullanma üzere)

 

alanlarını doldurup Create butonuna basarak, adi alanının tanımına geçilebilir veya Ok butonuyla (saklayıp) çıkılabilir. Tekrar alan oluşturmak için Create Field butonu kullanılır. Bu şekilde ozluk tablosunun bütün alanları tanımlanır. Aynı şekilde ders, notlar, ilce ve ogretmen tablolarının ve bu tablolara ait alanların tanımı yapılabilir.

Veritabanında bilgiye hızlı erişebilmek için verilerin sıralı olması gerekir. Bu sıralama da veritabanını indeksleyerek sağlanır. İlişkili veritabanında mutlaka verilerin index’li olması gerekir.

 

İndeks oluşturma

 

İndex, Data Dictionary penceresinde yer alan “indexes” butonuna basarak oluşturulur.  Bu butona basıldığı anda Data Dictionary penceresi aşağıdaki şekilde görüntülenir.

 

 

Bu pencerede üç tane liste görüntülenir. Veritabanları (Databases) listesi, tablolar (Tables)  listesi ve indeksler (Indexes) listesi yer alır. Burada indexler listesinde varsayılan (default) olarak (varsayılan indeksi olarak) bir indeks yer alır, bu default indeks her tabloda oluşturulan kayıtlar “Kayıt sırasında”  kayıt numaralarına göre sıralı ve her kayıt numarasına göre kayıtlar birer tanedir.

 

Önce hangi tabloya index oluşturulacaksa tablolar listesinden o tablo seçilir. İndex yarat (Create İndex) butonuna basılır ve aşağıdaki pencere ekrana gelir. Öncelikle Ozluk tablosunu seçerek indeks yarat butonuna basılsın,

 

 

Bu pencerede;

Index_Name                           :Oluşturulacak indekse bir isim verilir,

Primary                                   :Birincil indeks demektir (bir tabloda bir

 tane olabilir)

Active                                     :İndeksin devamlı açık olması

Unique                                    :Seçilen alanları içeren bilginin tek olması

Ascending/Descending             :Artan veya azalan sırada olacağını ifade

 eder.

 

Sıralamamızı öğrencinin numarasına göre yapacağımıza göre soldaki listeden ogr_no üzerine çift tıklayarak veya “Add>>” butonuna basarak sağdaki listeye taşınır. Öğrenci numarası her öğrenci için tek olduğundan Unique işaretlenir, (uygulamanın kullanılmasıda aynı numaraya ait bir öğrenci eklenmeye çalışıldığında Progress otomatik olarak uyarır, bu numaraya ait başka kayıt var mesajını İngilizce verecektir). Ok butonuna basarak ozluk tablosunun indeksi oluşturulmuş olacaktır.

 

Ders tablosunda da kodu ve donemi bilgi alanlarına göre (Primary, unique, active) indeks oluşturulur.

 

Notlar tablosuna da ogr_no, kodu ve donemi sağ tarafa taşınmalı ve indeks (Primary, unique, active) oluşturulmalıdır. Burada numarası, kodu ve donemi aynı olan kayıt olmamalıdır.

 

Bunu örnekle açıklayalım;

 

91050099 nolu öğrenci 1999-00/2 döneminde A308 dersini bir kez alabilir, aşağıda iki kez almış görünüyor,

 

Ogr_No           Kodu   Donemi

91050099        A308   1999-00/2

91050099        A308   1999-00/2

92050002        A308   1999-00/2

 

İndeks tanımına göre numarası, kodu ve dönemi aynı olan iki kayıt olamaz, burada ilk iki kayıt aynı, indeks oluşturulurken unique işaretlenirse aynı olan kayıtlar veritabanına kaydedilemez, ama işaretlenmezse benzeri iki kaydın olması muhtemeldir.

 

Ogretmen tablosu Sicil_No alanına göre (Primary, unique), ılce tablosu da Ilce_kodu'na göre (Primary, unique) olacak şekilde indekslenmelidir.

 

Tablolar arasında ilişki  kurulabilmesi için tabloların aynı alanlara göre indeksli olması yararlı olacak ve hızlı erişim sağlayacaktır.

 

Buraya kadar yapılanlar bir veritabanı oluşturma, veritabanına ait tabloları, bilgi alanlarını ve indeksleri oluşturma aşamasıydı. Bu işlemler bir kez yapıldı ve artık oluşturulan veritabanına bilgilerin girilmesi işlemleri kalmıştır.

 

Progress de veri girişi, güncelleme ve veri silme işlemleri için Veri İşleme Bölümüne bakınız.

 

 

    Sonraki Sayfa