2. Penentuan Entitas
A. Petugas : Menyimpan informasi identitas dari petugas jaga
B. Pasien : Menyimpan informasi identitas dari pasien
C. Dokter : Menyimpan informasi identitas dari dokter
D. Ruang : Menyimpan informasi identitas dari ruang
E. Rawat inap : Menyimpan informasi apabila ada pasien yang perlu rawat inap
F. Pembayaran : Menyimpan informasi dari administrasi pembayaran pasien. \
3. Tabel.
A. Pasien
CREATE TABLE pasien (
kode_pasien CHAR(12) NOT NULL,
kode_dokter CHAR(12) NOT NULL,
nama_pasien VARCHAR(60) NOT NULL,
jenis_kelamin CHAR(1) NOT NULL,
keluhan VARCHAR(30),
PRIMARY KEY(kode_pasien)
);
B. Dokter
CREATE TABLE dokter(
kode_dokter CHAR(12) NOT NULL,
nama_dokter VARCHAR(30) NOT NULL,
spesialisasi 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,
kelas VARCHAR(12) NOT NULL,
PRIMARY KEY(kode_ruang)
);
D. Petugas
CREATE TABLE petugas(
kode_petugas CHAR(12) NOT NULL,
nama_petugas VARCHAR(30) NOT NULL,
jam_jaga CHAR(20) NOT NULL,
PRIMARY KEY(kode_petugas)
);
E. Rawat Inap
CREATE TABLE rawat_inap(
kode_rawat_inap CHAR(12) NOT NULL,
nama_pasien 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_pasien CHAR(12) NOT NULL,
kode_petugas CHAR(12) NOT NULL,
jumlah_harga INT(30) NOT NULL,
kode_rawat_inap VARCHAR(5) NOT NULL,
PRIMARY KEY(kode_pembayaran)
);
Scalar subquery
select * from pasien
where keluhan =
(select keluhan
from pasien
where kode_pasien = 1004);
Multiple Row Subquery
Operator IN
select p.kode_pasien, p.nama_pasien
from pasien p
where p.kode_pasien IN
(select kode_pasien from pembayaran);
Operator ALL
select * from pembayaran
where jumlah_harga < all
(select jumlah_harga
from pembayaran
where jumlah_harga = 5000000);
Inner join
select * from rawat_inap
inner join ruang
on rawat_inap.kode_ruang = ruang.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;
Script:
SELECT DISTINCT dokter.nama_dokter, dokter.spesialisasi, pasien.nama_pasien, pas
ien.keluhan
FROM dokter
Script:
SELECT * FROM pasien
WHERE keluhan =
(SELECT keluhan FROM pasien
WHERE nama_pasien="Lily"
HAVING (nama_pasien NOT LIKE 'Lily'));
4. View
Script :
create view vGetPsn
as
select * from pasien;
Updatable view
create view vUpdate
as
select * from pasien
Script :
CREATE VIEW vpasien
AS
SELECT * FROM pasien;
SELECT * FROM vpasien
WHERE jenis_kelamin = 'P' AND tgl_masuk='23/10/2009';
5. Stored Procedure
Script:
DELIMITER //
CREATE PROCEDURE getPasien()
BEGIN
SELECT * FROM pasien;
END //
DELIMITER;
Script:
DELIMITER //
CREATE PROCEDURE ruangpasien(IN ruang INT(2))
BEGIN
SELECT *
FROM rawat_inap
WHERE kode_ruang = ruang;
END //
DELIMITER ;
Script:
DELIMITER //
CREATE PROCEDURE ruangdanrawat(IN ru VARCHAR(2), IN RA VARCHAR(5))
BEGIN
SELECT *
FROM rawat_inap
WHERE kode_ruang = ru
AND kode_rawat_inap = ra;
END //
DELIMITER ;
PARAMETER IN OUT
DELIMITER //
Script :
DELIMITER //
CREATE PROCEDURE peringatan (
IN kode INT(5),
IN nama VARCHAR(30),
keluhan_pas VARCHAR(30)
)
BEGIN
DECLARE peringatan VARCHAR(30);
IF ((SELECT COUNT(kode_pasien) FROM pasien WHERE kode = kode_pasien)=0) THEN
SET peringatan = 'Data ditambah';
INSERT INTO pasien
VALUES (kode, nama, keluhan_pas);
ELSE
SET peringatan = 'Data diubah';
UPDATE pasien SET nama_pasien=nama, keluhan=keluhan_pas
WHERE kode_pasien = kode;
END IF;
SELECT peringatan;
END //
DELIMITER ;