TUGAS BASIS DATA LANJUT Sistem Informasi Rumah Sakit
OLEH : Ayu Dian
08120038
Dwi Cahyono 08120045
TEKNIK INFORMATIKA UNIVERSITAS WIJAYA KUSUMA SURABAYA JAWA TIMUR 2011
Q: Apa itu function? Ada berapa macam? Jelaskan bedanya! A: Function adalah sebuah bagian potongan dari kode sekuensial. Sebuah function dibuat dengan tujuan membuat sebuah bundel atau berkas yang baru sebagai penyelesaian masalah, seperti perubahan tipe data, operasi logika, perhitungan artimetika, dan operator baru beserta perubahannya. Bila menulis kode dalam bentuk function, maka kode tersebut akan dapat dibagi-bagikan dan juga digunakan lagi untuk project lain. Selain itu, kode tersebut akan jauh lebih singkat dan lebih mudah untuk dipahami. Ada 3 macam function, yaitu : 1.
Rowset function Fungsi ini mengembalikan sebuah objek yang dapat digunakan sebagai table reference dalam statement TSQL
2.
Aggregate function Fungsi ini beroperasi dari sejumlah nilai tapi menghasilkan nilai ringkas, tunggal.
3.
Scalar function Fungsi ini mengoperasikan suatu nilai dan menghasilkan nilai tunggal
Berdasarkan hasilnya function ada 2, yaitu : 1.
Deterministic : selalu menghasilkan nilai yang sama tiap kali dipanggil dengan nilai input tertentu Semua fungsi built-in aggregate dan string deterministic (kecuali CHARINDEX atau PATINDEX) Contoh: SIN, COS, FLOOR, ISNULL, POWER, DAY, MONTH, YEAR,
2.
Non Deterministic : bisa menghasilkan nilai yang berbeda tiap kali dipanggil dengan nilai input tertentu Semua fungsi configuration, cursor, metadata, security, sistem statistik Contoh: @@ERROR, GETDATE, IDENTITY, DATENAME, USER_NAME
Q: Apa itu package? Jelaskan dan beri contoh! A: Package (ORACLE) adalah kumpulan dari fungsi dan procedure. Tiap package harus terdiri dari dua obyek, yaitu package body dan package specification. Package :
Package body :
Package (SQL) adalah sebuah schema object yang mengelompokkan PL/SQL types, items, dan subprograms, yang terkait secara logikal. Packages biasanya memiliki dua
bagian, sebuah specification dan sebuah body, meskipun kadangkala body tersebut tidak diperlukan. Specification (atau spec) merupakan antarmuka terhadap aplikasi-aplikasi kita; ia mendeklarasikan types, variables, constants, exceptions, cursors, dan subprograms yang tersedia untuk digunakan. Body secara penuh mendefinisikan cursors dan subprograms, dan juga mengimplementasikan spec. Contoh Sebuah PL/SQL Package Dalam contoh di bawah ini, kita mem-package sebuah record type, sebuah cursor, dan dua
procedure
kepegawaian.
Perlu
diingat
bahwa
procedure
hire_employee
menggunakan database sequence empno_seq dan function SYSDATE untuk menambahkan sebuah employee number baru dan hire date. CREATE OR REPLACE PACKAGE emp_actions AS -- spec TYPE EmpRecTyp IS RECORD (emp_id INT, salary REAL); CURSOR desc_salary RETURN EmpRecTyp; PROCEDURE hire_employee ( ename VARCHAR2, job VARCHAR2, mgr NUMBER, sal NUMBER, comm NUMBER, deptno NUMBER); PROCEDURE fire_employee (emp_id NUMBER); END emp_actions; CREATE OR REPLACE PACKAGE BODY emp_actions AS -- body CURSOR desc_salary RETURN EmpRecTyp IS SELECT empno, sal FROM emp ORDER BY sal DESC; PROCEDURE hire_employee ( ename VARCHAR2,
job VARCHAR2, mgr NUMBER, sal NUMBER, comm NUMBER, deptno NUMBER) IS BEGIN INSERT INTO emp VALUES (empno_seq.NEXTVAL, ename, job, mgr, SYSDATE, sal, comm, deptno); END hire_employee; 6
PROCEDURE fire_employee (emp_id NUMBER) IS BEGIN DELETE FROM emp WHERE empno = emp_id; END fire_employee; END emp_actions; Hanya deklarasi di dalam package yang terlihat dan dapat dikses terhadap aplikasi. Detil implementasi di dalam package body disembunyikan dan tidak dapat diakses. Jadi, kita dapat mengubah body (implementation) tanpa harus meng-compile ulang programprogram yang memanggilnya.
tglmasuk
ERDTingkat Lanjut Id_polklinik
alamatskrg
telp
email Tanggal cek up
alamatasal
Tanggal masuk
Id_pasien Id_kunjungan
Rawat jalan
tgllahir
punya
Tanggal keluar
poliklinik
Kunjungan
Rawat inap
tempatlahir Id_poliklinik hasil
lakukan
Tanggal_kunju ng
keluhan
Nama poliklinik
userlog
o passwdlog
punya
nama
pasien
resep
Id pasien
Tgl_berdiri
punya punya
obat
alamat
Id_obat
id_progdi
Nama_progdi dokter
tgl
Nama_obat satu
pekerjaan
kegunaan
kode_progdi
spesialis
Id_dokter
alamat
butuh nama
pembayaran Id_bayar
Id_kunjung jumlah No_nota
Id_polklinik
CDM (Conceptual Data Model) tb_resep
kunjungan
pasien id_pasien
Variable characters (1) <M> nama_pasien Variable characters (1) ttl Variable characters (10) alamat Variable characters (1) pekerjaan Characters (10)
lakukan
id_kunjungan Variable characters (10) <M> id_pasien Variable characters (10) tanggal_kunjungan Variable characters (10) keluhan Variable characters (10) id_poliklinik Variable characters (10)
Reference_2
id_resep Variable characters (10) <M> id_kunjungan Variable characters (10) tanggal_resep Variable characters (10) total_resep Variable characters (10) Key_1
Key_1
Key_1
Relationship_10 Relationship_4
Relationship_3
Relationship_6
tb_pembayaran id_bayar Characters (10) <M> id_kunjunagan Characters (10) nomer_nota Variable characters (10) jumlah Variable characters (10)
Relationship_5
rekam id_rekam Characters (10) <M> id_kunjungan Variable characters (10) tanggal_rekam Variable characters (10) Relationship_9 keluhan Variable characters (10)
Key_1
Key_1 poliklinik id_poliklinik Variable characters (10) <M> nama_poliklinik Characters (20)
Relationship_7
dokter id_dokter Variable characters (10) <M> nama_dokter Variable characters (10) ttl Variable characters (10) alamat Variable characters (1) spesialis Variable characters (10) id_poliklinik Variable characters (10) Key_1
Key_1
tb_obat id_obat Variable characters (10) <M> nama_obat Variable characters (10) keterangan Variable characters (10) satuan Variable characters (10) Key_1
tb_resepobat Relationship_8
id_resepobat Characters (10) <M> jumlah_obata Variable characters (10) harga_obat Variable characters (10) Key_1
PDM (Physical Data Model) kunjungan id_kunjungan id_dokter id_pasien2 id_resep id_bayar pol_id_poliklinik id_rekam id_pasien tanggal_kunjungan keluhan id_poliklinik
pasien id_pasien id_bayar nama_pasien ttl alamat pekerjaan
varchar(1) char(10) varchar(1) varchar(10) varchar(1) char(10)
varchar(10) varchar(10) varchar(1) varchar(10) char(10) varchar(10) char(10) varchar(10) varchar(10) varchar(10) varchar(10)
tb_resep id_resep id_kunjungan tanggal_resep total_resep
varchar(10) varchar(10) varchar(10) varchar(10)
tb_pembayaran id_bayar id_pasien id_kunjungan id_kunjunagan nomer_nota jumlah
char(10) varchar(1) varchar(10) char(10) varchar(10) varchar(10)
rekam id_rekam id_kunjungan2 id_kunjungan tanggal_rekam keluhan
char(10) varchar(10) varchar(10) varchar(10) varchar(10)
dokter id_dokter id_poli klinik2 nama_dokter ttl alamat spesialis id_poli klinik
poliklinik id_poliklinik varchar(10) nama_poliklinik char(20)
tb_obat id_obat id_resepobat nama_obat keterangan satuan
varchar(10) char(10) varchar(10) varchar(10) varchar(10)
tb_resepobat id_resepobat id_resep jumlah_obata harga_obat
char(10) varchar(10) varchar(10) varchar(10)
varchar(10) varchar(10) varchar(10) varchar(10) varchar(1) varchar(10) varchar(10)
Dalam sistem informasi ini terdapat beberapa store procedure, trigger dan function, antara lain:
a.
Function Terdapat 3 function, antara lain : - Function pasien
b.
-
Function dokter
-
Function poliklinik
Trigger Terdapat 2 trigger, yaitu : -
Trigger delete pasien, berfungsi apabila data pada table pasien di delete maka data yang berhubungan dengan data pasien yang di delete tersebut ikut dihapus.
-
Trigger update rekam, berfungsi apabila table pada rekam diupdate maka secara otomatis pada table kunjungan pun juga akan terupdate.
c.
Store Procedure Terdapat 6 store procedure, yang fungsinya adalah untuk memudahkan pengisian data pada masing-masing table (store procedure untuk insert), yaitu : - Store procedure pasien -
Store procedure resep
-
Store procedure kunjungan
-
Store procedure rekam
-
Store procedure obat
-
Store procedure pembayaran
- Store procedure poliklinik