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
|
kod adi yetkili adres Tel |
kod tanim creuser
|
Kod
|
Kod
|
|
Stok_Tip |
Stok_Marka |
Stok_Model |
Users |
Envanter_Bilg |
|
Kod creuser |
Kod |
kod model creuser |
kod adi soyadi pass statu(tek/kul) |
serino tipkodu modkodu firma alis_tar tutar doviz_tip aciklama |
|
Envanter_User |
Arıza_Log |
Arıza_Detay |
|
|
|
Kullanici serino alis_tarih cikis_tarih |
arıza_no kullanici sikayet sikayet_tarihi tekkod cevap_tarihi cevap |
Arıza_no sirano gel_tarih ariza_tip yer(teknikservis/firma) islem cikis_tarih |
|
|
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 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;
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.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;
-------------------------------------------------------------------------------------------
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;
end if;
if updating then
:new.moduser:=user;
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;
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;
-------------------------------------------------------------------------------------------
for each row
declare say integer;
begin
if inserting then
:new.creuser:=user;
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;
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;
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;
for each row
begin
if inserting then
:new.creuser:=user;
:new.credate:=sysdate;
end if;
if updating then
:new.moddate:=sysdate;
end if;
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);