DATABASE RUMAH SAKIT 1. Objek yang dipakai a. Pien b. Dokter c. Ruang d. Petug e. Rawat_inap f. Pembayaran 2. Penentuan Entit a) Petug : Menyimpan informi identit dari petug jaga b) Pien : Menyimpan informi identit dari pien c) Dokter : Menyimpan informi identit dari dokter d) Ruang : Menyimpan informi identit dari ruang e) Rawat inap : Menyimpan informi apabila terdapat pien yang perlu rawat ina p f) Pembayaran : Menyimpan informi dari administri pembayaran pien 3. Script Tabel-tabel a. Pien CREATE TABLE pien ( kode_pien CHAR(12) NOT NULL, kode_dokter CHAR(12) NOT NULL, nama_pien VARCHAR(60) NOT NULL, jenis_kelamin CHAR(1) NOT NULL, keluhan VARCHAR(30), PRIMARY KEY(kode_pien) b) Dokter CREATE TABLE dokter( kode_dokter CHAR(12) NOT NULL, nama_dokter VARCHAR(30) NOT NULL, spesialisi VARCHAR (20) NOT NULL, PRIMARY KEY(kode_dokter) c) Ruang CREATE TABLE ruang( kode_ruang CHAR(12) NOT NULL, nama_ruang VARCHAR(60) NOT NULL, kel VARCHAR(12) NOT NULL, PRIMARY KEY(kode_ruang) d) Petug CREATE TABLE petug( kode_petug CHAR(12) NOT NULL, nama_petug VARCHAR(30) NOT NULL, jam_jaga CHAR(20) NOT NULL, PRIMARY KEY(kode_petug) e) Rawat_inap CREATE TABLE rawat_inap( kode_rawat_inap CHAR(12) NOT NULL, nama_pien VARCHAR(30) NOT NULL, kode_ruang VARCHAR(12) NOT NULL, PRIMARY KEY(kode_rawat_inap)
f) Pembayaran CREATE TABLE pembayaran( kode_pembayaran CHAR(12) NOT NULL, kode_pien CHAR(12) NOT NULL, kode_petug CHAR(12) NOT NULL, jumlah_harga INT(30) NOT NULL, kode_rawat_inap VARCHAR(5) NOT NULL, PRIMARY KEY(kode_pembayaran) 4. Relationship antar tabel 1. Sub Query Scalar subquery select * from pien where keluhan = (select keluhan from pien where kode_pien = 1004 Multiple Row Subquery Operator IN select p.kode_pien, p.nama_pien from pien p where p.kode_pien IN (select kode_pien from pembayaran Operator ANY / SOME select * from pembayaran where jumlah_harga < any (select jumlah_harga from pembayaran where jumlah_harga = 4000000 Operator ALL select * from pembayaran where jumlah_harga < all (select jumlah_harga from pembayaran where jumlah_harga = 5000000 Multiple Column Subquery select * from pembayaran where (kode_pien,jumlah_harga) IN (select kode_pien,jumlah_harga from pembayaran where kode_petug = '22' Operator EXISTS dan NONEXISTS select * from pien p where exists (select * from dokter d where p.keluhan = d.spesialisi Subquery dan Fungsi agregat
select * from pembayaran where jumlah_harga = (select max(jumlah_harga) from pembayaran Subquery dan join select d.nama_dokter,d.spesialisi from dokter d where d.kode_dokter in (select kode_dokter from pien CONTOH APLIKASI 1. Dapatkan data pien yang jenis kelaminnya sama dengan adi SELECT*from pien WHERE jenis_kelamin = (SELECT jenis_kelamin from pien WHERE nama_pien="adi" 2. Mengambil nama pien yansg spesialisi dokter sama dengan keluhan pien SELECT DISTINCT dokter.nama_dokter, pien.nama_pien FROM dokter INNER JOIN pien ON dokter.kode_dokter=pien.kode_dokter ORDER BY nama_dokter; 2. Reli dan Join Inner join select * from rawat_inap inner join ruang on rawat_inap.kode_ruang = ruang.kode_ruang; select rawat_inap.nama_pien, ruang.nama_ruang from rawat_inap inner join ruang on rawat_inap.kode_ruang = ruang.kode_ruang; Left Outer Join select * from rawat_inap ri left outer join ruang r on ri.kode_ruang = r.kode_ruang; Full outer join select * from rawat_inap ri left outer join ruang r on ri.kode_ruang = r.kode_ruang union select * from rawat_inap ri right outer join ruang r on ri.kode_ruang = r.kode_ruang; Cross join select * from rawat_inap cross join ruang; SELECT DISTINCT dokter.nama_dokter, dokter.spesialisi, pien.nama_pien, p ien.keluhan FROM dokter
INNER JOIN pien ON dokter.kode_dokter=pien.kode_dokter ORDER BY nama_dokter; SELECT * FROM pien WHERE keluhan = (SELECT keluhan FROM pien WHERE nama_pien="lily" HAVING (nama_pien NOT LIKE 'Lily') CONTOH APLIKASI 1. Menampilkan semua nama pien yang dirawat oleh dokter tertentu select dokter.nama_dokter,dokter.kode_dokter,pien.nama_pien from pien,dokter where pien.kode_dokter = dokter.kode_dokter; 2. Menampilkan nama pien yang dirawat oleh dokter dengan kode 115 select dokter.nama_dokter,dokter.kode_dokter,pien.nama_pien from pien,dokter where pien.kode_dokter = '115' and dokter.kode_dokter='115'; 3. Menghitung jumlah pien yang dirawat oleh ming ming dokter Scrip : select kode_dokter,count(*) jumlah_pien from pien group by kode_dokter; 3. Stored Procedure CREATE PROCEDURE getpien() SELECT * FROM pien; DELIMITER; CREATE PROCEDURE ruangpien(in ruang INT(2)) SELECT * FROM rawat_inap WHERE kode_ruang = ruang; CREATE PROCEDURE ruangdanrawat(in ru VARCHAR(2), IN RA VARCHAR(5))
SELECT * FROM rawat_inap WHERE kode_ruang = ru AND kode_rawat_inap = ra; PARAMETER IN OUT CREATE PROCEDURE jkp (INOUT jumlah VARCHAR(5)) SELECT COUNT(kode_pien) INTO jumlah FROM pien WHERE jenis_kelamin = jumlah; END// DELIMITER; CREATE PROCEDURE peringatan ( IN kode INT(5), IN nama VARCHAR(30), keluhan_p VARCHAR(30) ) DECLARE peringatan VARCHAR(30 IF ((SELECT COUNT(kode_pien) FROM pien WHERE kode = kode_pien)=0) THEN SET peringatan = 'Data ditambah'; INSERT INTO pien VALUES (kode, nama, keluhan_p ELSE SET peringatan = 'Data diubah'; UPDATE pien SET nama_pien=nama, keluhan=keluhan_p WHERE kode_pien = kode; END IF; SELECT peringatan; 4. TRIGGER CREATE TRIGGER kenaikantarif BEFORE INSERT ON pembayaran FOR EACH ROW SET NEW.jumlah_harga = NEW.jumlah_harga + 50000;
5. VIEW create view vgetpsn select * from pien; Misalkan untuk mencari mahiswa yang berjenis kelamin P Nested View create view vdk select * from dokter Misalkan untuk memanggil dokter dengan kode 115 create view vdk1 select * from vdk WHERE kode_dokter = 115; Updatable view create view vupdate select * from pien CREATE VIEW vpien AS SELECT * FROM pien; SELECT * FROM vpien WHERE jenis_kelamin = 'P' AND tgl_muk='23/10/2009'; INSERT INTO `dokter` VALUES ('D01','andi','gigi'), ('D02','hendra','jantung'), ('D03','ayu','gizi'), ('D04','huda','otak'), ('D05','tono','paru-paru' INSERT INTO `pien` VALUES ('P01','D01','sultan','P','sakit gigi'), ('P02','D02','han','P','sakit jantung'), ('P03','D03','nia','L','busung lapar'), ('P04','D04','tini','L','kangker otak'), ('P05','D03','budi','P','anemia' INSERT INTO `pembayaran` VALUES ('B01','P03','T02',300000,'I01'), ('B02','P02','T01',5000000,'I05'), ('B03','P05','T02',500000,'I02'), ('B04','P04','T04',3000000,'I03'), ('B05','P01','T05',200000,'I04'
INSERT INTO `petug` VALUES ('T01','ahmad','08.00-16.00'), ('T02','alfian','16.00-00.00'), ('T03','tika','00.00-08.00' INSERT INTO `rawat_inap` VALUES ('I01','nia','R02'), ('I02','budi','R03'), ('I03','tini','R01'), ('I04','sultan','R03'), ('I05','han','R01' INSERT INTO `rawat_inap` VALUES ('R01','melati','A'), ('R02','mawar','B'), ('R03','cempaka','C'