2.13.      TASARIM BÖLÜMÜ
 

2.15.1. Tablolar ve Alanları : Aşağıdaki tabloda veritabanımızı oluşturan tablo ve bunlara ait alanlar gösterilmiştir.
 

Yer

Firma

Ariza_Tip

Doviz

Doviz_kur

Kod

Tanim

creuser
credate
moduser
moddate

 

kod

adi

yetkili

adres

e-mail

Tel
creuser
credate
moduser
moddate

kod

tanim

creuser
credate
moduser
moddate

 

 

 

Kod
tanim
birim
creuser
credate
moduser
moddate

 

 

Kod
 tarih
alis
satis
ealis
esatis
creuser
credate
moduser
moddate

 

Stok_Tip

Stok_Marka

Stok_Model

Users

Envanter_Bilg

Kod
tip

creuser
credate
moduser
moddate

Kod
marka
creuser
credate
moduser
moddate

kod

model

creuser
credate
moduser
moddate

kod

adi

soyadi
username

pass

statu(tek/kul)
creuser
credate
moduser
moddate

serino

tipkodu
markodu

modkodu

firma

alis_tar

tutar
kdv

doviz_tip

aciklama
creuser
credate
moduser
moddate

Envanter_User

Arıza_Log

Arıza_Detay

 

Kullanici

serino

alis_tarih
yer

cikis_tarih
creuser
credate
moduser
moddate

arıza_no

kullanici

sikayet

sikayet_tarihi

tekkod

cevap_tarihi

cevap
creuser
credate
moduser
moddate

Arıza_no

sirano

gel_tarih

ariza_tip

yer(teknikservis/firma)

islem

cikis_tarih
creuser
credate
moduser
moddate

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabloların Görevleri: Aşağıdaki tabloda veritabanında yer alan tabloların ne tür bilgi saklayacağı anlatılmıştır.

 

Yer

Firma

Ariza_Tip

Doviz

Doviz_Kur

Bu table da bilgisayarların bulunduğu yerler tanımlanır.

Bu table da bilgisayarların satın alındığı ve anlaşmalı firmaların kayıtları tutulur.

Burada bilgisayarlarda meydana gelebilecek belli başlı arızaların tanımları yapılır.Örnek: HDD arızası, Windows arızası, Yazıcı arızası vb.

 Bu table’da da döviz tipleri tanımlanmaktadır.

Burada hangi tarihte hangi döviz cinsinin ne kadar olduğu saklanır.

Stok_Tip

Stok_Model

Stok_Marka

Users

Envanter_User

Burada alınan ürünlerin tipleri tanımlanır. Örneğin: Sabit Disk tipi hdd, Ekran kartı tipi ekr vb.

Burada da alınan ürünlerin modelleri saklanır. Örnek: TnT2M64 Model=32mb

Ürünlerin markaları bu table da tutulur.

Örnek: Nvidia,HP,Vestel gibi.

Burada da işletmedeki bilgisayarları kullanan kullanıcıların özellikleri saklanır.

Örnek: Ad, Soyad, Görev,

Burada işletmedeki tüm bilgisayar ve parçalarının genel özellikleri ile ayrıntılı kaydı saklanır.

Envanter_User

Ariza_log

Ariza_detay

 

Hangi bilgisayarın kim tarafından kullanıldığı ve ne zamandır kullandığı gibi bilgiler saklanır.

Burada da kullanıcıdan gelen şikayetlerin geliş tarihleri , bu şikayetlere kimlerin cevap verdiği ve de bu şikayet sonrası gerçekleştirilen işlem tipleri saklanmaktadır.

Kullanıcı tarafında bildirilen arızaların tipleri ve bu arızaların giderilmesi için gerçekleştirilen işlemler burada saklanır.

 

           

2.15.2. 

 

 

 

 

 

 



 















 

2.15.3.  Tabloların oluşturulmsı :

create table yer(

                        kod varchar2(6),

                        tanim varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,   

            constraint pk_kodu primary key(kod)

                        );

 

create table firma(

                        kod varchar2(6),

                        adi varchar2(15),

                        yetkili varchar2(25),

                        adres varchar2(40),

                        tel varchar2(12),

                        fax varchar2(12),

                        email varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_kod primary key(kod)           

                           );

 

create table ariza_tip(

                        kod varchar2(6),

                        tanim varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_koda primary key(kod)         

                                    );

 

create table stok_tip(

                        kod varchar2(6),

                        tanim varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_kodtip primary key(kod)       

                                    );

 




create table stok_marka(

                        kod varchar2(6),

                        marka varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_kodmar primary key(kod)     

                                    );

 

create table stok_model(

                        kod varchar2(6),

                        model varchar2(15),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_kodmod primary key(kod)

                                    );

 

create table doviz(

                           kod varchar2(6),

                           tanim varchar2(20),

                           birim number(6),

                           creuser varchar2(10),        

                           credate date,

                           moduser varchar2(10),

                           moddate date,

            constraint pk_doviz primary key(kod)

);       

create table doviz_kur(

                                    kod varchar2(6),

                                    tarih date,

                                    alis number(7),

                                    satis number(7),

                                    ealis number(7),

                                    esatis number(7),

                                    creuser varchar2(10),           

                                credate date,

                                    moduser varchar2(10),

                                    moddate date,

            constraint fk_doviz_kur foreign key(kod) references doviz(kod)

                                    );

 





create table users(

                        kod varchar2(6),

                        adi varchar2(15),

                        soyadi varchar2(15),

                        username varchar2(20),

                        pass varchar2(10),

                        statu varchar2(10),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_kodd primary key(kod)         

                        );

 

create table envanter_bilg(

                        serino varchar2(20),

                        tipkodu varchar2(6),

                        markodu varchar2(6),

                        modkodu varchar2(6),

                        firma varchar2(6),

                        alis_tar date,

                        tutar number(7),

                        kdv number(2),

                        dov_tip varchar2(6),

                        aciklama varchar2(30),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_serino primary key(serino),  

            constraint fk_tipkodu foreign key(tipkodu) references stok_tip(kod),

            constraint fk_markodu foreign key(markodu) references stok_marka(kod),

            constraint fk_modkodu foreign key(modkodu) references stok_model(kod),

            constraint fk_firma foreign key(firma) references firma(kod),

            constraint fk_doviz_tip foreign key(dov_tip) references doviz(kod)

                                    );

 

             create table envanter_user(

                                       kullanici varchar2(6),

                                       serino varchar2(20),

                                       yer varchar2(6),

                                       alis_tarih date,

                                       cik_tarih date,

                                       creuser varchar2(10),        

                           credate date,

                                       moduser varchar2(10),

                                       moddate date,

            constraint fk_kullanici foreign key(kullanici) references users(kod),

            constraint fk_yer foreign key(yer) references yer(kod),

            constraint fk_serino foreign key(serino) references envanter_bilg(serino),

            constraint pk_serino2 primary key(serino)

                                                );

                                     

create table ariza_log(

                        ariza_no number(4),

                        kullanici varchar2(6),

                        sikayet varchar2(300),

                        sikayet_tarihi date default sysdate,

                        tekkod varchar2(6),

                        cevap_tarih date,

                        cevap varchar2(300),

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint pk_ariza_no primary key(ariza_no),

            constraint fk_kullanici_ariza foreign key(kullanici) references users(kod),

            constraint fk_tekkod foreign key(tekkod) references users(kod)

                            );

 

create table ariza_detay(

                        ariza_no number(4),

                        sirano number,

                        gel_tarih date,

                        ariza_tip varchar2(6),

                        yer varchar2(6),

                        islem varchar2(400),

                        cik_tarih date,

                        creuser            varchar2(10), 

                        credate date,

                        moduser varchar2(10),

                        moddate          date,

            constraint fk_ariza_no foreign key(ariza_no) references ariza_log(ariza_no),

            constraint fk_ariza_tip foreign key(ariza_tip) references ariza_tip(kod),

            constraint fk_yer2 foreign key(yer) references firma(kod)
                                                  );

2.15.4.  Trigger’ların Oluşturulması :

     
create or replace trigger yer before insert or update or delete on yer

for each row

declare say integer;

begin

      if inserting then

                  :new.creuser:=user;

                  :new.credate:=sysdate;

            end if;

           
if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

                        select count(*) into say from envanter_user,ariza_detay

                        where envanter_user.yer=:old.kod or ariza_detay.yer=:old.kod;

                        if (say>0)then

raise_application_error(-20001,'Ariza_Detay veya Envanter_user Tablelarında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

            end if;

   end if;
end;    

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

create or replace trigger firma_tgr before insert or update or delete on firma

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from envanter_bilg,ariza_detay

                        where envanter_bilg.firma=:old.kod or ariza_detay.yer=:old.kod;

                        if (say>0)then

raise_application_error(-20001,'Referans Tablelarında iligili kayıtlar bulunduğu için silme işlemini yapılamaz!');

                        end if;

            end if;

end;    

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

create or replace trigger arizatip_tgr before insert or update or delete on ariza_tip

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

                        select count(*) into say from ariza_detay

            where ariza_detay.ariza_tip=:old.kod;

                        if (say>0)then

raise_application_error(-20001,'Ariza_Detay Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

                        end if;

            .end if;

end;    

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

create or replace trigger stoktip_tgr before insert or update or delete on stok_tip

for each row

declare say INTEGER;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from envanter_bilg

                        where envanter_bilg.tipkodu=:old.kod;

            if (say>0)then

raise_application_error(-20001,'Envanter_Bilg Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

            end if;

 

end if;

end;    

 

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

create or replace trigger marka_tgr before insert or update or delete on stok_marka

for each row

declare say integer;

begin

            if inserting then

                        :new.creuser:=user;

            :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from envanter_bilg

                        where envanter_bilg.markodu=:old.kod;

                        if (say>0)then

raise_application_error(-20001,'Envanter_Bilg Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

            end if;

            end if;

end;    

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

create or replace trigger model_tgr before insert or update or delete on stok_model

for each row

declare say integer;

begin

            if inserting then

                        :new.creuser:=user;

            :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from envanter_bilg

                        where envanter_bilg.modkodu=:old.kod;

            if (say>0)then

raise_application_error(-20001,'Envanter_Bilg Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

            end if;

            end if;

end;    


 

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

create or replace trigger dov_kur_tgr before insert or update on doviz_kur

for each row

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

end;    

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

create or replace trigger dov_tgr before insert or update or delete on doviz

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from doviz_kur

                        where doviz_kur.kod=:old.kod;

            if (say>0)then

raise_application_error(-20001,'Doviz_Kur Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

            end if;

            end if;

end;    



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

create or replace trigger users_tgr before insert or update or delete on users

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

                        if :new.statu != 'tek' then

                                    if :new.statu != 'kul' then

raise_application_error(-20001,'Lütfen Statu Kısmına tek veya kul Kelimelerini Giriniz!!');

                                    end if;

                        end if;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

                        select count(*) into say from envanter_user,ariza_log

                        where envanter_user.kullanici=:old.kod or ariza_log.kullanici=:old.kod;

                        if (say>0)then

raise_application_error(-20001,'Envanter_User veya Ariza_Log Table larında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

                        end if;

            end if; 

end;    

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

create or replace trigger enbilg_tgr before insert or update or delete on envanter_bilg

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 





            if deleting then

            select count(*) into say from envanter_user

                        where envanter_user.serino=:old.serino;

if (say>0)then

raise_application_error(-20001,'Envanter_User Table ında iligili kayıtlar bulunduğu için silme işlemini gerçekleştiremezsiniz!');

                        end if;

            end if;

end;    

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

create or replace trigger enuser_tgr before insert or update on envanter_user

for each row

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

           

            if updating then         

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

           

end;    

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

create or replace trigger ariza_tgr before insert or update or delete on ariza_log

for each row

declare say integer;

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

 

            if deleting then

            select count(*) into say from ariza_detay

                        where ariza_detay.ariza_no=:old.ariza_no;

                        if (say>0)then

raise_application_error(-20001,'Ariza_Detay Table inda iligili kayitlar bulundugu için silme islemini gerçeklestiremezsiniz!');

                        end if;

            end if;

end;    

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

create or replace trigger ardetay_tgr before insert or update on ariza_detay

for each row

begin

            if inserting then

            :new.creuser:=user;

                        :new.credate:=sysdate;

            end if;

 

            if updating then

            :new.moduser:=user;

                        :new.moddate:=sysdate;

            end if;

end;    
-------------------------------------------------------------------------------------------

 

2.15.5.  İndex’lerin Oluşturulması :

       create index idx_firma on firma(adi,yetkili);

 

create index idx_stkmod on stok_model(marka,model);

 

create index idx_users on users(username,adi,soyadi);

 

create index idx_bilg on envanter_bilg(serino);

 

create index idx_envuser on envanter_user(kullanici);

 

create index idx_ariza on ariza_log(ariza_no);

 

create index idx_detay on ariza_detay(ariza_no,sirano);