Contoh Soal Oracle beserta jawabanya

Januari 23, 2018 , 0 Comments

Assalamualaikum Wr.Wb. Sudah lama admin tidak membuat artikel baru dikarenakan sibuk dengan urusan pekerjaan perpanjangan kontrak. Pada kesempatan kali ini admin akan membagikan contoh soal latihan Oracle Database beserta cara penyelesainaya. Soal ini berdasarkan pengalaman Saya di perkuliahan, jawaban ini hanya sharing jadi bila ada kesalahan mohon di koreksi.


Jawab :

  1. Schema
CREATE USER tugas_bd3_1501110039 IDENTIFIED BY stikomcki;

  2. Normalisasi Tabel
tabel berobat_1501110039
*no_berobat
tgl_berobat
-kd_pasien
-kd_sakit
-kd_dokter
keterangan

tabel berobat_detail_1501110039
-no_berobat
-kd_obat

tabel obat_1501110039
*kd_obat
nm_obat
-kd_dosis

tabel dosis_1501110039
*kd_dosis
nm_dosis

tabel dokter_1501110039
*kd_dokter
nm_dokter

tabel sakit_1501110039
*kd_sakit
deskripsi_sakit

tabel pasien_1501110039
*kd_pasien
nm_pasien
no_ktp
tempat_lahir
tgl_lahir
alamat
kelurahan
kecamatan
wilayah
kode_pos
telp

keterangan:
* = primary key

-  = foreign key

  3. Relasi


4. View
create view v_pasien as select * from pasien_1501110039;
create view v_dosis as select * from dosis_1501110039;
create view v_obat as select * from obat_1501110039;
create view v_detail as select * from berobat_detail_1501110039;
create view v_dokter as select * from dokter_1501110039;
create view v_berobat as select * from berobat_1501110039;
create view v_sakit as select * from sakit_1501110039;


5.Procedure
create or replace procedure insertPasien(
kd_pasien in pasien_1501110039.kd_pasien%TYPE,
nm_pasien in pasien_1501110039.nm_pasien%TYPE,
no_ktp in pasien_1501110039.nm_pasien%TYPE,
tempat_lahir in pasien_1501110039.nm_pasien%TYPE,
tgl_lahir in pasien_1501110039.nm_pasien%TYPE,
alamat in pasien_1501110039.nm_pasien%TYPE,
kelurahan in pasien_1501110039.nm_pasien%TYPE,
kecamatan in pasien_1501110039.nm_pasien%TYPE,
wilayah in pasien_1501110039.nm_pasien%TYPE,
kode_pos in pasien_1501110039.nm_pasien%TYPE,
telp in pasien_1501110039.nm_pasien%TYPE
)
is
begin
insert into pasien_1501110039 (kd_pasien,nm_pasien,no_ktp,tempat_lahir,tgl_lahir,alamat,kelurahan,kecamatan,wilayah,kode_pos,telp)
values (kd_pasien,nm_pasien,no_ktp,tempat_lahir,tgl_lahir,alamat,kelurahan,kecamatan,wilayah,kode_pos,telp);
commit;
end;
/

create or replace procedure insertSakit(
kd_sakit in sakit_1501110039.kd_sakit%TYPE,
deskripsi_sakit in sakit_1501110039.deskripsi_sakit%TYPE)
is
begin
insert into sakit_1501110039
(kd_sakit,deskripsi_sakit)
values
(kd_sakit,deskripsi_sakit);
commit;
end;
/
 
create or replace procedure insertDokter(
kd_dokter in dokter_1501110039.kd_dokter%TYPE,
nm_dokter in dokter_1501110039.nm_dokter%TYPE)
is
begin
insert into dokter_1501110039
(kd_dokter,nm_dokter)
values
(kd_dokter,nm_dokter);
commit;
end;
/

create or replace procedure berobat(
no_berobat in berobat_1501110039.no_berobat%TYPE,
tgl_berobat in berobat_1501110039.tgl_berobat%TYPE,
kd_pasien in berobat_1501110039.kd_pasien%TYPE,
kd_sakit in berobat_1501110039.kd_sakit%TYPE,
kd_dokter in berobat_1501110039.kd_dokter%TYPE,
keterangan in berobat_1501110039.keterangan%TYPE)
is
begin
insert into berobat_1501110039
(no_berobat,tgl_berobat,kd_pasien,kd_sakit,kd_dokter,keterangan)
values
(no_berobat,tgl_berobat,kd_pasien,kd_sakit,kd_dokter,keterangan);
commit;
end;
/

create or replace procedure insertDosis(
kd_dosis in dosis_1501110039.kd_dosis%TYPE,
nm_dosis in dosis_1501110039.nm_dosis%TYPE)
is
begin
insert into dosis_1501110039
(kd_dosis,nm_dosis)
values
(kd_dosis,nm_dosis);
commit;
end;
/

create or replace procedure insertObat(
kd_obat in obat_1501110039.kd_dosis%TYPE,
nm_obat in obat_1501110039.kd_dosis%TYPE,
kd_dosis in obat_1501110039.kd_dosis%TYPE)
is
begin
insert into obat_1501110039
(kd_obat,nm_obat,kd_dosis)
values
(kd_obat,nm_obat,kd_dosis);
commit;
end;
/

create or replace procedure insertDetail(
no_berobat in berobat_detail_1501110039.no_berobat%TYPE,
kd_obat in berobat_detail_1501110039.kd_obat%TYPE)
is
begin
insert into berobat_detail_1501110039
(no_berobat,kd_obat)
values
(no_berobat,kd_obat);
commit;
end;
/

6. Menjalankan Procedure
execute berobat('BR001','20012018','P001','S003','D004','rawat jalan');

execute berobat('BR002','20012018','P002','S005','D008','rawat inap');

execute insertDokter('D001','dr. Juniar, SpKj');

execute insertSakit('S001','sakit Kepala');

execute insertDosis('DS001','3x1 hari');

execute insertDosis('DS002','1/2 sendok teh');

execute insertObat('OB001','Parasetamol','DS001');

execute insertDetail('BR001','OB004');

execute insertPasien('P001','Nina N','3101099988','Tasikmalaya','090295','Kedoya','kebayoran lama','jakarta utara','DKI Jakarta','13420','98000012');

execute insertPasien('P002','Ani Doe','32051099988','Tasikmalaya','090295','Cikini','Gondangdia','jakarta Pusat','DKI Jakarta','13420','6285700291');

execute insertPasien('P003','Sena','32051099999','Tasikmalaya','090290','Dukuh Atas','Gondangdia','jakarta Pusat','DKI Jakarta','13420','628570022');

execute insertPasien('P004','Andri','32051092399','Jakarta','200678','Dukuh Atas','Gambir','jakarta Pusat','DKI Jakarta','13420','628570022');

7. Table Log
create table history_pasien(kd_pasien char(6), nm_pasien varchar2(30), no_ktp number, tempat_lahir varchar2(30), tgl_lahir char(6), alamat varchar2(30), kelurahan varchar2(30), kecamatan varchar2(30), wilayah varchar(30), kode_pos char(6), telp number, jenis_aksi varchar(6), aksi_tgl date);

8. Trigger
create or replace trigger tr_pasien
after insert
on pasien_1501110039
for each row
begin
insert into history_pasien values (
:NEW.kd_pasien,
:NEW.nm_pasien,
:NEW.no_ktp,
:NEW.tempat_lahir,
:NEW.tgl_lahir,
:NEW.alamat,
:NEW.kelurahan,
:NEW.kecamatan,
:NEW.wilayah,
:NEW.kode_pos,
:NEW.telp,
'AFTER',
SYSDATE
);
END;
/

create or replace trigger tr_pasien_before
before insert
on pasien_1501110039
for each row
begin
insert into history_pasien values (
:NEW.kd_pasien,
:NEW.nm_pasien,
:NEW.no_ktp,
:NEW.tempat_lahir,
:NEW.tgl_lahir,
:NEW.alamat,
:NEW.kelurahan,
:NEW.kecamatan,
:NEW.wilayah,
:NEW.kode_pos,
:NEW.telp,
'BEFORE',
SYSDATE
);
END;
/



Ok sekianlah dari contoh soal oracle dan jawaban kali ini, semoga bermanfaat untuk sorce code lengkapnya bisa anda download pada tautan berikutini 

Juanas Smith Shared

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.

0 komentar :