Tampilkan postingan dengan label Praktikum-Basdat. Tampilkan semua postingan
Tampilkan postingan dengan label Praktikum-Basdat. Tampilkan semua postingan

Selasa, 24 Mei 2011

Solusi Modul 7 TRIGGER

1.    [20 point] Buat trigger untuk ...
a.    Untuk melakukan pengecekan jumlah barang yang didistribusikan pada tabel distribusi serta tampilkan info yang berhubungan. Jika jumlah unit yang dikirim kurang dari 100+(2 digit terakhir Nim) maka tidak boleh dikirim.

JAWAB :
create or replace trigger cek_barang_dist
before insert on distribusi
for each row
declare
namabrng barang.nama_barang%type;
namakurir kurir.nama_kurir%type;
namatoko toko.nama_toko%type;
begin
select nama_barang into namabrng 
from barang 
where id_barang=:new.id_barang;
select nama_kurir into namakurir 
from kurir 
where id_kurir=:new.id_kurir;
select nama_toko into namatoko 
from toko 
where id_toko=:new.id_toko;
if :new.jumlah < 138 then
 dbms_output.put_line('============================================');
 dbms_output.put_line('Barang '||namabrng||' yang didistribusikan oleh '||namakurir||' ke toko '||namatoko);
 dbms_output.put_line('============================================');
 raise_application_error(-20103,'Maaf jumlah barang tidak mencukupi');
else
 dbms_output.put_line('============================================');
 dbms_output.put_line('Barang '||namabrng||' yang didistribusikan oleh '||namakurir||' ke toko '||namatoko);
 dbms_output.put_line('============================================');
 dbms_output.put_line('Barang memenuhi syarat distribusi');
end if;
end;
/
b.    Untuk menampilkan lama bahan datang setelah dilakukan insert pada tabel mengirim, hitung dari waktu tiba dan berikan waktu tiba dan waktu sekarang. Jika waktu tiba kurang dari 10 hari maka barang diperbolehkan untuk dikirim
JAWAB :
create or replace trigger cek_datang
before insert on mengirim
for each row
declare
tiba number;
begin
select round(:new.waktutiba-sysdate) into tiba from dual;
if tiba<10 then
dbms_output.put_line('barang akan tiba '||tiba||' hari lagi.');
else
raise_application_error(-20103,'Kelamaan, masa '||tiba||' hari');
end if;
end;
/
2.    [15 point] Buat trigger untuk ... a.    Menampilkan informasi setelah melakukan insert dari tabel karyawan.
JAWAB :
create or replace trigger info_karyawan
after insert on karyawan
for each row
declare
pngkt jabatan.pangkat%type;
gaji_pokok jabatan.gaji_pokok%type;
begin
select pangkat, gaji_pokok into pngkt, gaji_pokok 
from jabatan 
where id_jabatan=:new.id_jabatan;
dbms_output.put_line('Data Karyawan Baru :');
dbms_output.put_line('===================================');
dbms_output.put_line('Karyawan ID  : '||:new.id_karyawan);
dbms_output.put_line('Nama Karyawan  : '||:new.nama_karyawan);
dbms_output.put_line('Jenis Kelamin  : '||:new.jns_kelamin);
dbms_output.put_line('Alamat   : '||:new.alamat);
dbms_output.put_line('Telp   : '||:new.telp);
dbms_output.put_line('Email  : '||:new.email);
dbms_output.put_line('Pangkat  : '||pngkt);
dbms_output.put_line('Gaji Pokok : '||gaji_pokok);
dbms_output.put_line('===================================');
end;
/
b.    Menampilkan informasi setelah melakukan update pada tabel karyawan.
JAWAB :
create or replace trigger Upd_info_karyawan
after update on karyawan
for each row
declare
pngkt1 jabatan.pangkat%type;
gaji_pokok1 jabatan.gaji_pokok%type;
pngkt2 jabatan.pangkat%type;
gaji_pokok2 jabatan.gaji_pokok%type;
begin
select pangkat, gaji_pokok into pngkt1, gaji_pokok1 
from jabatan 
where id_jabatan=:old.id_jabatan;
select pangkat, gaji_pokok into pngkt2, gaji_pokok2 
from jabatan 
where id_jabatan=:new.id_jabatan;
dbms_output.put_line('Data Karyawan Sebelum diupdate :');
dbms_output.put_line('===================================');
dbms_output.put_line('Karyawan ID  : '||:old.id_karyawan);
dbms_output.put_line('Nama Karyawan  : '||:old.nama_karyawan);
dbms_output.put_line('Jenis Kelamin  : '||:old.jns_kelamin);
dbms_output.put_line('Alamat   : '||:old.alamat);
dbms_output.put_line('Telp   : '||:old.telp);
dbms_output.put_line('Email  : '||:old.email);
dbms_output.put_line('Pangkat  : '||pngkt1);
dbms_output.put_line('Gaji Pokok : '||gaji_pokok1);
dbms_output.put_line('===================================');
dbms_output.put_line('===================================');
dbms_output.put_line('');
dbms_output.put_line('Data Karyawan setelah diupdate :');
dbms_output.put_line('===================================');
dbms_output.put_line('Karyawan ID  : '||:new.id_karyawan);
dbms_output.put_line('Nama Karyawan  : '||:new.nama_karyawan);
dbms_output.put_line('Jenis Kelamin  : '||:new.jns_kelamin);
dbms_output.put_line('Alamat   : '||:new.alamat);
dbms_output.put_line('Telp   : '||:new.telp);
dbms_output.put_line('Email  : '||:new.email);
dbms_output.put_line('Pangkat  : '||pngkt2);
dbms_output.put_line('Gaji Pokok : '||gaji_pokok2);
dbms_output.put_line('===================================');
dbms_output.put_line('===================================');
end;
/
3.    [10 point] Buat trigger untuk melakukan update stok bahan pada tabel bahan jika dilakukan pengiriman bahan oleh supplier.
  JAWAB :
create or replace trigger stok_bahan
after insert on mengirim
for each row
begin
update bahan 
set stock_bahan=stock_bahan+:new.jumlah_unit 
where id_bahan=:new.id_bahan;
end;
/
4.    [10 point] Buat trigger untuk menampilkan pesan setelah melakukan penghapusan data pada tabel mengirim, selain itu juga akan berpengaruh pada stok bahan yang di suplay karena jika dihapus maka pengiriman di batalkan...
  JAWAB :
create or replace trigger info_hapus_kirim
after delete on mengirim
for each row
declare
namabhn bahan.nama_bahan%type;
namasupp supplier.nama_supplier%type;
begin
select nama_bahan into namabhn 
from bahan 
where id_bahan=:old.id_bahan;
select nama_supplier into namasupp 
from supplier 
where id_supplier=:old.id_supplier;
update bahan set stock_bahan=stock_bahan-:old.jumlah_unit where id_bahan=:old.id_bahan;
dbms_output.put_line('Data Mengirim');
dbms_output.put_line('===============================');
dbms_output.put_line('ID Kirim : '||:old.id_kirim);
dbms_output.put_line('Jumlah  : '||:old.jumlah_unit);
dbms_output.put_line('Biaya  : '||:old.biaya);
dbms_output.put_line('Waktu tiba : '||:old.waktutiba);
dbms_output.put_line('Supplier : '||namasupp);
dbms_output.put_line('Bahan  : '||namabhn);
dbms_output.put_line('===============================');
dbms_output.put_line('Berhasil Dihapus');
end;
/

Demikian solusi dari dari modul 7 TRIGGER semoga dapat bermanfaat, dan jika ada kesalahan tolong dikoreksi


Sabtu, 05 Maret 2011

[Bonus] Praktikum pertama

Soal-soal bonus untuk modul pertama basis data relational dan DDL...

  1. [gunakan bahasa sendiri] sebutkan dan jelaskan macam-macam constraint ...
  2. berikan contoh untuk masing-masing constraint [tidak boleh sama dengan di buku atau materi yang saya upload]...
  3. [gunakan bahasa sendiri] sebutkan dan jelaskan macam-macam key...
  4. berikan contoh untuk masing-masing key serta jelaskan...
  5. Apa beda antara drop dengan truncate...
Pilih yang mudah untuk dikerjakan, praktikum pertama tidak terlalu sulit kok (insyaAllah kalau sudah belajar...). dengan mengerjakan soal ini, minimal akan membantu kalian praktikum.

Jika ingin mendapatkan nilai bonus jangan lupa baca peraturan untuk soal bonus dan penjelasan mengenai nilai skill.

Jumat, 04 Maret 2011

[Praktikum 1]Basisdata Relasional dan DDL

Basisdata relasional merupakan salah satu konsep penyimpanan data dalam bentuk relasi atau dua dimensi terdapat hubungan antara tabel satu dengan yang lainnya. Atau simpelnya “kumpulan dari sejumlah tabel yang saling berhubungan”.


Untuk memodelkan basisdata relasional digunakan diagram entitas atau sering disebut ERD (Entity Relationship Diagram). Berikut beberapa istilah yang digunakan dalam ERD:

1.    Entitas
Merupakan objek pada dunia nyata yang bersifat unik, dapat berupa benda, tempat, kejadian, dll. Entitas dibedakan menjadi dua :
·         Entitas kuat : entitas yang tidak bergantung pada entitas lain, biasanya memiliki primary key.
·         Entitas lemah : entitas yang bergantung pada entitas lain, biasanya tidak memiliki primary key.

2.    Atribut
Merupakan deskripsi sifat atau identitas yang melekat pada entitas.

3.    Relasi
Merupakan hubungan antarsatu entitas dengan entitas lainnya.

4.    Kardinalitas
Merupakan jumlah maksimum suatu entitas dapat berelasi dengan entitas lain. Kardinalitas ini memiliki beberapa kemungkinan yaitu:
·         One to one
Pada kardinalitas ini masing-masing record dalam entitas A hanya dapat berelasi dengan satu record dalam entitas B
·         One to many
Pada kardinalitas ini masing-masing record dalam entitas A dapat berelasi dengan banyak record dalam entitas B, tapi satu record pada entitas B hanya dapat berelasi dengan satu record pada entitas A.
·         Many to one
Pada kardinalitas ini masing-masing record dalam entitas B dapat berelasi dengan banyak record dalam entitas A, tapi satu record pada entitas A hanya dapat berelasi dengan satu record pada entitas B. (kebalikan dari One to Many)
·         Many to many
Pada kardinalitas ini masing-masing record dalam entitas A dapat berelasi dengan banyak record dalam entitas B, dan satu record pada entitas B dapat berelasi dengan banyak record pada entitas A.

Kamis, 03 Maret 2011

Soal Bonus dan nilai skill

Buat temen-temen peserta praktikum Basis Data Laboratorium Daskom. Kami dari asprak akan memberikan tambahan nilai bagi yang berpartisipasi aktif dalam praktikum ini. Nilai tambahan ini akan kami tambahkan pada point penilaian skill karena pada penilaian skill dilakukan murni oleh asistan. Walaupun cuma 10 point menurut kami itu sudah lumayan.

Nilai skill berbobot 10 point dari keseluruhan penilaian, pada nilai ini akan kami berikan penuh 10 point jika praktikan mampu mengerjakan seluruh soal jurnal dengan lancar. Jika kalian belajar dan sempat mencoba sebelumnya insyaAllah hal ini bukan hal yang sulit. Selain itu point ini dapat kami tambahkan jika kalian mampu menjawab pertanyaan dari kami secara lisan ketika praktikum berlangsung baik ketika ada penyampaian materi dari kami maupun ketika pengerjaan jurnal. Selain itu ada kesempatan sekali lagi untuk menambah point skill ini yaitu dengan menjawab soal bonus yang kami upload di blog ini. Jika kalian mampu menjawab sesuai aturan yang ada maka kalian akan mendapat tambahan 5 point untuk point skill.

Pertemuan Running Modul praktikum Basis Data

Pada pertemuan ini telah dijelaskan sekilas mengenai peraturan-peraturan ketika praktikum, dan diharapkan praktikan lebih siap pada praktikum pertama dengan mengetahui aturan-aturan yang telah ditetapkan untuk kegiatan praktikum. Peraturan yang telah dijelaskan meliputi :

Peraturan UMUM
·         Kegiatan yang dilakukan oleh laboratorium Dasar Komputer berupa praktikum dan responsi.
·         Praktikan mendapatkan satu paket modul dan sebuah kartu praktikum.

Peraturan tentang KARTU PRAKTIKUM
·         Kartu praktikum diharapkan dibawa pada saat praktikum.
·         Jika kartu praktikum tidak dibawa saat mengikuti praktikum maka praktikan tetap dapat mengikuti praktikum seperti biasa namun tidak memiliki hak komplain nilai terhadap modul parktikum yang bersangkutan bila nantinya terdapat masalah.
·         Jika praktikan kehilangan kartu praktikum maka praktikan bisa mengajukan permohonan untuk mendapatkan kartu pengganti. Praktikan hanya diberi 1 kali kesempatan untuk mendapatkan kartu praktikum pengganti.

Minggu, 27 Februari 2011

Sekilas Tentang Praktikum Basdat IK

Akan berisi informasi mengenai praktikum Basis Data yang diselenggarakan oleh Laboratorium Dasar Komputer(Daskom) yang. Pada entri ini tidak akan menjelaskan materi secara detail tapi hanya sekilas saja dan beberapa informasi yang mungkin penting untuk diketahui oleh praktikan maupun asistan praktikum.