Anda di halaman 1dari 65

Perancangan Sistem Database

RUMAH SAKIT

Laporan untuk Memenuhi Tugas Akhir Matakuliah Praktikum Basis Data


yang dibimbing oleh Ibu Triyanna Widiyaningtyas, S.T, M.T.

Oleh:
Mohammad Ardy Audya A. (180535632540)
Muhammad Adhitya Widhianto (180535632530)
Muhammad Tatag Adi N. (180535632517)
Naziro (180535632589)

S1 TI ‘18 OFF B

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 TEKNIK INFORMATIKA
APRIL 2019
A Latar Belakang
Rumah Sakit adalah tempat untuk melakukan pengobatan atau
penyembuhan dengan bantuan dokter dan tenaga yang berpengalaman. Juga
dilengkapi dengan berbagai fasilitas perawatan. Rumah Sakit dapat dimiliki
oleh perusahaan swasta dan juga dapat dimiliki oleh negara . Rumah sakit
juga mengalami perkembangan dari zaman ke-zaman semakin bagus
perlengkapan dan fasilitasnya.
Untuk saat ini, tingkat kebutuhan masyarakat terhadap rumah sakit
sangatla tinggi dikarenakan banyaknya penyakit baru yang muncul dan juga
virus – virus baru bermunculan, juga daya tahan tubuh manusia semakin hari
semakin menurun menyebabkan mudah terserang pennyakit . Meski sudah
adanya vaksinasi tetapi tetap saja banyak yang terjangkit penyakit sehingga
perlu adanya Rumah Sakit
Alasan itulah yang mendorong penulis untuk melakukan studi
penelitian atau rancangan basis data untuk mendukung adaya program rumah
sakit ini. Pada kasus ini, penulis akan merancang sistem basis data Rumah
Sakit berbasis MySQL PHP MyAdmin dengan tujuan untuk mempermudah
creator atau staff Rumah Sakit menjadi lebih mudah untuk melakukan
tuganya lebih maksimal pada platform khusus ini. Basis data yang
dikembangkan memiliki struktur seperti berikut ini.
1. Tabel “tb_dokter” yang berisikan data dokter yang memeriksa pasien,
kd_dokter, nama_dokter, alamat_dokter dan spesialiasi_dokter
2. Tabel “tb_pasien” yang berisi data dari pasien yang berobat,
kd_pasiendan, nama_pasien,alamat_pasien,keluhan dan kd_dokter.
3. Tabel “tb_pembayaran” berisikan data pembayaran pasien dan petugas
yang melayaninya yang berisi, kd_pembayaran, kd_pasien,
jml_pembayaran dan kd_petugas.
4. Tabel “tb_petugas” yang berisi data petugas yang melayani pembayaran
yang berisi, kd_petugas, nama_petugas, dan alamat_petugas.
5. Tabel “tb_rawat_inap” yang berisi data pasien yang dirawat inap dan
ruangannya yang berisi kolom, kd_rawat_inap, kd_ruang dan kd_pasien
6. Tabel “tb_ruang” yang memuat data ruangan rawat inap yang berisi, kd-
ruang dan nama_ruang.
B Tujuan
1. Mempermudah proses dalam pelayanan di rumah sakit.
2. Mengefisiensi ruang penyimpanan data
3. Mengamankan data terhadap kemungkinan penambahan, pengubahan,
pengerusakan dan gangguan – gangguan lain.
4. Data yang diperoleh lebih relevan.
5. Mengurangi duplikasi data pada rumah sakit.
C Dasar Teori

- SQL
1. SQL (Structured Query Language)
SQL (atau query language) adalah sebuah bahasa yang digunakan
untuk merequest informasi dari basis data, bahasa ini sudah disediakan
oleh DBMS (Database Management System). Konstruksi SQL
terbentuk atas kombinasi relational-algebra dan relational-calculus.

SQL terdiri dari beberapa komponen, dua di antaranya yang sangat


fundamental adalah DDL (Data Definition Language) dan DML (Data
Manipulation Language).

2. DML (Data Manipulation Language)


DML merupakan bagian dari SQL yang digunakan untuk
melakukan manipulasi data dalam database seperti menambah,
memodifikasi, menghapus, dan mengambil data di dalam basis data.
Contoh perintah DML pada MySQL adalah INSERT, UPDATE,
DELETE, dan SELECT.
 INSERT
Perintah insert digunakan untuk memasukkan data ke dalam tabel
Sintaks:
INSERT INTO ‘namatabel’ (‘field_1’, ‘field_2’,’…’,
‘field_n’)
VALUES (nilai1, nilai2, …, nilai n)

Contoh :
Misalkan tabel jurusan memiliki field id dan nama, maka
pernyataan SQL untuk penambahan data dituliskan sebagai berikut:
INSERT INTO jurusan (id, nama)
VALUES (Nilai-id, Nilai-nama)
 UPDATE
Perintah update digunakan untuk memperbaiki atau memodifikasi
data dalam suatu baris pada suatu tabel
Sintaks :
UPDATE ‘namatabel’
SET field_1 = nilai_1, field_2 = nilai_2, …, field_n
= nilai_n
WHERE kondisi
Dimana : kondisi adalah kriteria data yang akan diperbaiki
 DELETE
Perintah delete digunakan untuk melakukan penghapusan record
dari suatu tabel yang memiliki kondisi yang dinyatakan dalam
pernyataan kondisi.
Sintaks :
DELETE FROM ‘nama_tabel’
WHERE kondisi
 SELECT
Perintah select digunakan untuk menampilkan isi atau pengambilan
data dari suatu tabel.
Sintaks :
SELECT field_1, field_2, …, field_n
FROM ‘nama_tabel’
WHERE kondisi

- Fungsi Agregat
1. Fungsi Agregat
Fungsi Agregat adalah fungsi yang menerima koleksi nilai dan
mengembalikan nilai tunggal sebagai hasilnya. Lima jenis fungsi
agregat diantaranya :
Fungsi Deskripsi
COUNT Mengembalikan jumlah (banyaknya atau kemunculan)
nilai di suatu kolom
SUM Mengembalikan jumlah (total atau sum) nilai di suatau
kolom
AVG Mengembalikan rata- rata (average) nilai di suatu
kolom
MIN Mengembalikan nilai terkecil (minimal) di sauatu
kolom
MAX Mengembalikan nilai terbesar (maksimal) di suatu
kolom

2. Keyword DISTINCT
Keyword DISTINCT digunakan untuk mengeliminasi duplikasi
kemunculan data yang sama.
Sintaks :
SELECT DISTINCT A1, A2, ..., An
FROM r1, r2, r3, ..., rm
WHERE P
3. Pengelompokan
Operasi non-trivial lainnya di dalam pengambilan data adalah
pengelompokan. Operasi ini direpresentasikan melalui klausa
GROUP BY dan diikuti nama field.
Sintaks :
SELECT A1, A2, ..., An
FROM r1, r2, r3, ..., rm
GROUP BY A1, A2, ..., An
4. Having
Pada saat bekerja dengan fungsi agregat, terkadang diperlukan
klausa WHERE untuk menspesifikasikan hasil. Sayangnya, klausa
WHERE tidak boleh mengandung fungsi agregat. Sebagai solusi,
kita bisa memanfaatkan klausa HAVING. Penggunaan klausa ini
mirip WHERE.
Sintaks :
SELECT A1, COUNT(A1)
FROM r
GROUP BY A1
HAVING P;

- Relasi & Join


1. Relationship
Relationship adalah suatu hubungan antara beberapa entitas. Konsep ini
sangat penting sekali di dalam basis data, di mana memungkinkan
entitas-entitas untuk saling berhubungan satu sama lain.

Didalam sebuah relationship, primary key memiliki peran penting untuk


mengaitkan entitas. Selain itu, primary key juga digunakan untuk
mendefinisikan batasan keterhubungan.

2. Join
Join merupakan salah satu kontruksi dasar dari SQL dan basis data.
Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih
table di dalam basis data relasional dan menghasilkan sebuah tabel
(temporary) baru yang disebut sebagai joined tabel.
Join dapat diklasifikasikan ke dalam dua jenis, yaitu inner join dan
outer join.
a. Inner Join
Inner join pada dasarnya adalah menemukan persimpangan
(intersection) antara dua buah tabel.
Sintaks :
SELECT A1, A2, . . ., An
FROM r1
INNER JOIN r2
ON r1.join_key = r2.join_key

Sintaks Inner Join secara implisit :


SELECT A1, A2, . . ., An
FROM r1, r2
WHERE r1.join_key = r2.join_key
b. Outer Join
Outer join dibagi ke dalam tiga jenis, yaitu left outer join, right outer
join dan full outer join.

Left Outer Join


Left outer join atau left join mengembalikan semua nilai dari
table kiri ditambah dengan nilai dari tabel kanan yang sesuai
atau NULL jika tidak ada nilai yang sesuai.
Sintaks :
SELECT A1, A2, . . ., An
FROM r1
LEFT OUTER JOIN r2
ON r1.join_key = r2.join_key

Right Outer Join


Right outer join atau right join pada dasarnya sama seperti left
join, namun dalam bentuk terbalik, kanan dan kiri.
Sintaks :
SELECT A1, A2, . . ., An
FROM r1
RIGHT OUTERR JOIN r2 ON r1.join_key
= r2.join_key

Full Outer Join


Full outer join atau full join pada hakikatnya merupakan
kombinasi dari left dan right join.
Sintaks :
SELECT A1, A2, . . ., An
FROM r1
FULL OUTER JOIN r2
ON r1.join_key = r2.join_key
Selain empat jenis join yang utama di atas, masih ada beberapa
variasi join lainnya, seperti CROSS JOIN (cartesian product),
NATURAL JOIN dan sebagainya.
Perlu juga diperhatikan, join bisa diimplementasikan dalam bentuk
bersarang
(nested join). Jadi, di dalam sebuah operasi join bisa terdapat operasi
join lainnya.
3. Union
MySQL Union adalah statemaen yang mengkombinasikan dua buah
atau lebih resulset dari beberapa table dengan statemen SELECT
sehingga menjadi satu buah resulset. Union Statemen memiliki
beberapa ketentuan sebagai berikut :
a. Jumlah kolom/field dari setiap statemen SELECT harus sama.
b. Tipe data kolom/field dari setiap statemen SELECT harus
kompatibel.
Secara default statemen UNION akan menghapus semua record
duplikat dari resulset. Apabila Anda ingin record duplikat tetap di
tampilkan maka pada resulset tuliskan secara explisit UNION ALL.
Sintaks :
SELECT A1, A2, . . .An
FROM r1 UNION
SELECT A1, A2, . . .An
FROM r2;

SELECT A1, A2, . . .An


FROM r1 UNION ALL SELECT A1, A2, . . .An
FROM r2;

- Subquery
Subquery (disebut juga subselect atau nested select / query atau inner-
select) adalah query SELECT yang ada di dalam perintah SQL lain
misalnya SELECT, INSERT, UPDATE, atau DELETE. Keberadaan
subquery secara nyata mampu menyederhanakan persoalan-persoalan
rumit berkaitan query data. Sebagai contoh, misal terdapat pernyataan
sebagai berikut:

“Dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa


dengan nim 104”

Secara normal, diperlukan dua tahapan untuk menyelesaikan kasus di


atas.Pertama adalah mendapatkan alamat dari mahasiswa yang memiliki
nim 104. Langkah selanjutnya, baru kita bisa mengetahui data mahasiswa
yang alamatnya sama dengan mahasiswa dengan nim 104. Adapun dengan
memanfaatkan subquery, maka penyelesaian kasus di atas hanya
memerlukan sebuah query.

Pada hakekatnya, subquery sangat berguna ketika sebuah query didasarkan


pada nilai-nilai yang tak diketahui. Sintaks formal subquery diperlih atkan
sebagai berikut:

SELECT F1,F2, …, Fn
FROM t1, t2, …, tn
WHERE P
(SELECT SELECT F1,F2, …, Fn
FROM t1, t2, …, tn
WHERE P)

Subquery dapat diklasifikasikan ke dalam tiga jenis : scalar, multiple-row,


dan multiple-column.

1. Scalar Subquery

Subquery baris tunggal (scalar) hanya mengembalika n hasil satu baris


data. Bentuk subquery ini diperlihatkan seperti :

Subquery baris tunggal dapat menggunakan operator baris tunggal =,


>,>=, <, <=, atau <> .

2. Multiple-Row Subquery

Subquery baris ganda (multiple-row) mengembalikan lebih dari satu


baris data. Bentu k subquery ini diperlihatkan seperti
Subquery baris ganda dapat menggunakan operator komparasi IN,
ANY, SOME, atau ALL.

i. Operator IN
Operator IN memiliki arti : sama dengan member di dalam list.
Sebagai contoh, kita bisa menggunakan operator ini untuk
mendapatkan data dosen yang mengajar matakuliah.

ii. Operator ANY/SOME


Operator ANY / SOME memiliki arti : membandingkan suatu nilai
dengan setiap nilai yang dikembalikan oleh subquery. Misalkan kita
ingin mendapatkan data matakuliah yang memiliki sks lebih besar
dari sembarang sks matakuliah di semester 1.

iii. Operator ALL


Operator ALL memiliki arti: membandingkan suatu nilai dengan
semua nilai yang dikembalikan oleh subquery.Misal, kita ingin
mendapatkan data matakuliah yang memiliki sks lebih besar dari
semua sks matakuliah di semester 6.

3. Multiple-Column Subquery

Subquery kolom ganda (multiple-column) mengembalikan lebih dari


satu baris dan satu ko lom data. Bentuk subquery ini diperlihatkan
seperti :

- Stored Procedure

1. Stored Procedure

Stored Procedure adalah sebuah prosedur layaknya subprogram


(subrutin) di dalam bahasa pemrograman reguler yang tersimpan di
dalam katalog basis data. Beberapa kelebihan yang ditawarkan stored
procedure antara lain : meningkatakan performa, mereduksi trafik
jaringan, reusable, dan meningkatkan kontrol sekuriti.

Di balik kelebihan tersebut, stored procedure juga memiliki


kekurangan. Diantaranya adalah berpotensi meningkatkan beban server
dan penulisannya tidak mudah (memerlukan pengetahuan yang
spesifik).

Contoh sintaks stored procedure :

CREATE PROCEDURE sp_name ([proc_parameter[,…]])

[characteristic …] routine_body

Untuk memanggil sotred preocedure, digunakan perintah CALL


(beberapa DBMS ada yang menggunakan EXECUTE).

CALL sp name

Dalam Implementasinya, penggunaan stored procedure sering


melibatkan parameter. Di MySQL, parameter stored procedure
dibedakan menjadi tiga mode : IN, OUT, dan INOUT.

IN

Parameter yang merupakan mode default ini mengindikasikan


bahwa sebuah parameter dapat di-pass ke dalam stored procedure
tetapi nilainya tidak dapat diubah (dari dalam stored procedure

OUT

Mode ini mengindikasikan bahwa stored procedure dapat


mengubah parameter dan mengirimkan kembali ke program
pemanggil.

INOUT

Mode ini pada dasarnya merupakan kombinasi dari mode IN dan


OUT.
Sintaks pendefinisan parameter diperlihatkan sebagai berikut :

MODE param name param tyope(param size)

Stored procedure dapat mencerminkan beragam operasi data, misalnya


seleksi,

penambahan, pengubahan, penghapusan, dan juga operasi – oprasi


DDL.

Seperti halnya procedure di dalam bahasa pemrograman, stored


procedure juga dapat melibatkan variabel, pernyataan kondisional, dan
pengulangan.

- Trigger

1. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (prosedural)
yang dieksekusi secara otomatis sebagai respon atas suatu kejadian
berkaitan dengan tabel basis data. Kejadian (event) yang dapat
membangkitkan trigger umumnya berupa pernyataan INSERT,
UPDATE, dan DELETE. Berdasarkan ruang lingkupnya, trigger
diklasifikasikan menjadi dua jenis: row trigger dan statement trigger.
Trigger baris (row) mendefinisikan aksi untuk setiap baris tabel; trigger
pernyataan hanya berlaku untuk setiap pernyataan INSERT, UPDATE,
atau

DELETE.

Dari sisi perilaku (behavior) eksekusi, trigger dapat dibedakan


menjadi beberapa jenis; namun umumnya ada dua jenis: trigger
BEFORE dan AFTER. Sesuai penamaannya, jenis-jenis ini
merepresentasikan waktu eksekusi trigger— misalnya sebelum ataukah
sesudah pernyataan- pernyataan yang berkorespondensi.
Adakalanya trigger dipandang sebagai bentuk spesifik dari stored
procedure (terkait pendefinisian body). Bagaimanapun, trigger akan
dipanggil (secara otomatis) ketika event terjadi, sedangkan stored
procedure harus dipanggil secara eksplisit.

2. Trigger MySQL
MySQL mendukung fitur trigger termasuk juga stored procedure
dan view sejak versi 5.0.2 Sebagaimana objek-objek lainnya, trigger
diciptakan menggunakan pernyataan CREATE.

Sintaks pendefinisian trigger diperlihatkan sebagai berikut:


CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tb1_name FOR EACH ROW tigger_stmt

MySQL tidak mengizinkan multiple trigger dengan waktu aksi dan


event sama per tabel. Misalkan di tabel A sudah didefinisikan trigger
AFTER INSERT, maka kita tidak boleh mendefinisikan trigger AFTER
INSERT lagi; namun AFTER EDIT, AFTER DELETE, atau BEFORE
(INSERT, EDIT, dan DELETE) bisa diterima.

- View
a. VIEW
View dapat didefinisikan sebagai tabel maya (virtual) atau logical
yang terdiri dari himpunan hasil query. Tidak seperti pada umumnya
tabel di dalam basis data relasional, view bukanlah bagian dari skema
fisik. View bersifat dinamis, ia mengandung data dari tabel yang
direpresentasikannya. Dengan demikian, ketika tabel yang menjadi
sumber datanya berubah, data di view juga akan berubah.

Merujuk pada dokumentasi MySQL, sintaks pendefinisian view


diperlihatkan sebagai berikut:

CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { USER | CURRENT USER }]
[SQL SECURITY {DEFINER | INVOKER}]
VIEW view_name [(column_list)]
AS select statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
CREATE TABLE t (qty INT, price INT);
INSERT INTO t VALUES(3, 50), (5, 60);
CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM
t;
SELECT * FROM v;

Updateable VIEW

View dapat berisi read-only atau updatable. Kondisi ini sangat


dipengaruhi oleh adanya pendefinisian view itu sendiri.
Bagaimanapun,
untuk menciptakan updatable view, pernyataan SELECT yang
didefinisikan di view harus mengikuti aturan-aturan sebagai berikut :
 Pernyataan SELECT tidak boleh merujuk ke lebih dari satu tabel.
 Pernyataan SELECT tidak boleh menggunakan klausa GROUP
BY atau HAVING.

 Pernyataan SELECT harus tidak menggunakan DISTINCT.


 Pernyataan SELECT harus tidak merujuk ke view lain yang tidak
updatable.
 Pernyataan SELECT tidak boleh mengandung ekspresi apa pun,
misalnya fungsi agregat.

Pada hakikatnya, jika sistem database mampu menentukan pemetaan


balik dari skema view ke skema tabel dasar, maka view
memungkinkan
untuk di update. Dalam kondisi ini, operasi-operasi INSERT,
UPDATE
dan DELETE dapat diterapkan pada view.
D Desain Database
Dalam tabel dokter terdapat 4 buah field yaitu kd_dokter, nama_dokter,
alamat_dokter, spesialisasi_dokter. Yang dijadikan sebagai primary key adalah
kd_dokter dengan struktur sebagai berikut :

Hasil

Gambar 1. Struktur table dokter

Dalam tabel pasien terdapat 5 buah field yaitu kd_pasien, nama_pasien,


alamat_pasien, keluhan,dan kd_dokter. Yang dijadikan sebagai primary key
adalah kd_pasien dengan struktur sebagai berikut :

Gambar 2. Struktur table pasien


Dalam tabel pembayaran terdapat 4 buah field yaitu kd_pembayaran, kd_pasien,
jumlah_pembayaran, kd_petugas. Yang dijadikan sebagai primary key adalah
kd_pembayaran dengan struktur sebagai berikut :

hasil

Gambar 3. Struktur tabelpembayaran

Dalam tabel petugas terdapat 3 buah field yaitu kd_petugas, nama_petugas,


alamat_petugas. Yang dijadikan sebagai primary key adalah kd_petugas dengan
struktur sebagai berikut :

Hasil

Gambar 4. Struktur table petugas

Dalam tabel rawat_inap terdapat 3 buah field yaitu kd_rawat_inap, kd_ruang


,kd_pasien. Yang dijadikan sebagai primary key adalah kd_rawat_inap dengan
struktur sebagai berikut :

Hasil

Gambar 5. Struktur table rawat_inap


Dalam tabel ruang terdapat 2 buah field yaitu kd_ruang ,nama_ruang. Yang
dijadikan sebagai primary key adalah kd_ruang dengan struktur sebagai berikut :

hasil

Gambar 6. Struktur table petugas

Struktur Database Rumah sakit


Relasi dari ketujuh tabel pada database rumah sakit yaitu tb_pasien, ,
tb_pembayaran, tb_rawat inap, tb_dokter, tb_petugas dan tb_ruang. Dapat
ditampilkan sesuai gambar berikut :

Gambar 9 : Relasi antar tabel pada database rumah sakit


Dari diagram relationship tersebut, dapat diketahui bahwa setiap tabel memiliki
relasi dengan tabel yang lain. Cara merelasikannya adalah dengan
menghubungkan field yang merupakan Primary key sebagai reference key
dihubungkan dengan field dari tabel lain yang bertindak sebagai index key /
foreign keynya.
Primary key ditunjukkan dengan kunci berwarna kuning. Nilai dari
Primary key dan unique key adalah unique, yang artinya nilai dari key-key tersebut
tidak ada yang sama.

Gambar 10 : ERD database rumah sakit


A Implementasi Database
Dalam membuat database rumah sakit, terdapat langkah-langkah yang
harus dilakukan. Pertama adalah membuat ERD dari database seperti pada
gambar ERD database sebelumnya. Kemudian menyusun database dengan
langkah pertama adalah menulis nama database yang akan dibuat, kemudian
menentukan tabel-tabel yang akan dibuat pada database. Langkah berikutnya,
menentukan field yang harus ada pada tabel serta attribute yang akan
dijadikan primary key atau foreign key pada setiap tabel. Setelah itu, semua
tabel dalam database tersebut direlasikan seperti pada gambar relasi tabel di
atas. Setelah merancang relasi, maka hasil perancangan siap untuk disusun ke
dalam program database yang digunakan, dalam hal ini adalah MySQL.
1. Membuat Database
a. Langkah-langkah
1) Menuliskan membuat database rumah sakit menggunakan query
MySQL atau menggunakan Webmin PhpMyAdmin
2) Gunakan database yang telah dibuat dengan pernyataan SQL
b. Kode Program

c. Screenshot Hasil

2. Membuat Tabel, Memasukkan, dan Menampilkan data dokter


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel dokter
2) Memasukkan data ke tabel dokter
3) Menampilkan data tabel dokter
b. Kode Program
c
. Screenshot Hasil

3. Membuat Tabel, Memasukkan, dan Menampilkan data Pasien


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel Pasien
2) Memasukkan data ke tabel Pasien
b. Menampilkan data Pasien
c. Kode Program
d. Screenshot Hasil

4. Membuat Tabel, Memasukkan, dan Menampilkan data Pembayaran


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel Pembayaran
2) Memasukkan data ke tabel Pembbayaran
3) Menampilkan data Pembayaran kd_pembayaran(6) kd_pasien(6)
jml_pembayarann(6)kd_petugas(6)
b. Kode Program
c. Screenshot Hasil

5. Membuat Tabel, Memasukkan, dan Menampilkan data Petugas


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel Petugas
2) Memasukkan data ke tabel Petugas
3) Menampilkan data Petugas
b. Kode Program
c. Screenshot Hasil

6. Membuat Tabel, Memasukkan, dan Menampilkan data Rawat inap


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel Rawat inap
2) Memasukkan data ke tabel Rawat inap
3) Menampilkan data Rawat inap kd_rawat_inap(10) kd_ruang(10)
kd+pasien(10)
b. Kode Program

c. Screnshot Hasil

7. Membuat Tabel, Memasukkan, dan Menampilkan data Ruang


a. Langkah-langkah
1) Menuliskan pernyataan SQL untuk membuat tabel Ruang
2) Memasukkan data ke tabel Ruang
3) Menampilkan data Ruang
b. Kode Program

c. Screenshot Hasil

B Studi Kasus
SQL
1. Studi kasus 1
Menginputkan data pasien yang di rawat inap
Source Code

Tampilan

Penjelasan
Pada studi kasus tersebut untuk menginputkan data pasien dengan sintak insert
into tb_pasien values berarti table pasien. Pernaytaan Insert Into digunakan
untuk menambahkn record baru pada table pasien yang di rawat inap

2. Studi kasus 2
Menampilkan data pasien yang memiliki keluhan demam

Source code

Tampilan

Penjelasan
Pada studi kasus ini digunakan untuk menampilkan data pasien dengan sintak
select from tb_pasien Berarti table pasien. Kemudian menggunakan kluesah
Where untuk menspesifikasikan letak data di table pasien yang akan
menampilkan keluhan demam. Maka akan tampil output data demam.

3. Studi kasus 3
Menghapus data dokter
Source code

Tampilan

Penjelasan
Pada studi kasus tersebut digunakan untuk menghapus data dokter dengan
sintaks delete kemudian from tb_dokter berarti dari table dokter. Kemudian
menggunakan klausah where untuk menspesifikasikan letak data di table
dokter yang akan dihapus yaitu kode yang dihapus DOK201. Maka akan tampil
output data setelah dihapus.

4. Studi kasus 4

Dapatkan nama pasien yang di awali huruf “A”

Source code

Tampilan

Penjelasan

Pada studi kasus tersebut untuk mendapatkan nama psien yang di awali huruf
A yang menggunakan sintak Select From tb_pasien yang berarti table pasien.
Kemudian menggunakan kluesah where untuk menspesfikasikan letak data di
table pasien .Operator LIKE memungkinkan pengambilan data yang mirip atau
mendekati kata kunci.”A”. maka akan tampil output nama yang berawalan
huruf A

5. Studi kasus 5
Urutkan data petugas berdasarkan nama petugas dengan urutan menaik

Source code

Tampilan

Penjelasan

Pada studi kasus tersebut dengan sintak Select From tb_petugas yang berarti
table petugas. Kemudian menggunakan ORDER BY untuk menampilkan data
nama petugas secara urut berdasarkan abjadnya

FUNGSI AGREGAT
1. Studi kasus 6
Mendapatkan jumlah pasien berdasarkan alamat
 Script Program
SELECT alamat_pasien, COUNT(nama_pasien) AS jumlah_pasien
FROM tb_pasien GROUP BY alamat_pasien;

 Before

 After

 Penjelasan
Menggunakan fungsi COUNT untuk menghitung jumlah data,
kemudian menggunakan GROUP BY untuk mengelompokkan data
berdasarkan “alamat_pasien”

2. Studi kasus 7
Mendapatkan jumlah total pembayaran yang diterima setiap petugas
(tampilkan kode petugas)
 Script Program
SELECT kd_petugas, SUM(jml_pembayaran) AS total FROM
tb_pembayaran GROUP BY kd_petugas;

 Before

 After
 Penjelasan
Menggunakan fungsi SUM untuk menjumlahkan data berupa
jumlah pembayaran, lalu dikelompokkan menggunakan GROUP
BY berdasarkan kode petugas (kd_petugas)

3. Studi kasus 8
Mendapatkan pembayaran minimal
 Source Code
SELECT MIN(jml_pembayaran) AS pembayaran_minimal FROM
tb_pembayaran;

 Before

 After

 Penjelasan
Menggunakan fungsi MIN untuk mendapatkan nilai pembayaran
terendah atau minimal
4. Studi kasus 9
Mendapatkan pembayaran antara 80000 dan 125000
 Source Code
SELECT kd_pasien, jml_pembayaran FROM tb_pembayaran
WHERE jml_pembayaran BETWEEN 80000 AND 125000;
 Before

 After

 Penjelasan
Menampilkan semua data dengan SELECT dengan syarat dimana
jml_pembayaran diantara 80000 dan 125000 menggunakan
BETWEEN
5. Studi kasus 10
Mendapatkan nilai maksimal dari jumlah pembayaran
 Source Code
SELECT MAX(jml_pembayaran) AS pembayaran_maksimal
FROM tb_pembayaran;
 Before

 After

 Penjelasan

Menggunakan fungsi MAX untuk mendapatkan nilai pembayaran


tertinggi atau nilai maksimal
RELASI & JOIN

1. Studi kasus 11
Mendapatkan nama pasien rawat inap beserta ruangannya
 Source Code
SELECT tb_pasien.nama_pasien, tb_ruang.nama_ruang
FROM tb_pasien INNER JOIN tb_rawat_inap ON
tb_pasien.kd_pasien = tb_rawat_inap.kd_pasien
INNER JOIN tb_ruang ON tb_rawat_inap.kd_ruang =
tb_ruang.kd_ruang;

 Before

 After

 Penjelasan
Perintah SQL tersebut untuk mendapatkan data pasien rawat inap
beserta ruangannya yaitu dengan menggunakan inner join. Inner
join akan menampilkan data dimana data yang ada ditabel
“tb_pasien”, “tb_rawat_inap”, “tb_ruang” itu ada pada satu tabel
dengan yang lain. Data yang tidak ada, tidak ditampilkan. Pada
sintaks ( ON tb_pasien.kd_pasien = tb_rawat_inap.kd_pasien dan
ON tb_rawat_inap.kd_ruang = tb_ruang.kd_ruang ) dimana
acuannya yang tipe data dan ukurannya harus sama.

2. Studi kasus 12
Mendapatkan data pasien yang tidak rawat inap beserta keluhannya
 Source Code
SELECT nama_pasien, keluhan FROM tb_pasien LEFT OUTER JOIN
tb_rawat_inap ON tb_pasien.kd_pasien =
tb_rawat_inap.kd_pasien
WHERE tb_rawat_inap.kd_rawat_inap IS NULL;

 Before

 After
 Penjelasan

Untuk mendapatkan data pasien yang tidak rawat inap dengan


menggabungkan 2 tabel dengan LEFT OUTER JOIN dengan
kondisi dimana kode rawat inap pada tabel rawat inap adalah
NULL

3. Studi kasus 13
Menampilkan seluruh data pada tabel rawat inap dan tabel ruang dengan
Full Outer Join
 Source Code
SELECT * FROM tb_rawat_inap LEFT OUTER JOIN tb_ruang ON
tb_rawat_inap.kd_ruang = tb_ruang.kd_ruang
UNION
SELECT * FROM tb_rawat_inap RIGHT OUTER JOIN tb_ruang ON
tb_rawat_inap.kd_ruang = tb_ruang.kd_ruang

 Before

 After
 Penjelasan

FULL OUTER JOIN ini melakukan seleksi secara menyeluruh,


yaitu pada tabel kiri (tb_rawat_inap) dan kanan (tb_ruang)

4. Studi kasus 14
Kelompokan tabel pembayaran berdasarkan jumlah pembayaran,
kemudian hitung banyaknya jumlah pembayaran tsb.
 Source Code
SELECT tb_pembayaran.jml_pembayaran, COUNT(jml_pembayaran)
as "JUMLAH PEMBAYARAN" FROM (tb_pasien INNER JOIN
tb_pembayaran ON tb_pasien.kd_pasien =
tb_pembayaran.kd_pasien) GROUP BY
tb_pembayaran.jml_pembayar

 Before
 After

 Penjelasan

Untuk menghitung banyaknya pembayaran menggunakan


COUNT(jml_pembayaran) dan ditampilakan sebagai JUMLAH
PEMBAYARAN. Data tersebut diambil dari tabel pasien yang
telah di inner joinkan dengan tabel pembayaran Lalu
dikelompokkan dengan GROUP BY jml_pembayaran

5. Studi kasus 15
Mendapatkan jumlah nama pasien pada tabel pasien lalu dikelompokkan
berdasarkan kode petugas
 Source Code
SELECT tb_pembayaran.kd_petugas,
COUNT(tb_pasien.nama_pasien) AS "JUMLAH PASIEN" FROM
(tb_pembayaran INNER JOIN tb_pasien ON
tb_pembayaran.kd_pasien = tb_pasien.kd_pasien ) GROUP BY
tb_pembayaran.kd_petugas

 Before

 After
 Penjelasan

Untuk menghitung banyaknya pasien menggunakan


COUNT(nama_pasien) dan ditampilakan sebagai JUMLAH
PASIEN. Data tersebut diambil dari able pembayaran yang telah
di inner joinkan dengan able pasien Lalu dikelompokkan dengan
GROUP BY kd_petugas

SUBQUERY

1. Studi kasus 16
Tampilkan kode pasien yang memiliki tagihan lebih besar daripada pasien
dengan Kode pasien = PAS106

Source code

SELECT kd_pasien FROM tb_pembayaran WHERE jml_pembayaran >


(SELECT jml_pembayaran FROM tb_pembayaran WHERE kd_pasien =
‘PAS106’)

Tampilan

Penjelasan
Menggunakan subquery SELECT untuk memilih kolom pada tabel
pembayaran dan menggunakan operator baris tunggal =, juga menggunakan
jenis scalar subquery yang hanya menampilkan satu baris data untuk
menemukan kode pasien yang tagihannya melebihi pasien dengan kode
pasien PAS106

2. Studi kasus 17
Tampilkan nama dari pasien yang memiliki keluhan yang sama dengan
pasien dengan nama pasien = Lisa

Source code

SELECT nama_pasien , keluhan FROM tb_pasien WHERE keluhan =


(SELECT keluhan FROM tb_pasien WHERE nama_pasien = 'Lisa')

Tampilan

Penjelasan
Menggunakan subquery jenis Multiple-Row sub query ,pertama menggunakan
SELECT untuk memilih kolom dan menambah koma untuk memilih kolom
berikutnya dalam satu proses dan menggunakan SELECT kembali untuk
menunjuk salah satu data pada tabel untuk menemukan nama pasien yang
memiliki keluhan sama dengan pasien bernama ‘Lisa’

3. Studi kasus 18
Tampilkan kode pasien dan nama_pasien yang memiliki tagihan tertinggi
dalam tabel pembayaran

Source code

SELECT tb_pembayaran.kd_pasien ,nama_pasien FROM


tb_pembayaran , tb_pasien WHERE jml_pembayaran = (SELECT
MAX(jml_pembayaran)AS jml_pembayaran FROM tb_pembayaran)
AND tb_pembayaran.kd_pasien = tb_pasien.kd_pasien

Tampilan

Penjelasan

Menggunakan subquery jenis Multiple-Column dengan kolom kd_pasien


dan nama_pasien yang memiliki jumlah tagihan pembayaran paling besar
atau maksimum,menggunakan SELECT untuk memilih kolom disertai titik
untuk menghindari ambigu, terdapat juga operator MAX untuk mendapat
nilai maksimal pada kolom yang dipilih

4. Studi kasus 19
Tampilkan kode pasien dan nama pasien yang memiliki tagihan dibawah
100000

Source code

SELECT nama_pasien , tb_pembayaran.kd_pasien FROM


tb_pasien , tb_pembayaran WHERE tb_pembayaran.kd_pasien IN
(SELECT kd_pasien FROM tb_pembayaran WHERE jml_pembayaran <
'100000') AND tb_pasien.kd_pasien = tb_pembayaran.kd_pasien

Tampilan

Penjelasan

Menggunakan jenis Multiple-Row subquery dengan data kolom nama pasien


dan kode pasien yang memiliki tagihan pembayaran dibawah seratus
ribu,menggunakan SELECT untuk memilih kolom dan juga disertai titik
untuk menghindari ambigu juga menggunakan operator < yang menenadakan
kurang dari

5. Studi kasus 20

Dari data tagihan yang terdaftar, siapa sajakah (nama dan keluhan) pasien
yang tidak mendapat tagihan 100000 ?

Source code

SELECT nama_pasien , keluhan FROM tb_pasien WHERE nama_pasien NOT IN


(SELECT kd_pasien FROM tb_pembayaran WHERE jml_pembayaran =
'100000')

Tampilan
Penjelasan

Menggunakan subquery jenis Multiple-Row dengan baris nama pasien dan


keluhan dan mencari data pasien yang tagihannya selain 100000 ,
menggunakan SELECT untuk memilih kolom disertai koma untuk memilih
kolom lain dalam 1 proses juga menggunakan NOT IN untuk mencari data
yang = seratus ribu

STORED PROCEDURE

1. Studi kasus 21
Mendefinisikan stored procedure untuk menampilkan semua data pasien
Membuat stored procedure

Source code
DELIMITER //
CREATE PROCEDURE lihatPasien()
BEGIN
SELECT * FROM tb_pasien;
END //
DELIMITER ;
Memanggil stored procedure
CALL lihatPasien();

Tampilan

Penjelasan
Menggunakan perintah DELIMITER untuk mengubah delimiter standar
dan juga menggunakan CREATE PROCEDURE untuk membuat prosedur
baru dan begin untuk memulai fungsi, menggunakan SELECT * untuk
memilih semua data yang ada pada tabel tersebut juga memakai fungsi
CALL untuk memanggil prosedur tersebut

2. Studi kasus 22
Menampilkan data pasien(nama dan alamat) yang memiliki alamat Jl.
Jombang
Membuat stored procedure
Source code
DELIMITER //
CREATE PROCEDURE keluhan100()
BEGIN
SELECT nama_pasien , alamat_pasien
FROM tb_pasien
WHERE alamat_pasien = 'Jl. Jombang' ;
END //
DELIMITER ;

Memanggil stored procedure


CALL keluhan100;

Tampilan

Penjelasan

Menggunakan perintah DELIMITER untuk mengubah delimiter standar


dan juga menggunakan CREATE PROCEDURE untuk membuat prosedur
baru dan begin untuk memulai fungsi. Kemudian menggunakan SELECT
untuk memilih tabel dan disertai koma untuk memilih tabel lain dalam satu
proses untuk menemukan pasien dengan alamat Jl. Jombang

3. Studi kasus 23
Menampilkan data pasien yang memiliki keluhan demam
Membuat procedure
Source code
DELIMITER //
CREATE PROCEDURE keluhan()
BEGIN
SELECT alamat_pasien , nama_pasien FROM tb_pasien
WHERE keluhan = ‘demam’ ;
END
DELIMITER ;

Memanggil
CALL keluhan;
Tampilan

Penjelasan
Menggunakan perintah DELIMITER untuk mengubah delimiter standar
dan juga menggunakan CREATE PROCEDURE untuk membuat prosedur
baru dan begin untuk memulai fungsi
Menggunakan SELECT untuk memilih kolom disertai koma untuk
memilih kolom yang lain dalam satu proses ,menggunakan WHERE untuk
menemukan pasien dengan keluhan demam

4. Studi kasus 24
Memunculkan kode pasien yang tagihan melebihi 100000
MEMBUAT PROCEDURE
Source code
DELIMITER //
CREATE PROCEDURE tagihan1()
BEGIN
SELECT kd_pasien , jml_pembayaran
FROM tb_pembayaran
WHERE jml_pembayaran > 100000 ;
END //
DELIMITER ;

MEMANGGIL PROCEDURE
CALL tagihan1;

Tampilan

Penjelasan
Menggunakan perintah DELIMITER untuk mengubah delimiter standar
dan juga menggunakan CREATE PROCEDURE untuk membuat prosedur
baru dan begin untuk memulai fungsi
Menggunaan SELECT untuk memilih kolom disertai koma untuk memilih
kolom lain dalam satu proses menggunakan where dan juga operasi
>100000 untuk menemukan tagihan diatas 100000

5. Studi kasus 25
Memunculkan kode pasien yang tagihan kurang dari 100000
MEMBUAT PROCEDURE
Source code
DELIMITER //
CREATE PROCEDURE tagihan2()
BEGIN
SELECT kd_pasien , jml_pembayaran
FROM tb_pembayaran
WHERE jml_pembayaran < 100000 ;
END //
DELIMITER ;

MEMANGGIL PROCEDURE
CALL tagihan2;

Tampilan
Penjelasan

Menggunakan perintah DELIMITER untuk mengubah delimiter standar


dan juga menggunakan CREATE PROCEDURE untuk membuat prosedur
baru dan begin untuk memulai fungsi
Menggunaan SELECT untuk memilih kolom disertai koma untuk memilih
kolom lain dalam satu proses menggunakan where dan juga operasi
>100000 dengan demikian hasil akan bersifat kebalikan dari perintah yang
sebelumnya yaitu dengan hasil kurang dari 100000

VIEW

1. Studi kasus 26
Definisikan view untuk mendapatkan data dokter yang memiliki pasien
Source Code:

CREATE VIEW dataDokter


AS

SELECT DISTINCT tb_dokter.kd_dokter, tb_dokter.nama_dokter,


tb_dokter.alamat_dokter, tb_dokter.spesialisasi_dokter

FROM (tb_dokter JOIN tb_pasien

ON ((tb_dokter.kd_dokter= tb_pasien.kd_dokter)))

GROUP BY tb_pasien.kd_pasien;

Tampilan :

Penjelasan :

Untuk membuat View, digunakan perintah CREATE VIEW. View ini


diberi nama dataDokter. Untuk mendapatkan data dokter yang memiliki
pasien menggunakan perintah SELECT DISTINCT yang bertujuan supaya
data tidak muncul secara berulang. Selanjutnya SELECT seluruh kolom yang
ada pada tabel tb_dokter dimana tb_dokter dan tb_pasien di JOIN kandengan
menggunakan elemen yang sama yaitu kd_dokter pada tb_dokter maupun
pada tb_pasien. Setelah itu, semua data di GROUP BY kd_pasien.

2. Studi kasus 27
Mendefinisikan nested view hanya dokter yang memiliki pasien terbanyak
Source Code :
CREATE VIEW dataDokterTerbanyak

AS

SELECT MAX(datadokter.kd_dokter) AS ‘Memeriksa Terbanyak’


FROM datadokter

Tampilan

Penjelasan:
View ini merupakan nested view dari studi kasus sebelumnya. Untuk membuat
view ini menggunakan perintah CREATE VIEW dengan nama view
dataDokterTerbanyak. View ini menggunakan fungsi MAX untuk
mendapatkan data dokter yang memiliki pasien terbanyak. Yaitu dengan
menggunakan MAX(datadokter.kd_dokter). Keluaran tampilan dari view ini
yaitu didapat dari AS ‘Memeriksa Terbanyak’ yang didapat dari view
sebelumnya, yaitu VIEW dataDokter.

3. Studi kasus 28
Mendefinisikan nested view untuk mendapatkan data petugas yang melayani
pembayaran yang memiliki alamat di Jl. Blitar
Source Code Main View :
CREATE VIEW dataPetugas

AS

SELECT DISTINCT tb_petugas.kd_petugas, tb_petugas.nama_petugas,


tb_petugas.alamat_petugas

FROM (tb_pembayaran JOIN tb_petugas

ON ((tb_pembayaran.kd_petugas= tb_petugas.kd_petugas)))

GROUP BY tb_petugas.kd_petugas;

Tampilan Main View:


Source Code Nested View :

CREATE VIEW datapetugas_alamat

AS SELECT * FROM datapetugas

WHERE (datapetugas.alamat_petugas = 'Jl. Blitar');

Tampilan Nested View :

Penjelasan :
Pertama yaitu dengan membuat main view untuk mendapatkan data petugas
yang melayani pembayaran dengan perintah CREATE VIEW dan nama view
yaitu dataPetugas. Di main view ini, akan menampilkan semua kolom pada
tabel tb_petugas yang telah dijoinkan dengan tabel tb_pembayaran, dimana
yang menjadi elemen yang sama yaitu kd_petugas dan GROUP BY
kd_petugas.

Kedua, yaitu membuat nested view petugas yang memiliki alamat di Jl. Blitar
dengan menggunakan perintah CREATE VIEW dengan nama
dataPetugas_alamat. Pada perintah SELECT * FROM dataPetugas, view ini
akan menampilkan seluruh kolom dari view dataPetugas. Selanjutnya, diberi
kondisi dimana datapetugas.alamat_petugas = `Jl. Blitar`.

4. Studi kasus 29
Mendefinisikan nested view untuk mendapatkan nominal maksimal
pembayaran.
Source Code Main View
CREATE VIEW pasienMembayar

AS

SELECT tb_pasien.nama_pasien, tb_pasien.alamat_pasien,


tb_pembayaran.jml_pembayaran

FROM (tb_pasien JOIN tb_pembayaran

ON ((tb_pasien.kd_pasien=tb_pembayaran.kd_pasien)))

GROUP BY tb_pembayaran.kd_pasien

Tampilan Main View

Source Code Nested View


CREATE VIEW pasienmembayar_Maksimal

AS

SELECT MAX(pasienmembayar.jml_pembayaran)

AS membayar_terbanyak

FROM pasienmembayar
Tampilan Nested View

Penjelasan
Untuk mendapatkan nominal maksimal pembayaran, pertama membuat main
view dengan perintah CREATE VIEW dan nama view pasienMembayar. Pada
view ini akan menampilkan nama pasien, alamat dan nominal pembayaran.
View ini didapat dari JOIN antara tabel tb_pasien dan tb_pembayaran dimana
kd_pasien sebagai elemen yang sama.
Selanjutnya, pada nested view ini untuk mendapatkan nominal maksimal
pembyaaran yang dilakukan oleh pasien. Untuk membuatnya digunakan
perintah CREATE VIEW dengan nama view pasienmembayar_maksimal.
View ini menggunakan fungsi MAX(pasienmembayar.jml_pembayaran) untuk
mendapatkan nilai maksimal jumlah pembayaran dan ditampilkan
menggunakan perintah AS membayar_terbanyak.

5. Studi kasus 30
Mendefinisikan view untuk mendapatkan nama pasien yang melakukan rawat
inap.
Source Code :
CREATE VIEW pasienRawatInap

AS

SELECT

tb_pasien.nama_pasien,

tb_ruang.nama_ruang

FROM

tb_rawat_inap

INNER JOIN tb_pasien ON tb_rawat_inap.kd_pasien = tb_pasien.kd_pasien

INNER JOIN tb_ruang ON tb_rawat_inap.kd_ruang = tb_ruang.kd_ruang


Tampilan :

Penjelasan :
Pertama, untuk membuat view menggunakan perintah CREATE VIEW dengan
nama view pasienrawatinap. Pada view ini akan menampilkan nama pasien dan
nama ruang tempat mereka dirawat. Untuk menampilkan nama dan nama ruang
menggunakan perintah SELECT tb_pasien.nama_pasien, tb_ruang.nama_ruang.
Selanjutnya menjoinkan tabel tb_rawat inap dengan tabel pasien pada kd_pasien
yang telah dijoinkan dengan tabel tb_ruang pada kd_ruang.
TRIGGER

1. Studi kasus 31
Merekam operasi INSERT pada tabel tb_pemabayaran dan menyimpan
rekaman operasi sebagai bukti di tabel log_pembayaran

Membuat tabel log_pembayaran


Source code
CREATE TABLE `log_pembayaran` (
`operasi` varchar(30) NOT NULL,
`waktu` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Membuat Trigger :

CREATE TRIGGER logInsert


AFTER INSERT ON tb_pembayaran
FOR EACH ROW BEGIN
DECLARE keterangan VARCHAR(50);
SET keterangan = CONCAT('INSERT pada id = ', NEW.kd_pembayaran);
INSERT INTO log_pembayaran(operasi,waktu)
VALUES (keterangan,NOW());
END $$
Perintah INSERT:

INSERT INTO `tb_pembayaran`(`kd_pembayaran`, `kd_pasien`,


`jml_pembayaran`, `kd_petugas`)
VALUE S
('BAY613','PAS101','40000','PTG301');

Tampilan :

Penjelasan :
Pertama yaitu membuat tabel log_pembayaran untuk merekam operasi dengan
menggunakan perintah CREATE TABLE. Selanjutnya membuat trigger
denggan nama logInsert dengan perintah CREATE TRIGGER. Dalam trigger
ini, dideklarasikan variable keterangan dengan tipe data VARCHAR (50).
Selanjutnya set keterangan CONCAT yang akan menampilkan operasi yang
direkam. Kemudian keterangan tersebut dimasukkan ke dalam tabel
log_pembayaran dengan perintah INSERT dengan VALUES keterangan dan
waktu pada saat terjadi operasi dengan menggunakan NOW.

2. Studi kasus 32

Mendefinisikan Trigger ketika keluhan pasien dikosongi, maka Keluhan akan


otomatis menjadi ‘Flu’

Membuat Trigger

Source code

CREATE TRIGGER setPasien

BEFORE INSERT ON tb_pasien

FOR EACH ROW BEGIN

IF (new.keluhan is null or new.keluhan = '')

THEN SET new.keluhan = 'Flu';

END IF;

END $$

Memasukkan data ke dalam tabel

INSERT INTO `tb_pasien`(`kd_pasien`, `nama_pasien`, `alamat_pasien`,


`keluhan`, `kd_dokter`) VALUES

('PAS113','Mahmud','Jl. Kenanga','','DOK205');

Before
After

Penjelasan :

Untuk membuat trigger ini menggunakan perintah CREATE TRIGGER dengan


nama setFlu. Trigger ini menggunakan percabangan IF. Jika keluhan yang baru
tidak diisi atau NULL, maka akan mengeset keluhan pada tabel tb_pasien
menjadi ‘Flu’.
Selanjutnya dimasukkan data dengan perintah INSERT ke dalam tabel pasien.
Pada data keluhan dikosongi atau tidak diisi. Setelah dieksekusi nampak
keluhan berubah menjadi ‘Flu’

3. Studi kasus 33

Membuat Trigger ketika jumlah pembayaran > 80000, mendapat diskon 10%

Membuat Trigger

Source code

CREATE TRIGGER setBayar


BEFORE INSERT ON tb_pembayaran
FOR EACH ROW BEGIN
IF (new.jml_pembayaran > 80000)
THEN SET new.jml_pembayaran = new.jml_pembayaran -
(new.jml_pembayaran * 10/100);
END IF;
END $$
Memasukkan data ke tabel

INSERT INTO `tb_pembayaran`(`kd_pembayaran`, `kd_pasien`,


`jml_pembayaran`, `kd_petugas`) VALUES
('BAY614','PAS108','90000','PTG302');

Before
After

Penjelasan

Untuk membuat trigger ini menggunakan perintah CREATE TRIGGER dengan


nama setBayar. Pada trigger ini menggunakan IF. Jika kondisi jumlah
pembayaran baru lebih dari 80000, maka akan mendapat potongan 10%.

Pada contoh dimasukkan data jumlah pembayaran 90000. Setelah data


dimasukkan akan muncul menjadi mendapat potongan 10% yaitu 81000.

4. Studi kasus 34
Mendefinisikan Trigger ketika pasien melakukan rawat inap dan kd_ruang
pasien dikosongi, maka pasien akan otomatis masuk ke ruang Anggrek
(RUA402).

Membuat Trigger

Source code

CREATE TRIGGER setRuang


BEFORE INSERT ON tb_rawat_inap
FOR EACH ROW BEGIN
IF (new.kd_ruang is null or new.kd_ruang= '')
THEN SET new.kd_ruang = 'RUA402';
END IF;
END $$
Memasukkan data ke tabel

INSERT INTO `tb_rawat_inap`(`kd_rawat_inap`, `kd_ruang`, `kd_pasien`)


VALUES
('INP504','','PAS104')
Hasil

Penjelasan

Untuk membuat trigger ini menggunakan perintah CREATE TRIGGER dengan


nama setRuang. Trigger ini menggunakan percabangan IF. Jika kd_ruang yang
baru tidak diisi atau NULL, maka akan mengeset kd_ruang pada tabel
tb_rawat_inap menjadi ‘RUA402’.

Pada contohh dimasukkan data dengan perintah INSERT ke dalam tabel


tb_rawat_inap. Pada data kd_ruang dikosongi atau tidak diisi. Setelah
dieksekusi nampak kd_ruang berubah menjadi ‘RUA402’
5. Studi kasus 35

Mendefinisikan Trigger ketika memasukkan data pasien dan kode dokter


kosong, maka otomatis pasien akan diperiksa oleh dokter

Membuat trigger

Source code

CREATE TRIGGER setDokter

BEFORE INSERT ON tb_pasien

FOR EACH ROW BEGIN

IF (new.kd_dokter is null or new.kd_dokter= '')

THEN SET new.kd_dokter = 'DOK205';

END IF;

END $$

Memasukkan data ke tabel

INSERT INTO `tb_pasien`(`kd_pasien`, `nama_pasien`, `alamat_pasien`,


`keluhan`, `kd_dokter`) VALUES

('PAS141','Muhaimin','Jl. Dewandaru','Demam','');

Hasil

Penjelasan

Untuk membuat trigger ini menggunakan perintah CREATE TRIGGER dengan


nama setDokter. Trigger ini menggunakan percabangan IF. Jika kd_dokter
yang baru tidak diisi atau NULL, maka akan mengeset kd_dokter pada tabel
tb_pasien menjadi ‘DOK205’.
Pada contoh diatas dimasukkan data dengan perintah INSERT ke dalam tabel
tb_pasien. Pada data kd_dokter dikosongi atau tidak diisi. Setelah dieksekusi
nampak kd_dokter berubah menjadi ‘DOK205’

C Kesimpulan
Berdasarkan hasil pengerjaan database beserta studi kasus pada database
rumah sakit ini maka dapat ditarik beberapa kesimpulan. Pengaplikasian
database dapat mempermudah pasien, dokter, dan petugas dalam melakukan
kegiatan pelayanan di rumah sakit. Contohnya petugas dapat melayani
pembayaran pasien dengan optimal.
Pembuatan database juga membuat penyimpanan data milik rumah sakit
menjadi lebih efisien. Penyimpanan dan pengelolaan data yang sebelunya
dilakukan secara manual, sangat membutuhkan banyak waktu. Penyimpanan
data – data tersebut kini dapat dilakukan secara digital. Dengan sistem ini,
data dapat dikelola dengan rapi.
Dengan adanya database ini juga, duplikasi data dapat dicegah. Selain itu,
keamanan data pun lebih terjamin. Data juga dapat dibackup dengan cukup
mudah. Oleh karenanya, proses pengolahan data dapat lebih akurat daripada
sistem konvensional.
Sehingga dapat kami simpulkan bahwa dengan memanfaatkan database
MySQL dalam Perancangan Sistem Database Rumah Sakit dapat
memudahkan proses pelayanan dan pengelolaan data pada rumah sakit
dengan lebih efisien.
D Saran
Adapun saran yang diajukan oleh penulis dalam pembuatan sistem
database ini, diantaranya adalah sebagai berikut.
1. Perlunya pengembangan dan pengimplementasian database lebih lanjut
ke dalam sistem aplikasi.
2. Perlu mengefisiensikan lebih lanjut mengenai struktur database.

Daftar Pustaka
Tim Asisten Dosen. 2018. Modul 1-9. Malang : Universitas Negeri Malang.
Lampiran
Job Desk
Mohammad Ardy Audya A. Membuat implementasi database
Mengerjakan Laporan modul 6 & 7
(180535632540)
Muhammad Adhitya Widhianto Membuat power point
Mengerjakan laporan modul 4 & 5
(180535632530)
Muhammad Tatag Adi N. Merancang ERD dan Database
Mengerjakan laporan modul 8 & 9
(180535632517)
Membuat power point
Naziro (180535632589) Mengerjakan laporan modul 3 dan
mengedit data keseluruhan
Membuat paper

Anda mungkin juga menyukai