TUGAS BASIS DATA LANJUT SISTEM INFORMASI PENDAFTARAN PRAKTIKUM TEKNIK INFORMATIKA UNIVERSITAS WIJAYA KUSUMA SURABAYA Nama Kelompok : Ety Sudarwati Farid Kurniawan Untari Kristina Kelas :B (09120008) (09120009) (09120065) TEKNIK INFORMATIKA UNIVERSITAS WIJAYA KUSUMA SURABAYA 2011-2012 Active Database 1. STORED PROCEDURE Store procedure adalah Sekumpulan perintah yang mempunyai nama dan disimpan sebagai objek dari database yang nantinya bisa kita panggil dari aplikasi. Stored procedure “hapus_data” pada SQL 2000 Create As Delete Delete Delete Delete Go procedure “hapus_data” from from from from BAWA KELOLAH KELOLAH2 DAFTAR Stored procedure “hapus_data” pada Oracle create or replace PROCEDURE HAPUS_DATA AS BEGIN Delete from BAWA; Delete from KELOLAH; Delete from KELOLAH2; Delete from DAFTAR; END HAPUS_DATA; Keterangan: Store procedure ini digunakan untuk melakukan penghapusan seluruh data yang ada pada tabel bawa, kelolah, kelolah2, dan daftar Stored procedure “insert_mahasiswa” pada SQL 2000 create procedure INSERT_MAHASISWA @NPM int,@NAMA varchar(30),@ALAMAT varchar(50),@TELEPON numeric,@TEMPAT_LAHIR varchar(30),@TANGGAL_LAHIR datetime as begin insert into MAHASISWA (MAHASISWA.NPM,MAHASISWA.NAMA,MAHASISWA.ALAMAT,MAHASISWA.TELEP ON,MAHASISWA.TEMPAT_LAHIR,MAHASISWA.TANGGAL_LAHIR) values(@NPM,@NAMA,@ALAMAT,@TELEPON,@TEMPAT_LAHIR,@TANGGAL_LAHI R) end go Stored procedure “insert_mahasiswa” pada Oracle create or replace PROCEDURE INSERT_MAHASISWA (iNPM int, vNAMA varchar2, vALAMAT varchar2, iTELEPON number, vTEMPAT_LAHIR varchar2, dTANGGAL_LAHIR date) AS BEGIN insert into mahasiswa VALUES (iNPM, vNAMA, vALAMAT, iTELEPON, vTEMPAT_LAHIR, dTANGGAL_LAHIR); end; Keterangan: Store procedure ini digunakan untuk melakukan penambahan data pada tabel mahasiswa Stored procedure “insert_praktikum” pada SQL 2000 create procedure INSERT_PRAKTIKUM @ID_PRAKTIKUM int,@NAMA_PRAKTIKUM varchar(30),@SEMESTER varchar(20),@JUMLAH_SKS varchar(20),@KELAS varchar(20) as begin insert into PRAKTIKUM (PRAKTIKUM.ID_PRAKTIKUM,PRAKTIKUM.NAMA_PRAKTIKUM,PRAKTIKUM.SEM ESTER,PRAKTIKUM.JUMLAH_SKS,PRAKTIKUM.KELAS) values(@ID_PRAKTIKUM,@NAMA_PRAKTIKUM,@SEMESTER,@JUMLAH_SKS,@KE LAS) end go Stored procedure “insert_praktikum” pada Oracle create or replace PROCEDURE INSERT_PRAKTIKUM (iID_PRAKTIKUM int, vNAMA_PRAKTIKUM varchar2, vSEMESTER varchar2, vJUMLAH_SKS varchar2, vKELAS varchar2) AS BEGIN insert into PRAKTIKUM VALUES (iID_PRAKTIKUM, vNAMA_PRAKTIKUM, vSEMESTER, vJUMLAH_SKS, vKELAS); end; Keterangan: Store procedure ini digunakan untuk melakukan penambahan data pada tabel praktikum. Stored procedure “insert_pengampu” pada SQL 2000 create procedure INSERT_PENGAMPU @ID_PENGAMPU int,@NAMA_PENGAMPU varchar(30),@ALAMAT_PENGAMPU varchar(50),@TEMPAT_LAHIR_PENGAMPU varchar(30),@TANGGAL_LAHIR_PENGAMPU datetime as begin insert into PENGAMPU (PENGAMPU.ID_PENGAMPU,PENGAMPU.NAMA_PENGAMPU,PENGAMPU.ALAMAT_P ENGAMPU,PENGAMPU.TEMPAT_LAHIR_PENGAMPU,PENGAMPU.TANGGAL_LAHIR_ PENGAMPU) values(@ID_PENGAMPU,@NAMA_PENGAMPU,@ALAMAT_PENGAMPU,@TEMPAT_LA HIR_PENGAMPU,@TANGGAL_LAHIR_PENGAMPU) end go Stored procedure “insert_pengampu” pada Oracle create or replace PROCEDURE INSERT_PENGAMPU (iID_PENGAMPU int, vNAMA_PENGAMPU varchar2, vALAMAT_PENGAMPU varchar2, vTEMPAT_LAHIR_PENGAMPU varchar2, vTANGGAL_LAHIR_PENGAMPU varchar2) AS BEGIN insert into PENGAMPU VALUES (iID_PENGAMPU, vNAMA_PENGAMPU, vALAMAT_PENGAMPU, vTEMPAT_LAHIR_PENGAMPU, vTANGGAL_LAHIR_PENGAMPU); end; Keterangan: Store procedure ini digunakan untuk melakukan penambahan data pada tabel pengampu Stored procedure “insert_daftar” pada SQL 2000 create procedure INSERT_DAFTAR @NPM int,@ID_PRAKTIKUM int as begin insert into DAFTAR (DAFTAR.NPM,DAFTAR.ID_PRAKTIKUM) values(@NPM,@ID_PRAKTIKUM) end go Stored procedure “insert_daftar” pada Oracle create or replace PROCEDURE insert_Daftar(iNPM int, iId_Praktikum int) as begin insert into daftar values (iNPM, iId_Praktikum); end; Keterangan: Store procedure ini digunakan untuk melakukan penambahan data pada tabel daftar Stored procedure “delete_daftar” pada SQL 2000 create procedure DELETE_DAFTAR @NPM int,@ID_PRAKTIKUM int as begin delete from DAFTAR where DAFTAR.NPM = @NPM and DAFTAR.ID_PRAKTIKUM = @ID_PRAKTIKUM end go Stored procedure “delete_daftar” pada Oracle create or replace PROCEDURE DELETE_DAFTAR ( NPM number ) AS BEGIN delete from daftar where NPM=delete_daftar.NPM; END DELETE_DAFTAR; Keterangan: Store procedure ini digunakan untuk penghapusan data data pada tabel daftar Cara menjalankan store prosedure untuk insert data pada SQL 2000: EXEC INSERT_MAHASISWA 09120054, 'basuki', 'balongsari', 677, 'surakarta', '10-May-92' Cara menjalankan store prosedure untuk insert data pada Oracle: call insert_mahasiswa(09120008, 'ety', 'banyu urip', 9478575, 'surabaya', '12-Apr-90'); FUNCTION Function adalah merupakan fasilitas yang disediakan oleh database secara umum untuk memanipulasi data yang kompleks. Function “FN_USIA1” pada SQL 2000 IF EXISTS (SELECT name FROM sysobjects WHERE name='FN_USIA1' and type='FN') DROP FUNCTION FN_USIA1 GO CREATE FUNCTION FN_USIA1(@tgl datetime,@tgl_now datetime) RETURNS int AS BEGIN DECLARE @tahun1 int,@tahun2 int,@umur int SET @tahun1=DATEPART(year,@tgl) SET @tahun2=DATEPART(year,@tgl_now) SET @umur=(@tahun2-@tahun1) RETURN @umur END GO Function “FN_USIA1” pada Oracle CREATE OR REPLACE FUNCTION FN_USIA1 ( TGL_LAHIR IN DATE, DATE_NOW IN DATE ) RETURN NUMBER AS tahun1 int; tahun2 int; umur int; BEGIN tahun1:=to_char(TGL_LAHIR,'YYYY'); tahun2:=to_char(date_now,'YYYY'); umur:=tahun2-tahun1; return umur; END FN_USIA1; Keterangan: Berfungsi untuk menghitung umur pada data yang memiliki tanggal_lahir dengan tipe date. Cara menjalankan fungsi function yang telah dibuat pada SQL 2000: select id_admin,nik,nama_admin,alamat_admin,tlp_admin,tempat_lahir_ad min,tanggal_lahir_admin,dbo.fn_usia1(tanggal_lahir_admin,getda te())as usia from dosen Cara menjalankan fungsi function yang telah dibuat pada Oracle: select id_admin,NIM,nama_admin,alamat_admin,tlp_admin, tempat_lahir_admin,tanggal_lahir_admin, fn_usia1(tanggal_lahir_admin,to_date(sysdate,'dd/mm/yy')) Umur from dosen; as TRIGGER Trigger adalah Store procedure khusus yang otomatis aktif/dijalankan pada saat eventevent tertentu ketika sebuah aksi (INSERT, UPDATE, DELETE) menimpa sebuah tabel. Trigger “SP_INSERT_MAHASISWA” pada SQL 2000 IF EXISTS(SELECT name FROM sysobjects WHERE name='SP_INSERT_MAHASISWA' AND type='TR') DROP TRIGGER SP_INSERT_MAHASISWA GO Create TRIGGER SP_INSERT_MAHASISWA on MAHASISWA FOR INSERT As DECLARE @npm int,@nama varchar(30),@alamat varchar(50),@telepon int,@lahir varchar(20),@tgl_lahir datetime SELECT SELECT SELECT SELECT SELECT SELECT @npm= NPM from inserted @nama=nama from inserted @alamat=alamat from inserted @telepon=telepon from inserted @lahir=tempat_lahir from inserted @tgl_lahir=tanggal_lahir from inserted INSERT into History_Mahasiswa Values (@npm,@nama,@alamat,@telepon,@lahir,@tgl_lahir) GO Trigger “SP_INSERT_MAHASISWA” pada Oracle create or replace TRIGGER "SP_INSERT_MAHASISWA" AFTER INSERT ON MAHASISWA REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW BEGIN insert into history_mahasiswa values (:new.npm,:new.nama,:new.alamat,:new.telepon,:new.tempat_lahir ,:new.tanggal_lahir); END; Keterangan: Digunakan untuk melakukan insert data pada tabel history_mahasiswa, apabila terjadi penambahan data pada tabel mahasiswa, maka tabel History_mahasiswa akan dilakukan insert. Trigger “SP_UPDATE_MAHASISWA” pada SQL 2000 IF EXISTS(SELECT name FROM sysobjects WHERE name='SP_UPDATE_MAHASISWA' AND type='TR') DROP TRIGGER SP_UPDATE_MAHASISWA GO Create TRIGGER SP_UPDATE_MAHASISWA on MAHASISWA FOR UPDATE As DECLARE @npm int,@nama varchar(30),@alamat varchar(50),@telepon int,@lahir varchar(20),@tgl_lahir datetime,@npm_lama int SELECT @npm= NPM from inserted SELECT @npm_lama= NPM from deleted SELECT SELECT SELECT SELECT SELECT @nama=nama from inserted @alamat=alamat from inserted @telepon=telepon from inserted @lahir=tempat_lahir from inserted @tgl_lahir=tanggal_lahir from inserted UPDATE HISTORY_MAHASISWA SET NPM=@npm,NAMA=@nama,ALAMAT=@alamat,Telepon=@telepon,TEMPAT_LAH IR=@lahir,Tanggal_Lahir=@tgl_lahir WHERE NPM=@npm_lama Go Trigger “SP_UPDATE_MAHASISWA” pada Oracle create or replace TRIGGER SP_UPDATE_MAHASISWA AFTER UPDATE ON MAHASISWA REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW BEGIN update history_mahasiswa SET NPM=:new.npm,NAMA=:new.nama,ALAMAT=:new.alamat,Telepon=:new.te lepon,TEMPAT_LAHIR=:new.tempat_lahir,Tanggal_Lahir=:new.Tangga l_lahir WHERE NPM=:old.NPM; END; Keterangan: Digunakan untuk melakukan update data pada tabel history_mahasiswa, apabila terjadi perubahan pada tabel mahasiswa, maka tabel history_mahasiswa akan dilakukan update Trigger “SP_HAPUS_MAHASISWA” pada SQL 2000 IF EXISTS(SELECT name FROM sysobjects WHERE name='SP_DELETE_MAHASISWA' AND type='TR') DROP TRIGGER SP_DELETE_MAHASISWA GO Create TRIGGER SP_DELETE_MAHASISWA on MAHASISWA FOR DELETE As DECLARE @npm int SELECT @npm= NPM from deleted DELETE FROM HISTORY_MAHASISWA WHERE npm=@npm GO Trigger “SP_HAPUS_MAHASISWA” pada Oracle create or replace TRIGGER SP_HAPUS_MAHASISWA AFTER DELETE ON MAHASISWA REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW BEGIN DELETE FROM HISTORY_MAHASISWA WHERE NPM=:old.npm; END; Keterangan: Digunakan untuk melakukan penghapusan data pada tabel history_mahasiswa, apabila terjadi penghapusan pada tabel mahasiswa, maka tabel history_mahasiswa akan dihapus juga Cara menjalankan trigger untuk insert data pada SQL 2000: EXEC INSERT_MAHASISWA 09120054, 'basuki', 'balongsari', 677, 'surakarta', '10-May-92' Cara menjalankan trigger untuk insert data pada Oracle: call insert_mahasiswa(09120008, 'ety', 'banyu urip', 9478575, 'surabaya', '12-Apr-90'); apabila mengisi data pada tabel insert mahasiswa maka secara otomatis pada tabel history_mahasiswa punya juga terdapat data yang sama dengan tabel mahasiswa PACKAGE Package adalah suatu cara untuk memanage class-class yang kita buat. Package akan sangat bermanfaat Jika class-class yang kita buat sangat banyak sehingga perlu dikelompokkan berdasarkan kategori tertentu. Package adalah koleksi dari beberapa class dan interface yang berhubungan, dan menyediakan proteksi akses dan pengelolaan namespace. Package “PCKG” pada Oracle create or replace PACKAGE PCKG AS Procedure hapus_asisten( id_admin number ); procedure insert_assisten( id_admin number, NIM number, nama_admin varchar2, alamat_admin varchar2, tlp_admin number, tempat_lahir_admin varchar2, tanggal_lahir_admin date ); procedure insert_dosen( id_admin number, NIK number, nama_admin varchar2, alamat_admin varchar2, tlp_admin number, tempat_lahir_admin varchar2, tanggal_lahir_admin date ); Procedure hapus_dosen( NIK number ); END PCKG; create or replace PACKAGE BODY PCKG AS Procedure hapus_asisten( id_admin number ) AS BEGIN Delete from assisten where id_admin=hapus_asisten.id_admin; END hapus_asisten; Procedure insert_assisten( id_admin number, NIM number, nama_admin varchar2, alamat_admin varchar2, tlp_admin number, tempat_lahir_admin varchar2, tanggal_lahir_admin date ) AS BEGIN insert into assisten VALUES (id_admin,NIM,nama_admin,alamat_admin,tlp_admin,tempat_lahir _admin,tanggal_lahir_admin); end insert_assisten; Procedure insert_dosen( id_admin number, NIK number, nama_admin varchar2, alamat_admin varchar2, tlp_admin number, tempat_lahir_admin varchar2, tanggal_lahir_admin date ) AS BEGIN insert into dosen VALUES (id_admin,NIK,nama_admin,alamat_admin,tlp_admin,tempat_lahir _admin,tanggal_lahir_admin); end insert_dosen; Procedure hapus_dosen( NIK number ) AS BEGIN Delete from dosen where NIK=hapus_dosen.NIK; END hapus_dosen; END PCKG; Keterangan: Didalam package “PCKG” ini terdapat beberapa class dari fungsi store prosedure yaitu terdapat insert_assisten, hapus_asisten, insert_dosen, hapus_dosen). Cara menjalankan package pada Oracle: call pckg.insert_assisten(6745,65689,'susi','manukan',647847,'blitar',' 09-Apr-87'); call pckg.hapus_asisten(5466); call pckg.insert_dosen(56,43546,'noven','manukan',4646,'mojokerto','12Apr-85'); call pckg.hapus_dosen(43546); Active Database 1. STORE PROCEDURE INSERT_MAHASISWA Store procedure ini digunakan untuk melakukan penambahan data pada tabel mahasiswa INSERT_PENGAMPU Store procedure ini digunakan untuk melakukan penambahan data pada tabel pengampu INSERT_PRAKTIKUM Store procedure ini digunakan untuk melakukan penambahan data pada tabel praktikum INSERT_DAFTAR Store procedure ini digunakan untuk melakukan penambahan data pada tabel daftar DELETE_DAFTAR Store procedure ini digunakan untuk penghapusan data data pada tabel daftar HAPUS_DATA Store procedure ini digunakan untuk melakukan penghapusan seluruh data yang ada pada tabel bawa, kelolah, kelolah2, dan daftar 2. FUNCTION FN_USIA1 Function “FN_USIA1” Berfungsi untuk menghitung umur dengan tipe data (Integer) pada data yang memiliki tanggal_lahir dengan tipe data (date) 3. TRIGGER SP_INSERT_MAHASISWA Digunakan untuk melakukan penambahan data pada tabel history_mahasiswa, apabila terjadi perubahan pada tabel mahasiswa, maka tabel history_mahasiswa akan dilakukan penambahan data pula. SP_HAPUS_MAHASISWA Digunakan untuk melakukan penghapusan data pada tabel history_mahasiswa, apabila terjadi penghapusan pada tabel mahasiswa, maka tabel history_mahasiswa akan dihapus juga SP_UPDATE_MAHASISWA Digunakan untuk melakukan update data pada tabel history_mahasiswa, apabila terjadi perubahan pada tabel mahasiswa, maka tabel history_mahasiswa akan dilakukan update 4. PACKAGE PCKG Didalam package “PCKG” ini terdapat beberapa class dari fungsi store prosedure yaitu terdapat insert_assisten, hapus_asisten, insert_dosen, hapus_dosen). ERD dengan SUPERTYPES dan SUBTYPES Alamat semester Telepon Nama NPM Tempat_lahir Tanggal_lahir Nama_praktikum Id_praktikum Jumlah_sks kelas Nama_pengampu Tempat_lahir_pengampu Alamat_pengampu Id_pengampu Tanggal_lahir_pengampu Mahasiswa M Daftar M Praktikum Bawa M Pengampu Tanggal_daftar Id_bawa Id_praktikum M Id_daftar NPM Id_praktikum Id_Kelolah id_admin Id_pengampu Kelolah Id_praktikum keterangan Alamat_admin Adminku M Tlp_admin Tempat_lahir_admin Nama_admin Id_admin Tanggal_lahir_admin Asisten Dosen NIM NIK CDM (Conceptual Data Model) PENGAMPU ID_PENGAMPU Integer NAMA_PENGAMPU Variable characters (30) ALAMAT_PENGAMPU Variable characters (50) TEMPAT_LAHIR_PENGAMPU Variable characters (30) TANGGAL_LAHIR_PENGAMPU Date Identifier_1 ... ADMINKU MAHASISWA NPM Integer NAMA Variable characters (30) ALAMAT Variable characters (50) TELEPON Number TEMPAT_LAHIR Variable characters (30) TANGGAL_LAHIR Date Identifier_1 ... PRAKTIKUM ID_PRAKTIKUM Integer NAMA_PRAKTIKUM Variable characters (30) SEMESTER Variable characters (20) JUMLAH_SKS Variable characters (20) KELAS Variable characters (20) Identifier_1 ... jenis_admin BAWA DAFTAR KELOLAH ID_ADMIN Integer NAMA_ADMIN Variable characters (30) ALAMAT_ADMIN Variable characters (50) TLP_ADMIN Number TEMPAT_LAHIR_ADMIN Variable characters (20) TANGGAL_LAHIR_ADMIN Date Identifier_1 ... DOSEN NIK Integer ASSISTEN NIM Integer PDM (Physical Data Model) PENGAMPU ID_PENGAMPU NAMA_PENGAMPU ALAMAT_PENGAMPU TEMPAT_LAHIR_PENGAMPU TANGGAL_LAHIR_PENGAMPU ... INTEGER VARCHAR2(30) VARCHAR2(50) VARCHAR2(30) DATE BAWA DAFTAR NPM INTEGER ID_PRAKTIKUM INTEGER ID_PENGAMPU INTEGER ID_PRAKTIKUM INTEGER KELOLAH2 MAHASISWA NPM NAMA ALAMAT TELEPON TEMPAT_LAHIR TANGGAL_LAHIR ... INTEGER VARCHAR2(30) VARCHAR2(50) NUMBER VARCHAR2(30) DATE PRAKTIKUM ID_PRAKTIKUM NAMA_PRAKTIKUM SEMESTER JUMLAH_SKS KELAS ... INTEGER VARCHAR2(30) VARCHAR2(20) VARCHAR2(20) VARCHAR2(20) ID_ADMIN INTEGER ID_PRAKTIKUM INTEGER KELOLAH ID_ADMIN INTEGER ID_PRAKTIKUM INTEGER DOSEN ID_ADMIN NIK NAMA_ADMIN ALAMAT_ADMIN TLP_ADMIN TEMPAT_LAHIR_ADMIN TANGGAL_LAHIR_ADMIN ... INTEGER INTEGER VARCHAR2(30) VARCHAR2(50) NUMBER VARCHAR2(20) DATE ASSISTEN ID_ADMIN NIM NAMA_ADMIN ALAMAT_ADMIN TLP_ADMIN TEMPAT_LAHIR_ADMIN TANGGAL_LAHIR_ADMIN ... INTEGER INTEGER VARCHAR2(30) VARCHAR2(50) NUMBER VARCHAR2(20) DATE KETERANGAN RELASI TABEL: Terdapat 4 Entity, yaitu: Mahasiswa, Praktikum, Pengampu, dan Admin Terdapat 3 Relasi, yaitu: Daftar, Kelola, Bawa Admin atau Pengelolah sistem dibagi menjadi 2 jenis: Asisten dan Dosen setiap praktikum dibawai oleh dosen pengampu mata kuliah praktikum setiap mahasiswa mendaftar praktikum memiliki detail pendaftaran, yang didalamnya melibatkan entity mahasiswa dan praktikum seluruh sistem pendaftaran praktikum memiliki detail pengelolahan praktikum, yang mana didalamnya melibatkan entity praktikum dan admin