You are on page 1of 72

AHMET YESEVİ ÜNİVERSİTESİ

BİLGİSAYAR MÜHENDİSLİĞİ
YÜKSEK LİSANS PROGRAMI

DÖNEM PROJESİ
TBİL-TYBS-TİŞL-699

Linux+Oracle veritabanında bir üniversite not otomasyon sisteminin


web arayüzü ile birlikte hazırlanması

Hazırlayan
Kenan ÇETİNKAYA (0773G048)
Kenan.cetinkaya@sdu.edu.kz
ALMATI

Danışman

Prof.Dr. Fahrettin ARSLAN

ŞUBAT 2009
İÇİNDEKİLER

1-Suse Linux Enterprise Server 10 SP2 ( SLES 10SP2 )Kurulumu

1.1-Linux Server Sistem Gereksinimleri

1.2 -SLES SP2 Kurulumu

1.3 – Ağ Ayarları

2-Oracle 11gR1 Kurulumu

2.1- Oracle 11gR1 Sistem Gereksinimleri

2.2 – Sistem Ayar Parametreleri

2.3- Oracle dizini oluşturma

2.4- Oracle kurulu için gerekli rpm paketlerinin kurulması.

2.5 – Kurulumu Başlatma

3 -Yeni bir Veritabani Açılması

4- SQLDeveloper Programının Kurulumu ve Veritabanı Yönetimi

4.1-SQL Developer Kurulumu ve Çalıştırılması

4.2 - Tablolar ve Alanların Belirlenmesi

4.3 – Tabloların Oluşturulması

4.4 – Trigger Oluşturulması

4.5 – Fonksiyonların Oluşturulması

4.6 – Views Oluşturulması

5-Web Server Kurulumu

5.1-Oracle win32_11gR1_client Kurulumu

5.2-Oracle win32_11gR1_client Ayarları

5.3- ASP Runner 6.0 Kurulumu

5.4 – Windows 2003 Server'da IIS (Internet Information Server)kurulumu

5.5-ASPRunner 6.0 ile Web Arayüzü Oluşturma

5.6 - Web Sayfasına Erişim


ÖZET

Bu projede, Linux üzerine Oracle veritabanı kurup, basit bir üniversite not otomasyon veritabanı hazırlayıp bu
veritabanına en hızlı ve kullanışlı bir web arayüzü ile interet yada intranet ortamında kullanıma sunmayı hedeflemiş
bulunmaktayım.

Bana gore en sağlam server+veritabanı ikilisi Suse Linux Enterprise Server 10sp2 üzerine kurulan Oracle11gR1 veri
tabanı.

Projemde Suse Linux Enterprise Server 10sp2 kurulumu ve gerekli olan bütün ayarlamalarla birlikte Oracle11gR1
kurulumu ve universite veri tabanı objelerinin eklenmesine, veri tabanını web sitesine dönüştüren ASPRunner 6.0
programının kullanımına kadar pek çok ayrıntılı bilgi verilmiştir.

Bu projede 2 bilgisayar kullanılmıştır.

1-Suse Linux Enterprise Server 10SP2 : (IP adresi : 192.168.0.1) Veritabanı için kullanılmıştır.

2-Windows Server 2003 :(IP Adresi : 192.168.0.4) Bu bilgisayarda ASP Runner 6.0 kurulmuş ve veritabanına bağlı
web sayfaları oluşturularak IIS(Internet Information Services) de yayınlanması sağlanmış yani web server olarak
kullanılmıştır.

Üniversite not otomasyon sistemi veri tabanı aşağıdaki şekilde görülen tablolardan, sorgulardan,trigger ve
fonksiyonlardan oluşmaktadır.

Başlangıç itibariyle Faculties, Departmens, Grade_tables,Timeline,


Authority tablolarına bilgiler girilir.

Daha sonra her dönem başında Users, Students, Employees,


Classes,Courses tablolarına bilgiler girilir.

Yukarıdaki bilgilerin girişi bittikten sonar Advisor ve Register_class


tablolarına danışman hocalar ve öğrencilerin devam edecekleri sınıflar
girilir.

Bu hazırlıklar tamamlandıktan sonar Register_course tablosuna


hocaların hangi sınıflara ve hangi dersi verdikleri eklenir.Bu eklemeler
yapılırken bu tabloya bağlı trigger sınıflardaki öğrenciler ile bu ders ve
hocaları çaprazlayarak Register_Grade tablosuna ekler.

Bu şekilde Register_grade tablosu öğretmenler tarafından ders


notlarının girişine hazır hale gelir.

Bütüm bu işlemler web sayfası aracılığı ile yetkilendirilen dekan, dekan sekreteri ve hocalar tarafından girilir.Her bir
işlem için TIMELINE tablosunda bir zaman aralığı belirlenmiştir sadece o aralıkta bu işlemler gerçekleştirilir. Not
giriş tarihi geçtikten sonra web arayüzünden yada veritabanından DML komutlarıyla dahi olsa veri girişi yapılamaz.
1-Suse Linux Enterprise Server 10 SP2 ( SLES 10SP2 )Kurulumu

SLES 10SP2'yi kurabillmek için http://www.novell.com/products/server/eval.html adresinden iso uzantılı olarak


bilgisayarımıza indirip bir DVD ye yazmamız gerekiyor.

1.1-Linux Server Sistem Gereksinimleri

Minimum Linux server system requirements for installation


• Lokal kurulum : 512 MB RAM, SSH-based network
• Grafik Arayüzlü : 512 MB RAM, VNC-based network
• FTP ile kurulum : 512 MB RAM

Minimum Linux server sistem gereksinimleri


• 512 MB RAM
• 750 MB hard disk ,harici programlar için
• 750 MB hard disk ,kullanıcı bilgileri için

Tavsiye edilen Linux server sistem gereksinimleri


• At least 512 MB RAM for Xen virtual host server
• At least additional 256 MB RAM per Xen virtual machine

Desteklenen işlemci platformları


• AMD64
• IBM POWER
• IBM System z (64-bit)
• Intel 64
• Itanium Processor Family (Itanium II veya daha yenisi)
• x86

1.2 -SLES SP2 Kurulumu

1.2.1-Hazırlamış olduğumuz SLES SP2 DVD yada CD' sini sürücüye yerleştirerek bilgisayarımızın CD sürücüden
açılmasını sağlıyoruz. Şekil-2'deki ekran görüntüsünde görüldüğü gibi “installatıon” seçeneğini seçerek Enter tuşuna
basıyoruz.
1.2.2-Şekil-3'de görüldüğü gibi “Start Installation and System” seçeneğini seçerek OK butonuna basıyoruz.
1.2.3- Dil seçeneğinden istediğimiz dili seçiyoruz(Şekil-4)

1.2.4- “Yes,I agree to licence Aggreement” seçeneğini seçerek “yes” butonuna basıyoruz.
1.2.5 – “New Installation” seçeneğini seçerel “Next” butonuna basıyoruz.

1.2.6- Yerel saat ayarlarını yapıyoruz.


1.2.7- Gerekli paketleri seçiyoruz

1.2.8-Accept butonuna basarak “User Licence Aggrement” ı kabul ediyoruz


1.2.9- Temel kurulum işlemleri bitmiştir. Şimdi OK butonuna basıyoruz.Bilgisayarımız kapanıp yeniden açılıyor.

1.2.10- Açılış menüsünden Suse Linux Enterprise Server 10 SP2 seçeneğini seçiyoruz.
1.2.11- Donanım tanma işlemleri devam ediyor.

1.2.12- root şifresi belirliyoruz.


Hatırlatma : Linux ortamında program kurulumlarında mutlaka root şifresi sorulmaktadır.Grafik ortamda root ile
oturum açmaya izin verilmez, standard kullanıcı hesapları ile oturum başlatılır, sistem ayarları yada program
kurulumunda root şifresi girilir.

1.2.13- Bilgisayarımıza isim veriyoruz ve hangi domain altında çalışacaksa onu tanımlıyoruz.
1.2.14- Firewall altında bulunan SSH servisini açıyoruz ve “Next” butonuna basarak devam ediyoruz.

1.2.15-Ağda paylaşılan bir internet bağlantısı varsa bağlantının bu bilgisayarda çalışıp çalışmadığını test edebilirsiniz.
1.2.16-Bilgisayarımız Domain altında çalışacaksa Windows domain, LDAP yada NIS seçeneklerinden kullandığınız
domain türüne göre biri seçilir.

Örneğimizde Lokal olarak seçiyoruz.

1.2.17 – Lokal bir kullanıcı için hesap açıyoruz. “Automatic Login” seçeneği ile bilgisayarımıza şifre gitrmeden bu
kullanıcı ile açılmasını sağlıyoruz.
1.2.18-Kurulum işlemlerini tamamlıyoruz ve bilgisayarımız kapanıp açılıyor. Suse Linux Enterprise Server kurulmuş
ve ilk oturumumuz açılmış oldu.
1.3 – Ağ Ayarları

Bilgisayarımızda bulunduğumuz ağdaki IP adreslerine uygun bir IP adresi vermemiz gerekiyor.Örneğimizde


192.168.0.4 olarak bir IP adresi vereceğiz.

Ekranımız sol alt tarafında bulunan Computer ikonuna tıkladığımızda açılan menüden YAST ikonuna tıklıyoruz.

Root şifresini girdikten sonra açılan Yast Control Center'dan Software menüsü içinden
2-Oracle 11gR1 Kurulumu
Oracle web sitesinden Linux için Oracle 11gR1 programını bilgisayarımıza indirioruz.

2.1- Oracle 11gR1 Sistem Gereksinimleri

Oracle 10gR1 PC Minimum Donanım Gereksinimleri

• Physical memory (RAM) : 512 MB


• Virtual memory : RAM miktarının 2 katı
• Temp disk space : 1.5 GB
• Video adapter 256 colors
• CPU Processor : 200 MHz minimum

Oracle 10g Minimum Sistem Gereksinimleri

Mimari : 32 bit veya 64 bit


Network Protocol : TCP/IP, TCP/IP with SSL, Named Pipes

2.1.1-Kurulum Ön Hazırlıkları

2.1.1.1 - Masa üstüne sağ tıklayarak, open terminal 'ı seçip aşağıdaki komutlar ile “oracle” adiyla yeni bir kullanıcı ve
“dba” adıyla bir grup oluşturuyoruz.

Oracle kullanıcı hesabımızla oturumu başlatabilmemiz için

Computer/Yast/Security and Users/User Management'dan oracle kullanıcısını seçerek edit butonuna basıyoruz.
Karşımıza çıkan pencerede “Disable User Login” seçeneğindeki sekmeyi kaldırıp Accept butonuna basarak
kulanıcımıza oturum açma iznini vermiş oluyoruz.

2.1.1.2 – Sistem Ayar Parametreleri

Aşağıdaki satırları /etc/sysctl.conf dosyasına ekliyoruz. Ekleme işlemi bittikten sonra dosyayı kaydedip çıkıyoruz ve
Terminal console'da sysctl -p komutunu çalıştırıyoruz ve ayarlarımız aktif olmuş oluyor.

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6553600
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

/etc/pam.d/login dosyasına aşağıdaki satırı ekliyoruz.

session required pam_limits.so

/etc/security/limits.conf dosyasına aşağıdaki satırları ekliyoruz.

oracle soft nproc 2047


oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2.1.1.3- Oracle dizini oluşturma

2.1.1.4- Oracle kurulu için gerekli rpm paketlerinin kurulması.

• unixODBC-devel-2.2.11
• sysstat-6.0.2

Ekranımızın sol alt köşesindeki Computer butonuna bastığımızda açılan menüden YAST/Software/Software
Management linkine tıklıyoruz ve yukarıdaki paketleri kuruyoruz.
2.1.1.5 – Kurulumu Başlatma

Mevcut oturumumuzu kapatıp “oracle” adlı kullanıcıyla yeni bir oturum açıyoruz.

Linux_11gR1_database_1013.zip dosyasina tiklarak Archive Manager ile masaüsüne Extract komutuyla açıyoruz.
Masaüstüne “database” adlı dizinine açılır.

Terminal Console'u açıyoruz ve aşağıda görüldüğü gibi kurulum işlemini başlatıyoruz.

Global Database adımız :mysdu (Şekil-)

Database Şifremiz, veriyoruz.


3 -Yeni bir Veritabani Açılması
Database kontrol paneline web tarayıcı ile bağlanıp veritabanı kullanıcıs oluşturacağız ve gerekli hakları
tanmlayacağız.

Veritabanı Kullanıcı adımız “MyUniversity” ve şifremizi girerek tanımlıyoruz.

Veritabanımızın yüklü olduğu bilgisayarda Firefox web tarayıcısını açıyoruz ve addres kısmına

https://localhost:115//em yazarak Veritabani Web Kontrol Panelini açıyoruz. System ve şifresini yazarak
bağlanıyoruz.
4- SQLDeveloper Programının Kurulumu ve Veritabanı Yönetimi
Veritabanı kurulumu bittikten sonra veritabanı üzerindeki çalışmalarımızı SQLDeveloper programı ile yapacağız.

Database üzerinde çalışacağımız platform linux yada windows olabilir.SQLDeveloper programının windows ve Linux
versiyonları mevcuttur.Ben Linux (Mandriva 2009) ortamında veritabanını hazırlayacağım.

4.1-SQL Developer Kurulumu ve Çalıştırılması

Oracle sitesinden indirdiğim sqldeveloper-1.5.54.40-1.noarch.rpm dosyasına sağ tıklayarak install software ile
çalıştırıyorum. Kurulum işlemi bittikten sonra console ile programı çalıştırıyourm.
Şuanda kullandığımız bilgisayarın IP adresi 192.168.0.6, veritabanımızın bulunduğu biigisayarın IP adresi
192.168.0.4 dür.

Şimdi Connection üzerinde sağ tıklayarak yeni bir connectin açıp veritabanımıza bağlanacağız.

SID Name : Mysdu

Veritabanı IP addresi : 192.168.0.4

Port :1521

Connect butonuna bastığımızda veri tabanına bağlanmış olacağız.


4.1.2 - Tablolar ve Alanların Belirlenmesi

USERS

Kullanıcı Bilgilerinin tutulduğu tablodur. AUTHORITY_ID ile sisteme bağlanan kullanıcılara farklı yetkiler
verebilmek için konulmuştur.

Authorıty_id = -1 Yönetici

Authorıty_id = 1 Dekanlar

Authorıty_id = 5 Öğrenci

Authorıty_id = 6 Öğretmen

Authorıty_id = 8 Dekanlık Sekreterlei

Şekilnde tanımlanmıştır.
TIMELINE

Bu tabloda her işe bir vakit aralığı verilmiştir. Mesela öğretmenlerin not gireceği tarih TIMELINE da belirtiliyor.O
tarih geçtikten sonar web den yada database den DML komutlarıyla bile değişiklik yapılmasına izin verilmiyor.

STUDENT

Öğrenciler il eilgili tutulması istenen bilgiler bu tabloda tutulmaktadır.


REGISTER_GRADE

Bütün öğrencilerin aldıkları her ders için bir satır otomatik olarak bu tabloda açılmakta ve öğretmenler bu satırlarakı
not bölümüne not girebilmektedirler.

REGISTER_COURSE

Hocaların hangi sınıflara hangi dersleri verdiklerini bu tabloya giriyoruz.

REGISTER_CLASS

Her yıl başında yeni sınıf isimleri tanımlayıp o sınıfda hangi öğrencilerin okuyacağını belirtiyoruz.

GRADE_TABLES

Not sisteminde harflerin rakam değerleri tablosunu tanımlıyoruz.Mesela A = 4 , A- =3,67 vesaire


FACULTIES

Her bir fakülteye vermiş olduğumuz kodları ve adları giriyoruz.

EMPLOYEES

Üniversitede çalışan bütün personelin bilgilerinin tutulacağı tablodur.

DEPARTMENTS

Her fakültedeki bölümlerin kodları ve bilgileri tutulur.


CLASSES

Her dönem başında sınıf isimleri belirlenir ve bu tabloda saklanır.

COURSES

Her dönem başında açılan dersler , kodları ve kredileri şle birlikte bu tabloya girilir.

AUTHORITY

Yetkilendirme tablosu

ADVISORS
Her sınıf için Danışman hocaların belirtildiği tablodur.

4.1.3 – Tabloların Oluşturulması

Yukarıdaki tablo isimleri ve alan isimlerini tesbit ettikten sonra Veritabanımızda oluşturacağız.

Table linkine sağ tuş ile tıklayarak Create Table seçeneğini seçiyoruz ve aşağıdaki pencereyi kullanarak yukarıda
karar verdiğimiz tablo ve alanları tek tek oluşturuyoruz.
4.1.4 – Trigger Oluşturulması

Veritabanımızda bir tabloya bilgi giriş ve değişikliğinde, bu değişikliklerin diğer tablolara da istenen şekilde
yansıması veya tablolara DML komutları ile istenen zamanlarda değişiklik yapılmasını önlemek için trigger
kullanacağiz.

Örneğin yeni bir öğrenci STUDENT tablosuna eklendiğinde, bu tabloya bağlı trigger bu yeni öğrenci için USERS
tablosuna yeni bir kullanıcı ekleyecek ve rastgele bir şifre üreterek öğrencinin kullanıcı hesabı açılmış olacak.
EMPLOYEES tablosuna yeni bir öğretmen eklendiğinde de aynı durum söz konusu olacaktır.

Şimdi aşağıdaki şekilde görülen alanda trigger kodlarımızı yazarak oluşturacağız.

ADD_EMPLOYEE_TO_USERS

CREATE OR REPLACE TRIGGER "MYSDU"."ADD_EMPLOYEE_TO_USERS"

AFTER INSERT or UPDATE ON EMPLOYEES

FOR EACH ROW

BEGIN

--TimeTable e göre değişiklik kontrolu

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;
IF INSERTING THEN

INSERT INTO USERS(USER_ID, password, authority_ID)

VALUES(:NEW.EMPLOYEE_ID,DBMS_RANDOM.STRING('U',6),:NEW.AUTHORITY_ID);

END IF;

IF UPDATING THEN

UPDATE USERS SET authority_id=:NEW.AUTHORITY_ID WHERE

user_id=:NEW.EMPLOYEE_ID;

END IF;

END;

ADD_STUDENT_TO_USERS

CREATE OR REPLACE TRIGGER "MYSDU"."ADD_STUDENT_TO_USERS"

AFTER INSERT ON STUDENTS

FOR EACH ROW

BEGIN

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time');end if;

INSERT INTO USERS( user_id, password, authority_ID)


VALUES(:NEW.STUDENT_ID,DBMS_RANDOM.STRING('U',6),6);

END;

CONTROL_ADVISORS

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_ADVISORS"

BEFORE INSERT OR DELETE OR UPDATE ON ADVISORS

FOR EACH ROW

BEGIN

IF get_current_event not in(2,6) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time');end if;

IF INSERTING THEN
:NEW.SEMESTER:= get_term_number;

:NEW.YEARS:= GET_YEAR;

END IF;

END;

CONTROL_COURSES

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_COURSES"

BEFORE INSERT OR DELETE OR UPDATE ON courses

FOR EACH ROW

BEGIN

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time');end if;

END;

CONTROL_DEPARTMENT

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_DEPARTMENT"

BEFORE INSERT OR DELETE OR UPDATE ON DEPARTMENTS

FOR EACH ROW

BEGIN

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time');end if;

END;

CONTROL_EMPLOYEES

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_EMPLOYEES"

BEFORE INSERT OR DELETE OR UPDATE ON EMPLOYEES

FOR EACH ROW

BEGIN
IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make
changes during right time'); end if;

END;

CONTROL_REGISTER_CLASS

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_REGISTER_CLASS"

BEFORE INSERT OR UPDATE ON REGISTER_CLASS

FOR EACH ROW

BEGIN

IF get_current_event not in(2,6) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;

:NEW.SEMESTER:= calculate_semester(:new.student_id );

:NEW.YEARS:= get_year;

END;

CONTROL_REGISTER_COURSE

Yazmiş olduğum triggerlar içerisinde en can alıcı olanı CONTROL_REGISTER_COURSE olanıdır.

Öğrenciler sınıflara atandıktan sonra, ders-sınıf-hoca eşleşmeleri REGISTER_COURSE tablosuna girildiği zaman

Triggerımız ders ve hocayı o sınıfda bulunan öğrencilerle çaprazlayarak öğrenci not tablosunu oluşturup,
REGISTER_GRADE tablosuna girecek. Bu şekilde o dersi alan bütün öğrenciler için not girilecek veriler
hazırlanacaktır.

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_REGISTER_COURSE"

BEFORE INSERT OR DELETE OR UPDATE ON REGISTER_COURSE

FOR EACH ROW

DECLARE

SINIF REGISTER_CLASS%ROWTYPE;

YEARS1 NUMBER;
START_DATE2 VARCHAR(4);

START_DATE1 NUMBER;

BEGIN

IF get_current_event not in(3,4,7,8) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;

------------------------------------------------------------------

IF INSERTING THEN

FOR SINIF IN( SELECT * FROM REGISTER_CLASS WHERE class_id=:NEW.CLASS_ID AND


semester=:NEW.SEMESTER AND years=:NEW.YEARS)

LOOP

INSERT INTO register_grade (student_id, class_id, course_id, instructor_id, term_TEXT,semester,years,


credit)

VALUES(SINIF.STUDENT_ID, SINIF.CLASS_ID, :NEW.COURSE_ID,


:NEW.instructor_id,GET_TERM_TEXT,:NEW.SEMESTER,:NEW.YEARS,
get_credit(:NEW.COURSE_ID,:NEW.DEPARTMENT_ID) );

END LOOP;

END IF;

-------------------------------------------------------------------

IF DELETING THEN

DELETE FROM REGISTER_GRADE

WHERE course_id=:OLD.COURSE_ID AND instructor_id=:OLD.INSTRUCTOR_ID AND


CLASS_ID=:OLD.CLASS_ID AND semester=:OLD.SEMESTER AND years=:OLD.YEARS;

END IF;

------------------------------------------------------------------

IF UPDATING THEN

--SINIF DEGISTIRMESI YAPILMAZ

IF :OLD.COURSE_ID=:NEW.COURSE_ID THEN

UPDATE REGISTER_grade SET instructor_id=:NEW.INSTRUCTOR_ID WHERE


course_id=:OLD.COURSE_ID AND CLASS_ID=:OLD.CLASS_ID AND semester=:OLD.SEMESTER AND
years=:OLD.YEARS;

ELSE
UPDATE register_grade SET course_id=:NEW.COURSE_ID WHERE
instructor_id=:OLD.INSTRUCTOR_ID AND CLASS_ID=:OLD.CLASS_ID AND
semester=:OLD.SEMESTER AND years=:OLD.YEARS;

END IF;

END IF;

END;

CONTROL_REGISTER_GRADES

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_REGISTER_GRADES"

BEFORE UPDATE ON REGISTER_GRADE

FOR EACH ROW

BEGIN

IF get_current_event not in(3,4,7,8,11) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;

:NEW.SCORE:= mark_to_score(:NEW.MARK);

END;

CONTROL_STUDENTS

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_STUDENTS"

BEFORE INSERT OR DELETE OR UPDATE ON STUDENTS

FOR EACH ROW

BEGIN

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;

END;

CONTROL_USERS

CREATE OR REPLACE TRIGGER "MYSDU"."CONTROL_USERS"


BEFORE INSERT OR DELETE OR UPDATE ON USERS

FOR EACH ROW

BEGIN

IF get_current_event not in(1,5) then RAISE_APPLICATION_ERROR (-20205,'You may only make


changes during right time'); end if;

END;

4.1.5 – Fonksiyonların Oluşturulması

GET_CREDIT(Ders_ic,Bolum_id)

CREATE OR REPLACE FUNCTION GET_CREDIT (DERS_ID IN VARCHAR2,BOLUM_ID IN VARCHAR2)


RETURN NUMBER AS

CREDIT1 NUMBER;

BEGIN

SELECT COURSE_CREDIT INTO CREDIT1 FROM COURSES

WHERE COURSE_ID= ders_id AND bolum_id= department_id;

RETURN CREDIT1;

END GET_CREDIT;

CALCULATE_SEMESTER (ogrenci_id)

CREATE OR REPLACE FUNCTION CALCULATE_SEMESTER ( OGRENCI_ID IN VARCHAR2 ) RETURN


NUMBER AS

YEARS1 NUMBER;

START_DATE1 NUMBER;

BEGIN

SELECT TO_NUMBER(TO_CHAR(START_DATE,'YYYY'),'9999')

INTO START_DATE1 FROM STUDENTS

WHERE student_id= ogrenci_id;

RETURN 2*(get_year-start_date1)+get_TERM_NUMBER;
END CALCULATE_SEMESTER ;

GET_CURRENT_EVENT

CREATE OR REPLACE FUNCTION GET_CURRENT_EVENT RETURN NUMBER AS

event_id1 number;

BEGIN

SELECT event_id INTO event_id1 FROM TIMELINE WHERE sysdate BETWEEN start_event AND
end_event;

RETURN event_id1;

END GET_CURRENT_EVENT;

GET_DEPARTMENT (ogrenci_id)

create or replace FUNCTION GET_DEPARTMENT (OGRENCI_ID IN VARCHAR2) RETURN VARCHAR2 AS

DEPARTMENT1 VARCHAR2(10);

BEGIN

SELECT department_ID INTO DEPARTMENT1 FROM STUDENTS WHERE student_id= ogrenci_id;

RETURN department1;

END GET_DEPARTMENT;

GET_TERM_NUMBER

CREATE OR REPLACE FUNCTION GET_TERM_NUMBER RETURN NUMBER AS

TERM_NUMBER1 NUMBER;

BEGIN

SELECT term_number INTO term_number1 FROM timeline

WHERE SYSDATE BETWEEN start_event AND end_event;

RETURN term_number1;

END GET_TERM_NUMBER;
GET_TERM_TEXT

CREATE OR REPLACE FUNCTION GET_TERM_TEXT RETURN VARCHAR2 AS

TERM_TEXT1 VARCHAR2(10);

BEGIN

SELECT term_text INTO term_text1 FROM timeline

WHERE SYSDATE BETWEEN start_event AND end_event;

RETURN term_text1;

END GET_TERM_TEXT;

GET_YEAR

CREATE OR REPLACE FUNCTION GET_YEAR RETURN NUMBER AS

YEARS1 NUMBER;

BEGIN

SELECT YEARS INTO YEARS1 FROM timeline

WHERE SYSDATE BETWEEN start_event AND end_event;

RETURN YEARS1;

END GET_YEAR;

MARK_TO_SCORE

CREATE OR REPLACE FUNCTION MARK_TO_SCORE( MARK1 IN VARCHAR2 )

RETURN NUMBER AS

SCORE1 NUMBER;

BEGIN

SELECT SCORE INTO SCORE1 FROM grade_tables WHERE mark= mark1;

RETURN SCORE1;
END MARK_TO_SCORE;

4.1.6 – Views Oluşturulması

CREATE VIEW GPA_SEMESTER AS

SELECT SEMESTER,STUDENT_ID, SUM(NVL(CREDIT,0)*NVL(SCORE,0))/SUM(CREDIT) AS


SEMESTER_GPA FROM register_grade

GROUP BY STUDENT_ID,SEMESTER

CREATE VIEW GPA AS

SELECT STUDENT_ID,SUM(NVL(CREDIT,0)*NVL(MARK_TO_SCORE(MARK),0))/SUM(CREDIT) AS GPA


FROM register_grade

GROUP BY STUDENT_ID

CREATE VIEW CLASS_DEPARTMENT AS

SELECT DISTINCT CLASS_ID,DEPARTMENT_ID,semester,years FROM REGISTER_CLASS

where semester=(select term_number from active)

and

years=(select years from active)

CREATE VIEW ACTIVE AS

SELECT GET_TERM_TEXT AS TERM_TEXT,GET_TERM_NUMBER AS TERM_NUMBER,GET_YEAR AS


YEARS

FROM DUAL
5-Web Server Kurulumu

5.1-Oracle win32_11gR1_client Kurulumu

Hazırlayacağımız web arayüzünü Windows 2003 Server kurulu bir bilgisayarda kuracağımız ASPRunner 6.0
programıyla hazırlayıp ayni bilgisayardaki IIS de yayınlayacağız.

ASPRunner 6.0 dan Oracle veritabanımıza bağlanabilmek için Oracle win32_11gR1_client programını kurmamız
gerekmektedir.

Oracle sitesinden indirdiğimiz win32_11gR1_client dosyayı Windows Server 2003 bilgisayayarımıza kuruyoruz.

4
4
5.1-Oracle win32_11gR1_client Ayarları

4
5.2- ASP Runner 6.0 Kurulumu

http://xlinesoft.com web sitesinden ASP Runner 6.0 indirip Windows 2003 Server bilgisayarımıza kuruyoruz.

4
4
5.3 – Windows 2003 Server'da IIS (Internet Information Server)kurulumu

Start / Control Panel /Add or Remove Programs

Add Removes Windows Components

Application Servers

Internet Information Services(IIS)'i seçip OK butonuna basıyoruz. Windows Server 2003 CD'sini CD sürücüye takıp
kurulum işlemini tamamlıyoruz.

4
5.4-ASPRunner 6.0 ile Web Arayüzü Oluşturma

5.4.1 - ASP Runner Programını çalıştırıp web sayfamız için bir proje oluşturuyoruz. Database bağlantısı için "ODBC
driver dialog" seçeneğini işaretliyoruz ve Next butonuna basıyoruz.

5.4.2 - Daha önceden kurduğumuz OraClient11g_home1 sürücüsünü seçiyoruz.

5
Veritabanımıza bağlanmak için kullanıcı bilgilerimizi giriyoruz.

5.4.3 - Bağlantı gerçekleştikten sonra hazırlamış olduğumuz tablo sorguları seçiyoruz.

51
Bu pencerede seçmiş olduğumuz tabloların SQL kodları görülmektedir.Standart kodlarda bazı değişiklikler yapıyoruz.

5.4.4 - ADVISOR tablosunda sadece aktif dönemdeki bilgileri göstermesi ,ç,n gerekli kodları ilave ediyoruz.

COURSES tablosunda aktif dönemdeki dersleri göstemesi için ilave kodlar.

5
EMPLOYEES tablosunda sadece öğretmenleri göstermesi için ilave kodlar.

REGISTER_CLASS tablosunda aktif dönemdeki sınıfları göstemesi için ilave kodlar.

5
REGISTER_COURSES tablosunda aktif dönemdeki kayıtlı dersleri göstemesi için ilave kodlar.

REGISTER_GRADE tablosunda aktif dönemdeki ders notlarını göstemesi için ilave kodlar.

USERS tablosunda bilgilerle beraber EMPLOYEES tablosundaki isim ve soyisim bilgilerinin beraber listelenmesi için
ilave kodlar.

5
5.4.5 - Her tablo için gerekli olan List,Edit, Delete,View hakları tanımlanıyor.

5
5
5
5
5
6
6
5.4.6 - Herbir tablonun alanlarından hangilerine list,edit,delete vesaire haklar tanımlanıyor.

5.4.7 - Herbir tablonun alan sırası, formların yatay yada dikey olması, satır sayısı, menu linklerinin sıralanması gibi
ayarlamalr yapılıyor.

6
5.4.8 - Web sayfasının hangi dilde olacağına karar veriliyor.İngilizce, Türkce,Rusca vesaire olabilir.

Ayni zamanda LABEL EDİTOR ile her menüdeki link ve alan adları istenen dillere çevriliyor

6
5.4.9- Bu alanda Login sayfası oluşturuluyor. Login bilgileri USERS tablomuzdan alınıyor.

6
Permissons butonuna basarak her tablo için tanımladığımız gruplara değişik haklar veriyoruz.

Advanced butoununa basarak her tablo içinaşağıdaki 3 seçenekden birini seçiyoruz.

User can see and edit other users data : Kullanıcılar bu tablodaki bütün kullanıcılara ait olan bilgieri görebiliyor eğer
permission'da izin verilmişse değiştirebiliyor.

User can see and edit their own data only : Kullanıcılar sadece kendi bilgierini görebiliyor ve eğer permission'da izin
verilmişse değiştirebiliyor.

User can see other users data, can edit tehir own data only : Kullanıcı bütün bilgileri görür ancak sadece kendi
bilgilerini değiştirebilir.

6
5.4.10- Web arayüzümüz için tema seçiyoruz.

5.4.11- Bu sayfada her bir formun dizaynını yapabiliyoruz.

6
5.4.12- Kullanıcıların tablolarda yaptıkları işlemlere göre çalışacak kodlar yazabiliyoruz. Mesela bir tabloya bilgi
giridiğinde ilgili kişiye mail atarak haber verebilirsiniz.

5.4.13- Son adımda bitirmiş olduğumuz web sayfamızı artık yayınlayabiliriz. Lokal bilgisayarımızda web server'a
yayınlayarak bitirebiliriz.
6
Örneğimizde

C:\inetpub\wwwroot\erp dizininde yayınlıyoruz.

5.5 - Web Sayfasına Erişim

Web tarayıcımızı açarak, http://localhost/erp yada http://192.168.0.1/erp yazarak sitemize giriş yapıyoruz.

Admin (999)kodumuzla giriş yapıyoruz. İstediğimiz dili seçerek başlatabiliriz.

6
Karşımıza çıkan menüden EMPLOYEE linkine tıklayalim.

Şekilde görüldüğü gibi üniversitede çalışan personel bilgilerini görüyorsunuz.

ADD NEW butonuna basarak yeni bir personel girebilirsiniz. Yeni bir öğretmen girdiğimiz zaman EMPLOYEES
tablosuna bağlı trigger bu öğretmen için USERS

tablosuna yeni bir kullanıcı açacaktır.


6
7
Sonuç

Geliştirilmeye açık ve faydalı olacağını umduğumu bu proje ile başından sonuna kadar istenen bir amacı
gerçekleştirmeye çalıştım.

Bu projeye bir üniversitede kullanılabilecek muhasebe, personel daire başkanlığı, bilgi işlem ve öğrenci işlerinin birer
modül olarak eklenmesiyle ticari bir yazılım üretilebilmesi mümkündür.

71
Kaynaklar

http://www.oracle.com
http://www.novell.com
http://xlinesoft.com
http://microsoft.com

You might also like