Anda di halaman 1dari 123

POLIKLINIK

Laporan untuk Memenuhi Tugas Akhir Matakuliah Praktikum Basis Data


yang Dibina oleh Triyanna Widiyaningtyas, S.T, M.T.

Oleh:
Hanifah Hasna Nuha (150533601920)
Hartanti Iriyani (150533601195)
Leo Razaka Qintara (150533601701)
Moch. Fadzil Fu’addin (150533603409)

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
Mei 2016
A. Latar Belakang
Poliklinik adalah salah satu unit pelayanan masyarakat yang
bergerak pada bidang kesehatan. Poliklinik tidaklah sebesar rumah sakit,
namun pelayanannya juga harus secara maksimal. Tujuan utama dari
Poliklinik adalah melayani para pasien yang akan berobat. Dengan
demikian, semakin berkembangnya teknologi informasi di masa sekarang,
maka pada poliklinik membutuhkan database untuk menyimpan data-data
pasien, dokter, pegawai, dll.
Perancangan database poliklinik ini menggunakan database
MySQL. Yang di rancang untuk memenuhi kebutuhan poliklinik, agar
pelayanan dalam poliklinik semakin mudah.
Pada basis data poliklinik berisikan:
1. Tabel pasien yang berisikan data dari pasien, seperti id_pas,
nama_pas, umur, jk, jalan, kota, kode_pos, telp_pas, tgl_reg.
2. Tabel dokter yang berisikan data dari dokter, seperti id_dok,
nama_dok, jk, kode_poli, jalan, kota, kode_pos, telp_dok.
3. Tabel pegawai yang berisikan data dari pegawai, seperti nip,
nama_peg, jk, jalan, kota, kode_pos, telp_peg.
4. Tabel registrasi yang berisikan data dari registrasi, seperti id_reg,
no_reg, no_urut, nip, id_pas, tgl_reg.
5. Tabel transaksi yang berisikan data dari transaksi, seperti
id_transaksi, NamaTransaksi, id_pas, tgl_trans, kode_obat, Tarif.
6. Tabel poli yang berisikan data dari poli, seperti kode_poli,
nama_poli.
7. Tabel ambil_poli yang berisikan data dari ambil_poli, seperti
id_pas dan tabel kode_poli.
8. Tabel JadwalPraktek berisikan data dari jadwal praktek, seperti
id_dok, KodeJadwal, Hari, JamMulai, JamSelesai.
9. Tabel Pemeriksaan berisikan data dari pemeriksaan, seperti id_dok,
id_pas, no_urut, keluhan, diagnosa, perawatan, tindakan,
berat_badan.
10. Tabel Penyakit berisikan data dari penyakit, seperti id_penyakit,
nama_penyakit, keterangan.
11. Tabel resep yang berisikan data dari resep, seperti id_dok, id_pas
no_resep, kode_obat, dosis, jumlah.
12. Tabel obat yang berisikan data dari obat, seperti jenis_obat,
kode_obat, merk, harga, stok.

B. Tujuan
1. Memudahkan pegawai untuk mendaftarkan pasien dan merekap data
pasien sebagai arsip poliklinik.
2. Menyimpan data poliklinik secara aman, efektif, dan efisien.
3. Memudahkan pasien untuk registrasi, bertransaksi, memilih poli,
mengambil resep, dan obat.
4. Memudahkan dokter untuk mengatur jadwal praktek, dan memeriksa
pasien.

C. Dasar Teori
1. FUNGSI AGREGATE
A. Fungsi Agregat
Fungsi agregat (aggregate) adalah fungsi yang menerima
koleksi nilai dan mengembalikan nilai tunggal sebagai hasilnya.
Standar ISO mendefinisikan lima jenis fungsi agregrat.
Fungsi Deskripsi
COUNT Mengembalikan jumlah (banyaknya atau kemunculannya) nilai di suatu
kolom
SUM Mengembalikan jumlah (total atau sum) nilai di suatu kolom
AVG Mengembalikan rata-rata (average) nilai di suatu kolom
MIN Mengembalikan nilai terkecil (minimal) di suatu kolom
MAX Mengembalikan nilai terbesar (maximal) di suatu kolom

B. Keyword DISTINCT
Keyword DISTINCT dapat dimanfaatkan untuk
mengeliminasi kemunculan data yang sama.
Sintaks keyword DISTINCT diperlukan sebagai berikut :

C. Pengelompokan
Operasi non – trivial lainnya di dalam pengambilan data
adalah pengelompokan. Operasi ini direpresentasikan melalui
klausa GROUP BY dan dikuti nama field.
Sintaks klausa GROUP BY diperhatikan sebagai berikut :

Dalam implementasinya, klausa GROUP BY sering di


kombinasikan dengan fungsi – fungsi agregrat untuk operasi –
operasi spesifik.
D. Having
Pada saat bekerja dengan fungsi agregat, terkadang
diperlukan klausa WHERE untuk menspesifikasikan hasil.
Sayangnya, klausa WHERE tidak boleh mengandung fungsi
agregat. Sebagai solusinya, kita bisa memanfaatkan klausa
HAVING. Penggunaan klausa ini mirip WHERE.
Sintaks kalusa HAVING diperlihatkan sebagai berikut :

2. JOIN DAN UNION


A. Relationship
Relationship adalah suatu hubungan antara beberapa entitas.
Konsep ini sangat penting sekali di dalam basis dat, dimana
memungkinkan entitas – entitas untuk saling berhubungan satu sama lain.
Di dlam sebuah relationship, primary key memilik peran penting
dalm mengaitkan entitas. Saelain itu, primary key juga digunakan untuk
mendefinisiakn batasan keterhubungan.
B. Join
Join merupakan salah satu konstruksi dasar dari SQL dan basis
data. Join dapat didefinisikan sebagai kombinasi record dari dua atau lebih
tabel di dalam basis sebagai joined table.
Join dapat diklasifikasikan ke dalam dua jenis, yaitu inner join dan outer
join.
a. Inner join
Inner joinpada dasarnya adalah menentukan persimpangan
(intersection) antara dua buah tabel.

Sintaks inner join diperlihatkan sebagai berikut :

Inner joi terdapat tabel A dan B, maka hasil inner join dapat
diperhatikan sebagai bildang dalam diagram Venn seperti Gambat
1.

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) mengembaliakan semua nilai dari
tabel kiri tditambah dengan nilai dari tabel kanan yang sesuai (atau
NULL jika tidak ada nilai yang sesuai).
Sintaks Left ourer join diperlihatkan sebagai berikut :
Left outer join antara tabel A dan B dapat diilustrasikan dalam
diagram Venn seperti Gambar 2.

Right Outer Join


Right outer join (atau right join) pada dasarnya sama seperti left
join, namun dalam bentuk terbalik kanan dan kiri.
Sintaks Right outer join diperguakan sebagai berikut:

Right outer join antara tabel A dan B dapat diilustrasikan dalam


diagram Venn seperti Gambar 3.

Full Outer Join


Full outer join (atau full join) pada hakekatnya merupakan
kombinasi dari left dan right join.
Sintaks full outer join dipelihatkan sebagai berikut :
Bentuk visual dari full outer join dapat diperlihatkan menggunakan
diagram Venn seperti Gambar 4.

Selain empat jenis join itu yang utama di atas, masih ada beberapa
variasi join lainnya, seperti CROSS JOIN (cartesian product),
NATURAL JOIN, dan sebagainya.
Perlu juga diperhatikan, join diimplimentasikan dalam bentuk
bersarang (nested join). Jadi, di dalam sebuah operasi join bisa
terdapat operasi join lainnya.
C. Union
MySQL Union adalah statemen yang mengkombinasikan dua buah
atau lebih resulset darui beberapa table dengan statemen SELECT
sehingga menjadi satu buah result. Union statemen memilki beberapa
ketentuan sehingga berikut.
1. Jumlah kolom / field dari setiap statemen SELECT harus sama.
2. Tipe data kolom/field dari setiap statemen SELECT harus
kompatibel
Secara default Statemen UNION akan menghapus semua rcord duplikasi
dari resultset. Apabila anda ingin record duplikasi tetap di tampilkan
maka pada resultset tuliskan secara explisit UNION ALL. Perbedaan
Union dan Union All dapat dijelaskan pada gambar diagram Venn 5 dan
6.
Fungsi Union sendiri dapat dijalankan dengan sintaks sebagai berikut :

3. SUBQUERY DAN VIEW


A. Subquery
Subquery (disebut juga subselect atau nested select / query atau
inner-select) adalah query SELECT yang ada di dalam perinta SQL lain
misalnya SELECT, INSERT, UPDATE, atau DELETE. Keberadaan
subquery secara nyata mampu menyederhanakan persoalan persoalan
rumit berkaitan query data. Sebagai contoh, misalnya terdapat pernyataan
sebagai berikut :
“dapatkan data mahasiswa yang alamatnya sama dengan mahasiswa
dengan nim 104”
Secara normal, diperluakan dua tahapan untuk menyelesaikan kasus
di atas. Pertama adlah mendpatakan alamat dari mahasiswa yang memiliki
nim 104. Lagka selanjutnya, baru kita bisa mengetahui data mahasiswa
yang alamatnya sam dengan mahasiswa deng nim 104. Adapun dengan
memanfaatkan subquery, maka penyelesaian kasus di atas hanya
memerlukan swbuah query (akan dijelaskan nanti).
Pada hakekatnya, subquerysangatlah berguna katika sebuah query
didasarkan pada nilai nilai yang tak diketahui. Sintaks formal subquery
diperlukan sebaga berikut:

Subquery dapat diklarifikasikan ke dalam tiga jenis : scalar, multipe-row,


dan multiple column.
a. Scalar Subquery
Subquery baris tunggal (scalar) hanya mengembalikan hasil satu
baris data. Bentuk subquery ini diperhatikan sepertu gambar 1.

Subquery baris tunggal dapat menggunakan operator baris tunggal


=, >, >=, <. <=, atau <>.
b. Multipe – Row Subquery
Subquery baris anda (multiple-row) mengembalikan lebih dari satu
baris data. Bentuk subquery ini diperhatikan seperti gambar 2.
Subquery kolom ganda dapat menggunakan operator komparasi
IN,ANY/SOME, atau ALL.

c. Multipe – Column Subquery


1Subquery kolom ganda (multipe-column) mengembalikan
lebih dari satu bari dan satu kolam data. Bentuk subquery ini
diperhatikan seperti gambar 3.

d. View
View dapat didefinisika tabel maya (virtual) atau loogical yang
terdiri dari himpunan hasil query. Tidak seperti umumnya tabel di
dalam basis data relational, view bersifat dinamis, ia menggundang
data dari tabelyang dipresentasikannya. Dengan demikian, ketika
tabel menjadi sumber datanya berubah, data di view juga akan
berubah.
Merujuk pada dokumentasi MySQL, sintaks pendefinisian view
diperhatikan sebagai berikut :
e. Update View
View dapat berisi read-only atau updatable. Kondisi ini sangat
dipengaruhi oleh adanya pendefinisian view itu sendiri.
Bagaimanapun, untuk menciptakan updatable view, pertanyaan
SELECT yang didefinisikan di view harus mengikuti aturan aturan
sebagai berikut:
 Pernyataan SELECT tidak boleh merujuk ke lebih dari satu
tabel.
 Penyataan SELECT tidak boleh menggunakan klausa GROUP
BY atau HAVING.
 Pernyataan SELECT harus tidak menggunakan DISTINCT.
 Pernyataan SELECT tidak boleh mengandung ekpresi apa pun,
misalnya fungsi agregrat.
Pada hakekatnya, jika sistem database mampu menentukan pemetaan
balik dari semua view ke skema tabel dasar, maka view memungkinkan
untuk di update. Dlam kondisi ini,operasi – operasi INSERT,
UPDATE dan DELETE dapat diterapkan pada view.

4. TRIGGER
A. 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,
dan 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.
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.

B. 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 :

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.
Kegunaan trigger:

 Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah


dalam sistem penjualan, jika dientri barang baru maka stock akan
bertambah secara otomatis.
 Trigger dapat digunakan untuk mengimplementasikan suatu sistem log.
Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.
 Trigger dapat digunakan untuk melakukan validasi dan verifikasi data
sebelum data tersebut disimpan.

5. STORED PROCEDURE
A. Stored Procedure
Stored procedure adalah sebuah prosedur layaknya subprogram
(subrutin) di dalam bahasa pemograman regular yang tersimpan di dalam
katalog basisdata. Di bawa ini merupakan bagian syntax dari Stored
procedure:

Beberapa kelebiahan yang ditawarkan stored prosedure antara lain:


Meningkatkan performa, mereduksi trafik jaringan, reusable, dan
meningkatkan kontrol sekuriti.
Di balik kelebihan kelebihannya, stored prosedure juga memiliki
kekurangan, di antaranya : berpotensi meningkaykan beban server dan
penulisannya tidak mudah. (memerlukan pengetahuan spesifik).
Sintaks stored prosedure diperhatikan sebagai berikut:

Untuk memenggil stored procedure, digunakan poerintah CALL (beberapa


DBMS ada yang menggunakan EXECUTE).

Dalam implementasi nyata, penggunakan 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 stored procedure tetapi nilainya tidak
dapat diubah (dari dalam stored procedure).
OUT
Mode ini mengindikasi bahwa stored procedure dapat mgubah parameter
dan mengirimkan kembali ke program pemanggil.
INOUT
Mode ini pada dasarnya merupakan kombinasi dari mode IN dan OUT.
Sintaks pendefinisian parameter diperhatikan sebagian berikut :

Stored procedure dapat mencerminkan beragam operasi data, misalnya


seleksi, penambahan, pengubahan, penghapusan, dam juga operasi –
operasi DLL. Seperti halnya procedure di bahasa pemograman, stored
procedure juga dapat melibatkan variabel, pernyataan kondisional, dan
pengulangan.

6. TRANSACTION
A. Transaksi Basis Data
Pada suatu hari, Tono ingin mentransfer uang ke rekening adiknya,
Tini, sebesar Rp. 9.000.000. Diilustrasikan secara sederhana, proses yang
terjadi adalah sebagai ber ikut:
1. Saldo Tono dikurangi sebesar Rp. 9.000.000,
2. Saldo Tini ditambah sebesar Rp. 9.000.000.
Begitu kedua tahap di atas terlaksana dengan baik, Tono akan
merasa lega, dan Tini pun bersuka cita, karena sebentar lagi dapat memilik
i laptop baru yang telah lama dimimpikannya. Namun, pertimbangkan
jika di antara langkah (1) dan (2) terjadi hal-hal buruk yang tidak
diinginkan, misalnya saja mesin ATM crash, terjadi pemadaman listrik
dan UPS gagal up, disk pada server penuh, atau ada cracker yang merusak
infrastruktur jaringan. Maka dapat dipastikan bahwa saldo Tono
berkurang, tetapi saldo Tini tidak bertambah. Hal tersebut merupakan
sesuatu yang tidak diharapkan untuk terjadi.
Dari ilustrasi di atas, maka dapat disimpulkan bahwa solusi yang
tepat adalah memperlakukan perintah-perintah sebagai satu kesatuan
operasi. Sederhananya, lakukan semua operasi atau tidak sama sekali,
biasa juga dikenal dengan jargon all or nothing. Uniknya, konsep
penyelesaian di atas sudah dikemukakan oleh para ahli sejak puluhan
tahun silam. Konsep yang disebut transaksi basis data (database
transaction) ini sebenarnya cukup sederhana, antara lain:
 Tandai bagian awal dan akhir himpunan perintah,
 Putuskan di bagian akhir untuk mengeksekusi (commit) atau
membatalkan (rollback) semua perintah.

B. Properti Transaksi Basis Data


Dalam transaksi basis data, terdapat properti -properti yang
menjamin bahwa transaksi dilaksanakan dengan baik. Properti-properti ini
dikenal sebagai ACID (Atomicity, Consistency, Isolation, Durability).
 Atomicity
Transaksi dilakukan sekali dan sifatnya atomic, artinya merupakan satu
kesatuan tunggal yang tidak dapat dipisah, baik itu pekerjaan yang
dilaksanakan secara keseluruhan, ataupun tidak satupun.
 Consistency
Jika basis data pada awalnya dalam keadaan konsisten, maka pelaksanaan
transaksi dengan sendirinya juga harus meninggalkan basis data tetap
dalam status konsisten.
 Isolation
Isolasi memastikan bahwa secara bersamaan (konkuren) eksekusi
transaksi terisolasi dari yang lain.
 Durability
Begitu transaksi telah dilaksanakan (di-commit), maka perubahan yang
diakibatkan tidak akan hilang atau tahan lama (durable), sekalipun
terdapat kegagalan sistem.
MySQL mendukung transaksi melalui storage engine InnoDB (full
ACID compliance) dan BDB (BerkeleyDB) sejak versi 4.0. Oleh karena
itu, untuk dapat mengimplementasikan transaksi, DBMS MySQL harus
mendukung salah satu atau kedua engine transactional.

C. Implementasi Transaksi
Transaksi di MySQL diinisiasi dengan menggunakan pernyataan
START TRANSACTION atau BEGIN dan diakhiri dengan 2 cara yaitu:
a. COMMIT
Pernyataan COMMIT digunakan untuk menyimpan data(tidak di-
rollback).
b. ROLLBACK
Pernyataan ROLLBACK digunakan untuk menggugurkan rangkaian
perintah. akan dilakukan manakala ada satu atau lebih perintah yang
gagal dilaksanakan.
Status-status yang dapat dicapai oleh sebuah transaksi sejak mulai
dilaksanakan hingga selesai atau batal adalah:
1. Aktif (Active) yang merupakan status awal (initial state) sebuah transaksi
yang menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai
transaksi tepat pada saat operasi terakhir dalam transaksi selesai
dikerjakan.
3. Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi
terhenti pengeksekusiannya sebelum tuntas sama sekali.
4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap
tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan
mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang
menjadi tanggung jawab DBMS).
5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah
dinyatakan berhasil dikerjakan seluruhnya dan basis data telah
merefleksikan perubahan-perubahan yang memang diinginkan transaksi.

D. Isolasi Transaksi
Dalam transaksi pada sistem basis data ada 3 hal yang harus dicegah:
1. Dirty read
Dua transaksi berjalan bersama, dan salah satu transaksi membaca hasil
transaksi lainnya yang gagal

2. Non-repeatable read
Transaksi membaca ulang data yang telah dibaca sebelumnya karena telah
diubah oleh transaksi lain yang berjalan bersamaan.

3. Phantom read
Transaksi membaca data yang telah hilang oleh transaksi lainnya Untuk
mencegah 3 hal di atas, Oracle memiliki 2 level isolasi, yaitu:
1. Read Command
Transaksi hanya bisa membaca data yang telah selesai di eksekusi
(commit) oleh transaksi lain.
2. Serializable (mencegah Phantom read)
Proses transaksi di-serial-kan, artinya transaksi satu akan berjalan
setelah transaaksi lainnya selesai. Tetapi aplikasi yang menerapkan
level isolasi ini harus bersedia mengulangi transaksi akibat kegagalan
penserialan transaksi.
D. Desain Database
Dalam perancangan database poliklinik ini terdapat 12 buah tabel
yaitu tabel pasien, dokter, pegawai, registrasi, transaksi, penyakit, resep,
obat, JadwalPraktek, pemeriksaan, poli, dan ambil_poli.
Dalam tabel pasien terdapat 8 buah field yaitu id_pas, nama_pas,
jk, umur, jalan, kota, kode_pos, telp, dan tgl_reg yang dijadikan sebagai
Primary Key adalah id_pas. Struktur tabel pasien adalah gambar berikut
ini:

Gambar 1: Struktur tabel pasien

Dalam table dokter terdapat 7 buah field yaitu id_dok, nama_dok,


jk, kode_poli, jalan, kota, kode_pos, dan telp_dok . Pada table ini yang
dijadikan sebagai Primary Key adalah id_dok. Struktur table dokter seperti
gambar berikut ini:

Gambar 2: Struktur tabel dokter

Dalam table pegawai terdapat 6 buah field yaitu nip, nama_peg, jk,
jalan, kota, kode_pos, dan telp_peg. Pada table ini yang dijadikan sebagai
Primary Key adalah nip. Struktur table pegawai seperti gambar berikut ini:
Gambar 3: Struktur tabel pegawai

Dalam table registrasi terdapat 6 buah field yaitu id_reg, no_reg,


no_urut, nip, id_pas, dan tgl_reg. Pada table ini yang dijadikan sebagai
Primary Key adalah id_reg. Struktur table registrasi seperti gambar berikut
ini:

Gambar 4: Struktur tabel registrasi

Dalam table transaksi terdapat 6 buah field yaitu id_transaksi,


NamaTransaksi, id_pas, tgl_trans, kode_obat, dan Tarif. Pada table ini
yang dijadikan sebagai Primary Key adalah id_transaksi. Struktur table
transaksi seperti gambar berikut ini:

Gambar 5: Struktur tabel transaksi


Dalam table penyakit terdapat 3 buah field yaitu id_penyakit,
nama_penyakit, dan keterangan. Pada table ini yang dijadikan sebagai
Primary Key adalah id_penyakit. Struktur table penyakit seperti gambar
berikut ini:

Gambar 6: Struktur tabel penyakit

Dalam table resep terdapat 6 buah field yaitu id_dok, id_pas,


no_resep, kode_obat, dosis, dan jumlah. Pada table ini yang dijadikan
sebagai Primary Key adalah no_resep. Struktur table resep seperti gambar
berikut ini:

Gambar 7: Struktur tabel resep

Dalam table obat terdapat 5 buah field yaitu jenis_obat, kode_obat,


merk, harga, dan stok. Pada table ini yang dijadikan sebagai Primary Key
adalah kode_obat. Struktur table obat seperti gambar berikut ini:

Gambar 8: Struktur tabel obat


Dalam table JadwalPraktek terdapat 5 buah field yaitu id_dok,
KodeJadwal, Hari, JamMulai, dan JamSelesai. Pada table ini yang
dijadikan sebagai Primary Key adalah KodeJadwal. Struktur table
JadwalPraktek seperti gambar berikut ini:

Gambar 9: Struktur tabel JadwalPraktek

Dalam table pemeriksaan terdapat 6 buah field yaitu id_dok,


id_pas, no_urut, keluhan, diagnosa, id_penyakit, dan berat_badan. Struktur
table pemeriksaan seperti gambar berikut ini:

Gambar 10: Struktur tabel pemeriksaan

Dalam table poli terdapat 2 buah field yaitu kode_poli dan


nama_poli. Pada table ini yang dijadikan sebagai Primary Key adalah
kode_poli. Struktur table poli seperti gambar berikut ini:

Gambar 11: Struktur tabel poli


Dalam table ambil_poli terdapat 2 buah field yaitu id_pas dan
kode_poli_poli. Struktur table poli seperti gambar berikut ini:

Gambar 12: Struktur tabel ambil_poli

Sehingga struktur dari database poliklinik diperlihatkan seperti


gambar di bawah ini:

Gambar 13: Struktur database poliklinik

Struktur Database Poliklinik


Relasi dari keduabelas tabel pada database poliklinik yaitu tabel
pasien, dokter, pegawai, registrasi, transaksi, penyakit, resep, obat,
JadwalPraktek, pemeriksaan, poli, dan ambil_poli. Dapat diperlihatkan
seperti gambar dibawah ini:
Gambar 14: Relasi tabel pada database poliklinik
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 dengan field
dari tabel lain yang bukan Primary Key.
Primary key ditunjukkan dengan kunci berwarna kuning. Nilai dari
Primary Key adalah unique, artinya nilai dari primary key tersebut tidak
ada yang sama.
Gambar 15: ERD database poliklinik
E. Implementasi Database
1. Membuat Database
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat database
poliklinik
 Gunakan database yang telah dibuat dengan pernyataan SQL
b. Kode Program
CREATE DATABASE poliklinik;

USE poliklinik;

c. Screenshot Hasil

2. Membuat Table, Memasukkan, dan Menampilkan data Pasien


a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel pasien
 Memasukkan data ke tabel pasien
 Menampilkan data pasien
b. Kode Program
CREATE TABLE pasien(
id_pas VARCHAR(15) NOT NULL,
nama_pas VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
umur VARCHAR(10) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_pas VARCHAR(12) NOT NULL,
tgl_reg DATE NOT NULL,
PRIMARY KEY(id_pas)
);
INSERT INTO pasien
VALUES
("PA001","Budi","L","18 tahun","Jl.Mawar 32", "Malang",
"65113","085789173782","2016-03-12"),
("PA002","Dodi","L","23 tahun","Jl.Melati 57", "Malang",
"65132","085789171234","2016-03-12"),
("PA003","Doni","L","13 tahun","Jl.Mekar 45", "Malang",
"65110","085789171123","2016-03-12"),
("PA004","Lena","P","10 tahun","Jl.Sekar 65", "Malang",
"65105","085781231123","2016-03-13"),
("PA005","Ani","P","11 tahun","Jl.Tulip 23", "Malang",
"65111","085789171101","2016-03-13"),
("PA006","Nanda","P","21 tahun","Jl.Kenanga 34", "Malang",
"65112","085189171101","2016-03-13"),
("PA007","Anton","L","30 tahun","Jl.Lemon 9", "Malang",
"65113","085159171341","2016-03-13"),
("PA008","Putri","P","18 tahun","Jl.Manila 7", "Malang",
"65101","085789179834","2016-03-13"),
("PA009","Diana","P","19 tahun","Jl.Anggur 9", "Malang",
"65102","085707428716","2016-03-13"),
("PA010","Kafita","P","23 tahun","Jl.Melati 8", "Malang",
"65132","085707428103","2016-03-14"),
("PA011","Faisal","L","21 tahun","Jl.Kenangan 5", "Malang",
"65104","085707428104","2016-03-14"),
("PA012","Hermawan","L","21 tahun","Jl.Menteng 3", "Malang",
"65106","085773337106","2016-03-15"),
("PA013","Hana","P","11 tahun","Jl.Sawo 2", "Malang",
"65107","085707334287","2016-03-15"),
("PA014","Nana","P","17 tahun","Jl.Melon 4", "Malang",
"65133","085793334287","2016-03-15"),
("PA015","Ani","L","16 tahun","Jl.Raflesia 5", "Malang",
"65111","085679334717","2016-03-16"),
("PA016","Nizam","L","15 tahun","Jl.Nangka 6", "Malang",
"65121","085749334287","2016-03-16"),
("PA017","Nani","P","30 tahun","Jl.Jombang 7", "Malang",
"65115","085679333118","2016-03-16"),
("PA018","Azza","P","24 tahun","Jl.Semangka 21", "Malang",
"65124","085679113428","2016-03-17"),
("PA019","Nuzzayin","L","20 tahun","Jl.Mandala 23", "Malang",
"65123","085679113425","2016-03-17"),
("PA020","Effendi","L","21 tahun","Jl.Mandala 12", "Malang",
"65125","085755232125","2016-03-17"),
("PA021","Zakariyah","L","11 tahun","Jl.Nanas 11", "Malang",
"65126","085755232450","2016-03-18"),
("PA022","Eza","L","31 tahun","Jl.Sunar 12", "Malang",
"65127","085755232459","2016-03-18"),
("PA023","Eny","P","22 tahun","Jl.Sabar 22", "Malang",
"65113","085755232785","2016-03-18"),
("PA024","Nuha","P","20 tahun","Jl.Sunar 23", "Malang",
"65127","085755232455","2016-03-19"),
("PA025","Cinta","P","12 tahun","Jl.Indahna 5",
"Malang","65115","085755232055","2016-03-19");

c. Screenshot Hasil
3. Membuat Table, Memasukkan, dan Menampilkan Data Dokter
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel dokter
 Memasukkan data ke tabel dokter
 Menampilkan data dokter
b. Kode Program
CREATE TABLE dokter(
id_dok VARCHAR(15) NOT NULL,
nama_dok VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
kode_poli VARCHAR(15) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_dok VARCHAR(12) NOT NULL,
PRIMARY KEY(id_dok)
);
INSERT INTO dokter
VALUES
("D001","dr. Iriani, Sp.PD","P","P001","Jl.Jakarta 5",
"Malang","65119","085789173711"),
("D002","dr. Agung, Sp. S","L","P005","Jl.Merdeka 9",
"Malang","66015","085789173700"),
("D003","dr. Zayin, Sp. OT","L","P004","Jl.Mandalawangi
10", "Malang","63215","085789173255"),
("D004","dr. Efendi, Sp. P","L","P009","Jl.Singahraja 11",
"Malang","62215","085789173521"),
("D005","dr. Nurita, Sp. Rad","P","P006","Jl.Sekarsari
12", "Malang","64214","085789176701"),
("D006","dr. Dita, Sp. OT","P","P004","Jl.Andan sari 4",
"Malang","65232","085789173911"),
("D007","dr. Deny, Sp. S","L","P005","Jl.Semarang 14",
"Malang","65112","085789176711"),
("D008","dr. Cintya, Sp. A","P","P002","Jl.Siguragura 16",
"Malang","65233","085789073711"),
("D009","dr. Agung, Sp. M","L","P008","Jl.Buntu 23",
"Malang","65234","085783273711"),
("D010","dr. Setiawan, Sp. PD","L","P001","Jl.Merdeka 19",
"Malang","66015","085789103711"),
("D011","dr. Cici, Sp, JP","P","P007","Jl.Angkasa 01",
"Malang","65235","085783273711"),
("D012","dr. Anton, Sp. Rad","L","P006","Jl.Buntu 98",
"Malang","65234","085783273711"),
("D013","dr. Dinda, Sp. U","L","P012","Jl.Buntu 11",
"Malang","65234","085783273711"),
("D014","dr. Galih, Sp. OT","L","P004","Jl.Bendungan
Sutami 46", "Malang","65116","085894001001"),
("D015","dr. Cintya, Sp. U","P","P012","Jl.Terusan 09",
"Malang","65239","085789089000"),
("D016","dr. Ani, Sp. S","P","P005","Jl.Siguragura 10",
"Malang","65233","085789073719"),
("D017","dr. Budi, Sp. OT","L","P004","Jl.Cinta 01",
"Malang","65236","085789073719"),
("D018","dr. Dody, Sp. B","L","P003","Jl.Jombang 01",
"Malang","65115","085789073703"),
("D019","dr. Diana, Sp. THT","P","P010","Jl.Cemara 98",
"Malang","65238","085789073717"),
("D020","dr. Dani, Sp. PD","L","P001","Jl.Larasliris 31",
"Malang","65236","085789073917"),
("D021","dr. Elfa, Sp. A","P","P002","Jl.Larasliris 16",
"Malang","65276","085779073917"),
("D022","dr. Tora, Sp. JP","L","P007","Jl.Selasi 30",
"Malang","65238","085789073919"),
("D023","dr. Regina, Sp. THT","P","P010","Jl.Terusan 21",
"Malang","65239","085789073917"),
("D024","dr. Putri, Sp. P","P","P009","Jl.Selayar 53",
"Malang","65240","085789073945"),
("D025","dr. Gunawan, Sp. PA","L","P011","Jl.Sumber 12",
"Malang","65241","085789073617");

SELECT*FROM dokter;
c. Screenshot Hasil

4. Membuat Table dan Memasukkan Data Pegawai


a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel pegawai
 Memasukkan data ke tabel pegawai
 Menampilkan data pegawai
b. Kode Program
CREATE TABLE pegawai(
nip INT(15) NOT NULL,
nama_peg VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_peg VARCHAR(12) NOT NULL,
PRIMARY KEY(nip)
);
INSERT into pegawai
VALUES
(15001,"Sutejo","L","Jl. Jakarta
04","Malang","65119","089567008901"),
(15002,"Suratmi","P","Jl. Jombang
11","Malang","65115","089567067812"),
(15003,"Azis","L","Jl. Surabaya
43","Malang","65117","089562314000"),
(15004,"Tanti","P","Jl. Semarang
21","Malang","65112","081267608911"),
(15005,"Niken","P","Jl. Mojokerto
45","Malang","65123","083557908961"),
(15006,"Revina","P","Jl. Galunggung
34","Malang","65114","081231450178"),
(15007,"Hasna","P","Jl. Veteran
55","Malang","65100","083411232009"),
(15008,"Leo","L","Jl. Jakarta 09","Malang","65119","087568432098"),
(15009,"Fadzil","L","Jl. Surabaya
12","Malang","65117","085231456790"),
(15010,"Hilda","P","Jl. Kawi 89","Malang","65118","081323555000"),
(15011,"Nurul","L","Jl. Anggrek
22","Malang","65101","088001320111"),
(15012,"Rofi","L","Jl. Jombang
34","Malang","65115","081200456789"),
(15013,"Lutfi","L","Jl. Kawi 89","Malang","65118","089808567111"),
(15014,"Agung","L","Jl. Semarang
15","Malang","65112","081342546078"),
(15015,"Habil","L","Jl. Bondowoso
64","Malang","65121","089444301987"),
(15016,"Putri","P","Jl. Wilis 37","Malang","65122","087809403112"),
(15017,"Chika","P","Jl. Semarang
54","Malang","65112","081134546000"),
(15018,"Nabila","P","Jl. Mawar
01","Malang","65113","083455678001"),
(15019,"Achmad","L","Jl. Melati
27","Malang","65132","089888302504"),
(15020,"Fardha","P","Jl. Melon
11","Malang","65133","085747012987"),
(15021,"Priyanti","P","Jl. Anggrek
09","Malang","65101","085235670111"),
(15022,"Frisca","P","Jl. Galunggung
71","Malang","65114","085727752515"),
(15023,"Jamal","P","Jl. Melon 21","Malang","65133","087067068981"),
(15024,"Gita","P","Jl. Bendungan Sutami
55","Malang","65116","082897118121"),
(15025,"Faizathi","P","Jl. Ijen
39","Malang","65111","087367048321");

SELECT*FROM pegawai;

c. Screenshot Hasil
5. Membuat Table, Memasukkan Data, dan Menampilkan Data Registrasi
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel registrasi
 Memasukkan pada tabel registrasi
 Menampilkan data registrasi
b. Kode Program
CREATE TABLE registrasi(
id_reg VARCHAR(15) NOT NULL,
no_reg INT(15) NOT NULL,
no_urut INT(5) NOT NULL,
nip INT(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_reg DATE NOT NULL,
PRIMARY KEY(id_reg)
);

INSERT INTO registrasi


VALUES
("REG001","1","1",15001,"PA001","2016-03-12"),
("REG002","2","2",15006,"PA002","2016-03-12"),
("REG003","3","3",15023,"PA003","2016-03-12"),
("REG004","4","4",15021,"PA004","2016-03-13"),
("REG005","5","5",15012,"PA005","2016-03-13"),
("REG006","6","6",15004,"PA006","2016-03-13"),
("REG007","7","7",15003,"PA007","2016-03-13"),
("REG008","8","8",15002,"PA008","2016-03-13"),
("REG009","9","9",15003,"PA009","2016-03-13"),
("REG010","10","10",15011,"PA010","2016-03-14"),
("REG011","11","11",15010,"PA011","2016-03-14"),
("REG012","12","12",15017,"PA012","2016-03-15"),
("REG013","13","13",15019,"PA013","2016-03-15"),
("REG014","14","14",15008,"PA014","2016-03-15"),
("REG015","15","15",15024,"PA015","2016-03-16"),
("REG016","16","16",15013,"PA016","2016-03-16"),
("REG017","17","17",15019,"PA017","2016-03-16"),
("REG018","18","18",15015,"PA018","2016-03-17"),
("REG019","19","19",15007,"PA019","2016-03-17"),
("REG020","20","20",15002,"PA020","2016-03-17"),
("REG021","21","21",15004,"PA021","2016-03-18"),
("REG022","22","22",15022,"PA022","2016-03-18"),
("REG023","23","23",15012,"PA023","2016-03-18"),
("REG024","24","24",15020,"PA024","2016-03-19"),
("REG025","25","25",15003,"PA025","2016-03-19");

SELECT*FROM registrasi;

c. Screenshot Hasil
6. Membuat Table, Memasukkan Data, dan Menampilkan Transaksi
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel transaksi
 Memasukkan data pada tabel transaksi
 Menampilkan data transaksi
b. Kode Program
CREATE TABLE transaksi(
id_transaksi VARCHAR(10) NOT NULL,
NamaTransaksi VARCHAR(255) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_trans DATE NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
Tarif INT(10) NOT NULL,
PRIMARY KEY(id_transaksi));

INSERT INTO transaksi


VALUES
("TR001","Pembayaran berobat","PA001","2016-03-
12","OPR002","14190"),
("TR002","Pembayaran berobat","PA002","2016-03-
12","OVI005","21650"),
("TR003","Pembayaran berobat","PA003","2016-03-
12","OAG001","14600"),
("TR004","Pembayaran berobat","PA004","2016-03-
13","OAT001","15600"),
("TR005","Pembayaran berobat","PA005","2016-03-
13","OVI001","23400"),
("TR006","Pembayaran berobat","PA006","2016-03-
13","OPR002","14190"),
("TR007","Pembayaran berobat","PA007","2016-03-
13","OVI005","21650"),
("TR008","Pembayaran berobat","PA008","2016-03-
13","OAN001","14500"),
("TR009","Pembayaran berobat","PA009","2016-03-
13","OPR005","16190"),
("TR010","Pembayaran berobat","PA010","2016-03-
14","OAN005","13400"),
("TR011","Pembayaran berobat","PA011","2016-03-
14","OAT002","16350"),
("TR012","Pembayaran berobat","PA012","2016-03-
15","OPR003","12750"),
("TR013","Pembayaran berobat","PA013","2016-03-
15","OAT001","15600"),
("TR014","Pembayaran berobat","PA014","2016-03-
15","OAG005","15690"),
("TR015","Pembayaran berobat","PA015","2016-03-
16","OPR005","16190"),
("TR016","Pembayaran berobat","PA016","2016-03-
16","OAN001","14500"),
("TR017","Pembayaran berobat","PA017","2016-03-
16","OAT001","15600"),
("TR018","Pembayaran berobat","PA018","2016-03-
17","OAG002","13580"),
("TR019","Pembayaran berobat","PA019","2016-03-
17","OAN003","12300"),
("TR020","Pembayaran berobat","PA020","2016-03-
17","OAG005","15690"),
("TR021","Pembayaran berobat","PA021","2016-03-
18","OAG002","13580"),
("TR022","Pembayaran berobat","PA022","2016-03-
18","OAN004","11900"),
("TR023","Pembayaran berobat","PA023","2016-03-
18","OAT002","16350"),
("TR024","Pembayaran berobat","PA024","2016-03-
19","OAN003","12300"),
("TR025","Pembayaran berobat","PA025","2016-03-
19","OPR002","14190");
SELECT*FROM transaksi;

c. Screenshot Hasil

7. Membuat Table, Memasukkan Data dan Menampilkan Data Penyakit


a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel penyakit
 Memasukkan data ke tabel penyakit
 Menampilkan data penyakit
b. Kode Program
CREATE TABLE penyakit(
id_penyakit VARCHAR(15) NOT NULL,
nama_penyakit VARCHAR(225) NOT NULL,
keterangan VARCHAR(225) NOT NULL,
PRIMARY KEY(id_penyakit));

INSERT INTO penyakit


VALUES
("PE001","Demam Tifoid","Menular"),
("PE002","Tuberkulosis","Menular"),
("PE003","Demam Hemoragik","Menular"),
("PE004","Kutil Genitalis","Menular"),
("PE005","Sifilis","Menular"),
("PE006","Demam Chikungunya","Menular"),
("PE007","Herpes Simplek","Menular"),
("PE008","Influenza","Menular"),
("PE009","Tifus Murin","Menular"),
("PE010","Abses Tangan","Menular"),
("PE011","Kolera","Menular"),
("PE012","Miopi","Tidak Menular"),
("PE013","Hipertensi","Tidak Menular"),
("PE014","Diabetes","Tidak Menular"),
("PE015","Osteoporosis","Tidak Menular"),
("PE016","Patah Tulang","Tidak Menular"),
("PE017","Sariawan","Tidak Menular"),
("PE018","Kanker","Tidak Menular"),
("PE019","Ambeien","Tidak Menular"),
("PE020","Asam Urat","Tidak Menular"),
("PE021","Jantung Lemah","Tidak Menular"),
("PE022","Amandel","Tidak Menular"),
("PE023","Gagal Ginjal","Tidak Menular"),
("PE024","Rematik","Tidak Menular"),
("PE025","Usus Buntu","Tidak Menular");

SELECT*FROM penyakit;

c. Screenshot Hasil
8. Membuat Table, Memasukkan Data, dan Menampilkan Data Resep
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel resep
 Memasukkan data ke tabel resep
 Menampilkan data resep
b. Kode Program
CREATE TABLE resep(
id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_resep VARCHAR(15) NOT NULL,
kode_obat VARCHAR(15) NOT NULL,
dosis VARCHAR(255) NOT NULL,
jumlah INT(5) NOT NULL,
PRIMARY KEY(no_resep)
);

INSERT INTO resep


VALUES
("D001","PA001","R001","OPR002","3 x sehari 1 tablet","1"),
("D018","PA002","R002","OVI005","3 x sehari 1 tablet","1"),
("D018","PA003","R003","OAG001","3 x sehari 1 tablet","1"),
("D012","PA004","R004","OAT001","3 x sehari 1 tablet","1"),
("D022","PA005","R005","OVI001","3 x sehari 1 tablet","1"),
("D009","PA006","R006","OPR002","3 x sehari 1 tablet","1"),
("D003","PA007","R007","OVI005","3 x sehari 1 tablet","1"),
("D006","PA008","R008","OAN001","3 x sehari 1 tablet","1"),
("D010","PA009","R009","OPR005","3 x sehari 1 tablet","1"),
("D018","PA010","R010","OAN005","3 x sehari 1 tablet","1"),
("D011","PA011","R011","OAT002","3 x sehari 1 tablet","1"),
("D009","PA012","R012","OPR003","3 x sehari 1 tablet","1"),
("D024","PA013","R013","OAT001","3 x sehari 1 tablet","1"),
("D023","PA014","R014","OAG005","3 x sehari 1 tablet","1"),
("D012","PA015","R015","OPR005","3 x sehari 1 tablet","1"),
("D004","PA016","R016","OAN001","3 x sehari 1 tablet","1"),
("D018","PA017","R017","OAT001","3 x sehari 1 tablet","1"),
("D012","PA018","R018","OAG002","3 x sehari 1 tablet","1"),
("D016","PA019","R019","OAN003","3 x sehari 1 tablet","1"),
("D004","PA020","R020","OAG005","3 x sehari 1 tablet","1"),
("D023","PA021","R021","OAG002","3 x sehari 1 tablet","1"),
("D023","PA022","R022","OAN004","3 x sehari 1 tablet","1"),
("D022","PA023","R023","OAT002","3 x sehari 1 tablet","1"),
("D018","PA024","R024","OAN003","3 x sehari 1 tablet","1"),
("D010","PA025","R025","OPR002","3 x sehari 1 tablet","1");

SELECT*FROM resep;

c. Screenshot Hasil
9. Membuat Table dan Memasukkan Data Obat
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel obat
 Memasukkan data ke tabel obat
b. Kode Program
CREATE TABLE obat(
jenis_obat VARCHAR(225) NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
merk VARCHAR(255) NOT NULL,
harga INT(10) NOT NULL,
stok VARCHAR(10) NOT NULL,
PRIMARY KEY(kode_obat));

INSERT INTO obat


VALUES
("Paracetamol","OPR001","Bodrexin","3100","10"),
("Paracetamol","OPR002","Dumin","4190","100"),
("Paracetamol","OPR003","Pamol","2750","100"),
("Paracetamol","OPR004","Sanmol","2890","100"),
("Paracetamol","OPR005","Proris","6190","100"),
("Antibiotik","OAN001","Amoxicillin","4500","100"),
("Antibiotik","OAN002","Cefadroxil","3450","100"),
("Antibiotik","OAN003","Erythromicyn","2300","100"),
("Antibiotik","OAN004","Ciprofloxacin","1900","100"),
("Antibiotik","OAN005","Tetrasiklin","3400","100"),
("Antiseptik","OAT001","Betadine","5600","100"),
("Antiseptik","OAT002","Alphadine","6350","100"),
("Antiseptik","OAT003","Iosal","3450","100"),
("Antiseptik","OAT004","Minosep","7850","100"),
("Antiseptik","OAT005","Duvodine","11500","100"),
("Vitamin","OVI001","Neurobion","13400","67"),
("Vitamin","OVI002","Neurodex","6780","100"),
("Vitamin","OVI003","Caviplex","5600","103"),
("Vitamin","OVI004","Berocca","4900","200"),
("Vitamin","OVI005","Becombion Forte","11650","100"),
("Analgetik","OAG001","Methadon","4600","200"),
("Analgetik","OAG002","Fentanil","3580","120"),
("Analgetik","OAG003","Kodein","2340","90"),
("Analgetik","OAG004","Ibuprofen","1980","100"),
("Analgetik","OAG005","Asam Mefenamat","5690","57");

SELECT*FROM obat;

c. Screenshot Hasil
10. Membuat Table, Memasukkan Data, Menampilkan Data JadwalPraktek
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel
JadwalPraktek
 Memasukkan data ke tabel JadwalPraktek
 Menampilkan data JadwalPraktek
b. Kode Program
CREATE TABLE JadwalPraktek(
id_dok VARCHAR(15) NOT NULL,
KodeJadwal VARCHAR(15) NOT NULL,
Hari VARCHAR(10) NOT NULL,
JamMulai VARCHAR(10) NOT NULL,
JamSelesai VARCHAR(10) NOT NULL,
PRIMARY KEY(KodeJadwal));

INSERT INTO JadwalPraktek


VALUES
("D001","JP001","Senin","09.00","11.30"),
("D002","JP002","Rabu","08.00","10.00"),
("D003","JP003","Selasa","09.00","11.30"),
("D004","JP004","Kamis","13.00","14.00"),
("D005","JP005","Senin","13.00","15.00"),
("D006","JP006","Rabu","14.00","16.00"),
("D007","JP007","Selasa","15.00","16.00"),
("D008","JP008","Kamis","09.00","11.30"),
("D009","JP009","Jum'at","08.00","10.30"),
("D010","JP010","Senin","10.00","11.00"),
("D011","JP011","Kamis","10.30","11.30"),
("D012","JP012","Rabu","13.00","15.00"),
("D013","JP013","Selasa","9.45","11.00"),
("D014","JP014","Jum'at","13.00","15.00"),
("D015","JP015","Senin","08.30","11.30"),
("D016","JP016","Selasa","10.30","11.30"),
("D017","JP017","Rabu","9.45","11.00"),
("D018","JP018","Kamis","08.00","10.00"),
("D019","JP019","Selasa","08.30","11.30"),
("D020","JP020","Senin","14.00","16.00"),
("D021","JP021","Rabu","08.30","11.30"),
("D022","JP022","Jum'at","15.00","16.00"),
("D023","JP023","Selasa","14.00","16.00"),
("D024","JP024","Kamis","15.00","16.00"),
("D025","JP025","Senin","15.00","16.00");

SELECT*FROM JadwalPraktek;

c. Screenshot Hasil
11. Membuat Table Pemeriksaan
a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel
pemeriksaan
b. Kode Program
CREATE TABLE pemeriksaan(
id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_urut INT(5) NOT NULL,
keluhan VARCHAR(255) NOT NULL,
diagnosa VARCHAR(255) NOT NULL,
id_penyakit VARCHAR(15) NOT NULL,
berat_badan VARCHAR(10) NOT NULL);

INSERT INTO pemeriksaan


VALUES
("D001","PA001","1","sakit perut","Diabetes","PE014","50 Kg"),
("D018","PA002", "2","benjolan","kanker","PE018","65 Kg"),
("D018","PA003", "3","kejang kejang","Migrain","PE017","40
Kg"),
("D012","PA004","4","nyeri","Osteoporosis","PE015","30 Kg"),
("D022","PA005","5","nyeri di jantung","hipertensi","PE013","20
Kg"),
("D009","PA006","6","penglihatan buram","Miopi","PE012","50
Kg"),
("D003","PA007","7","infeksi selaput
saraf","Meningitis","PE007","50 Kg"),
("D006","PA008","8","linu","Leptospirosis","PE004","45 Kg"),
("D010","PA009","9","nyeri perut","gagal ginjal","PE023","57
Kg"),
("D018","PA010","10","sakit perut","usus buntu","PE025","68
Kg"),
("D011","PA011","11","cepat letih","jantung lemah","PE021","47
Kg"),
("D009","PA012","12","penglihatan buram","Miopi","PE012","45
Kg"),
("D024","PA013","13","sesak nafas","Asma","PE019","40 Kg"),
("D023","PA014","14","sakit telinga","radang
telinga","PE024","30 Kg"),
("D012","PA015","15","terkilir","patah tulang","PE016","31
Kg"),
("D004","PA016","16","sesak nafas","Asma","PE019","32 Kg"),
("D018","PA017","17","terkilir","patah tulang","PE016","47
Kg"),
("D012","PA018","18","mata lelah","katarak","PE022","43 Kg"),
("D016","PA019","19","batuk","Tuberkulosis","PE002","54 Kg"),
("D004","PA020","20","batuk","Tuberkulosis","PE002","20 Kg"),
("D023","PA021","21","mata lelah","katarak","PE022","47 Kg"),
("D023","PA022","22","penglihatan buram","Miopi","PE012","40
Kg"),
("D022","PA023","23","cepat letih","jantung lemah","PE021","50
Kg"),
("D018","PA024","24","benjolan","Kanker","PE018","56 Kg"),
("D010","PA025","25","sakit perut","Diabetes","PE014","20 Kg"),
("D011","PA026","26","cepat letih","jantung lemah","PE026","35
Kg"),
("D006","PA027","27","linu","Leptospirosis","PE004","23 Kg");

SELECT*FROM pemeriksaan;
c. Screenshot Hasil

12. Membuat Table, Memasukkan Data, dan Menampilkan Data Poli


a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel poli
 Memasukkan data ke tabel poli
 Menampilkan data tabel poli
b. Kode Program
CREATE TABLE poli(
kode_poli VARCHAR(10) NOT NULL,
nama_poli VARCHAR(50) NOT NULL,
PRIMARY KEY(kode_poli));
INSERT INTO poli
VALUES
("P001","Penyakit Dalam"),
("P002","Anak"),
("P003","Bedah Umum"),
("P004","Bedah Orthopedi"),
("P005","Saraf"),
("P006","Radiologi"),
("P007","Jantung"),
("P008","Mata"),
("P009","Paru"),
("P010","THT");

SELECT*FROM poli;

c. Screenshot Hasil

13. Membuat Table, Memasukkan Data, dan Menampilkan Data ambil_poli


a. Langkah-langkah
 Menuliskan pernyataan SQL untuk membuat tabel ambil_poli
 Memasukkan data ke tabel ambil_poli
 Menampilkan data ambil_poli
b. Kode Program
CREATE TABLE ambil_poli(
id_pas VARCHAR(15) NOT NULL,
kode_poli VARCHAR(10) NOT NULL);

INSERT INTO ambil_poli


VALUES
("PA001","P001"),
("PA002","P003"),
("PA003","P005"),
("PA004","P006"),
("PA005","P007"),
("PA006","P008"),
("PA007","P004"),
("PA008","P004"),
("PA009","P001"),
("PA010","P003"),
("PA011","P007"),
("PA012","P008"),
("PA013","P009"),
("PA014","P010"),
("PA015","P006"),
("PA016","P009"),
("PA017","P003"),
("PA018","P006"),
("PA019","P005"),
("PA020","P009"),
("PA021","P010"),
("PA022","P010"),
("PA023","P007"),
("PA024","P003"),
("PA025","P001");

SELECT*FROM ambil_poli;

c. Screenshot Hasil
F. Studi Kasus
FUNGSI AGREGAT
1. Studi Kasus 1
Untuk mempermudah pegawai dalam melayani pasien maka di
butuhkan perintah yang dapat menampilkan harga daftar mulai dari yang
termurah sampai dengan yang termahal.
Berdasarkan tabel obat, tampilkan harga obat termurah !
a. Kode Program
SELECT MIN(harga) AS harga
FROM obat;

b. Screenshot Hasil

c. Penjelasan
Dari fungsi agregat “MIN” dapat mengembalikan nilai terkecil
(minimal) di suatu kolom. Jadi Melalui perintah “SELECT
MIN(harga) AS harga FROM obat; ” dapat di tampilkan harga obat
yang termurah dari tabel obat.

2. Studi Kasus 2
Untuk mempermudah pegawai mengetahui pendapatan dari hasil
penebusan resep obat pada waktu tertentu dibutuhkan perintah untuk
mengetahui jumlah rata rata tarif dengan waktu yang telah ditentukan.
Berdasarkan tabel transaksi, tampilkan rata2 tarif pada tanggal 13-03-
2016 !
a. Kode Program

SELECT AVG(Tarif) As rata_rata_tarif


FROM transaksi
WHERE tgl_trans = "2016-03-13";

b. Screenshot Hasil
c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan rata rata dengan perintah AVG(Tarif) dari kolom
tarif pada tabel transaksi dimana tgl_trans = "2016-03-13";.

3. Studi Kasus 3
Agar pegawai mengetahui data pasien tertentu dengan
membedakan berdasarkan jenis kelamin dan umurnya.
Berdasarkan tabel pasien, tampilkan jumlah pasien berjenis kelamin L dan
umur lebih dari 20 tahun !
a. Kode Program

SELECT COUNT(jk) AS jumlah


FROM pasien
WHERE jk = "L" and umur>="20";

b. Screenshot Hasil

c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan jumlah dari pasien yang memiliki jenis kelamin
Laki laki dengan perintah SELECT COUNT(jk) AS jumlah. Dan umur
kurang dari 20 tahun dengan perintah WHERE jk = "L" and
umur>="20" .
4. Studi Kasus 4
Agar pegawai mengetahui rekapan hasil atau junlah tarif
penebusan resep obat pada waktu tertentu agar kevalidtan data terjaga
sebagai arsip keamanan keuangan.
Berdasarkan tabel transaksi, tampilkan jumlah tarif pada tanggal 12-03-
2016 !
a. Kode Program

SELECT SUM(Tarif) AS jumlah


FROM transaksi
WHERE tgl_trans = "2016-03-12";

b. Screenshot Hasil

c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan total jumlah tarif pada tanggal 12-03-2016.
Dengan menggunakan perintah dari fungsi SELECT SUM(Tarif) AS
jumlah (AS sebagi alias) dari tabel transaksi dimana tanggal
transaksi adalah 12-03-2016 dengan perintah WHERE tgl_trans =
"2016-03-12".

5. Studi Kasus 5
Untuk mempermudah pegawai dalam melayani pasien maka di
butuhkan perintah yang dapat menampilkan harga daftar mulai dari yang
termurah sampai dengan yang termahal.
Berdasarkan tabel obat, tampilkan harga obat termahal !
a. Kode Program

SELECT MAX(harga) AS harga


FROM obat;

b. Screenshot Hasil
c. Penjelasan
Dari fungsi agregat “MAX” dapat mengembalikan nilai terbesar
(maksimal) di suatu kolom. Jadi Melalui perintah “SELECT
MAX(harga) AS harga FROM obat; ” dapat di tampilkan harga obat
yang paling mahal dari tabel obat.

6. Studi Kasus 6
Dalam mempermudah pegawai dalam melayani pasien. Pegawai
perlu mengetahui jumlah stok pada obat untuk mengkntrol agar
persediaan obat tidak mengalami kekurangan stok atau saat stok
kosong.
Berdasarkan tabel obat, tampilkan daftar obat yang mempunyai stok
kurang dari 100 !
a. Kode Program

SELECT*FROM obat
WHERE stok<100;

b. Screenshot Hasil

c. Penjelasan
Untuk mengetahui stok atau persediaan obat pada batas jumlah
tertentu cotoknya untuk mengetahui dan menampilkan stok obat yang
kurang dari 100 menggunakan perintah SELECT*FROM obat WHERE
stok<100.
7. Studi Kasus 7
Dalam mempermudah pegawai dalam melayani pasien. Pegawai
perlu mengetahui daftar harga berdasarkan nama obat yang tertulis
pada resep obat yang telah ditulis oleh dokter.
Berdasarkan tabel obat, tampilkan daftar obat yang mempunyai harga
lebih dari 10000, selain jenis obat antiseptik !
a. Kode Program

SELECT*FROM obat
WHERE harga>10000 AND jenis_obat != "Antiseptik";

b. Screenshot Hasil

c. Penjelasan
Untuk mengetahui daftar harga dengan ketentuan lain mengguakan
perintah (AND) yaitu berdasarkan jenis obat dan yang tidak termasuk (
menggunakan tanda ! ) yaitu jedi obat Antiseptik yaitu dengan
mengguakan perintah SELECT*FROM obat WHERE harga>10000
AND jenis_obat != "Antiseptik".

8. Studi Kasus 8
Untuk memudahkan pegawai dalam merekap jumlah masing-
masing poli maka dibutuhkan perintah untuk mengerjakan pekerjaan
pegawai.
Berdasarkan tabel poli, berapa jumlah pasien yang mengambil poli P010?
a. Kode Program
SELECT kode_poli, COUNT(kode_poli)
FROM ambil_poli
WHERE kode_poli = "P010"
GROUP BY kode_poli;

b. Screenshot Hasil
c. Penjelasan
Untuk menghitung jumlah pasien yang mengambil suatu poli,
maka digunakan fungsi COUNT pada kode poli.

JOIN & UNION

9. Studi Kasus 9
Untuk mempermudah pasien dan pegawai dalam mengetahui
nama-nama dokter yang memiliki poli dan nama polinya, maka
dibutuhkan perintah untuk mengetahui nama dokter dan spesialis nya.
Tampilkan id_dok, nama_dok pada tabel dokter yang memiliki poli
a. Kode Program
SELECT d.id_dok, d.nama_dok, p.kode_poli,
p.nama_poli
FROM dokter d INNER JOIN poli p
WHERE d.kode_poli = p.kode_poli;

b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan id_dok, nama_dok yang mempunyai
kode_poli dan nama_poli, maka dibutuhkan perintah INNER JOIN,
karena pada tabel dokter yang sesuai dengan perintah hanya terdapat
id_dok, nama_dok, dan kode_poli, sehingga jika menggunakan tabel
dokter saja maka tidak bisa mengetahui dokter tersebut mempunyai
poli apa. Untuk dapat menampilkan sesuai perintah, maka
menggunakan INNER JOIN untuk menemukan persimpangan
(intersection) antara tabel dokter dan tabel poli.

10. Studi Kasus 10


Terkadang pada suatu poliklinik terdapat dokter baru yang
memiliki poli belum terdaftar pada daftar poli poliklinik tersebut. Maka
untuk mempermudahkan mengetahui siapa saja dokter yang spesialisnya
belum masuk ke daftar poli, maka dibutuhkan suatu perintah untuk
mengetahuinya.
Tampilkan id_dok, nama_dok pada tabel dokter yang tidak memiliki poli
a. Kode Program
SELECT d.id_dok, d.nama_dok, p.kode_poli, p.nama_poli
FROM dokter d LEFT OUTER JOIN poli p
ON d.kode_poli = p.kode_poli
WHERE p.kode_poli IS NULL;
b. Screenshot Hasil

c. Penjelasan
Untuk menampilkan id_dok, nama_dok pada tabel dokter yang
tidak memiliki poli, maka dibutuhkan perintah LEFT OUTER JOIN,
karena id_dok dan nama_dok dari tabel dokter ditambah dengan nilai
dari tabel poli, sehingga akan menampilkan dan menampilkan
id_dok dan nama_dok yang tidak memiliki poli.

11. Studi Kasus 11


Setiap pegawai kesusahan jika harus mencari-cari data pasien
yang mengambil poli yang sama, maka dari itu dibutuhkan perintah untuk
mempermudah pegawai dalam mengelompokkan pasien berdasarkan poli
yang diambil oleh pasien.
Dapatkan nama pasien yang mengambil poli THT
a. Kode Program
SELECT pa.nama_pas
FROM pasien pa INNER JOIN
ambil_poli ap INNER JOIN poli p
ON pa.id_pas = ap.id_pas AND
ap.kode_poli = p.kode_poli
WHERE p.nama_poli = "THT";

b. Screenshot Hasil
c. Penjelasan
Untuk mendapatkan pasien yang mengambil poli THT maka
dibutuhkan perintah INNER JOIN, karena untuk mendapatkan data
tersebut memerlukan persimpangan antara tabel pasien dengan
ambil_poli dan persimpangan antara tabel ambil_poli dengan tabel
poli. Dengan menentukan nama poli “THT” pada tabel poli.

12. Studi Kasus 12


Ketika dokter memeriksa pasien, maka dokter akan membuat resep
untuk pasien yang nantinya akan dirujuk ke obat. Maka untuk
memudahkan dalam mengetahui dokter siapa yang memberikan resep
kepada pasien, dibutuhkan perintah untuk menampilkan id_dok dan
id_pas.
Gabungkan id_dok dan id_pas pada tabel pemeriksaan dengan id_dok dan
id_pas pada tabel resep
a. Kode Program
SELECT id_dok, id_pas
FROM resep
UNION
SELECT id_dok, id_pas
FROM pemeriksaan;

b. Screenshot Hasil
c. Penjelasan
Untuk menggabungkan dua buah tabel, digunakan perintah
UNION. Perintah UNION memiliki beberapa ketentuan, yaitu jumlah
kolom/field dari statement SELECT harus sama, dan tipe data
kolom/field dari statement SELECT harus kompatibel. Sehingga
dengan menggunakan perintah tersebut dapat menggabungkan id_dok
dan id_pas pemeriksaan dengan resep.

13. Studi Kasus 13


Pada sebuah poliklinik untuk memudahkan dalam mengetahui
nama dokter yang menangani pasien dan berapa tarif yang harus dibayar
oleh pasien, maka dibutuhkan perintah untuk menampilkannya.
Tampilkan nama dokter yang menangani pasien, nama pasien dan tarif
transaksi yang harus dibayar
a. Kode Program
SELECT d.nama_dok, pa.nama_pas, t.Tarif
FROM dokter d INNER JOIN pemeriksaan p INNER JOIN transaksi t
INNER JOIN pasien pa
WHERE d.id_dok = p.id_dok AND p.id_pas = t.id_pas AND t.id_pas
= pa.id_pas;
b. Screenshot Hasil

c. Penjelasan
Untuk menampilkan nama dokter yang menangani pasien, nama
pasien dan tarif transaksi yang harus dibayar, maka digunakan
perintah INNER JOIN di 4 tabel, karena dalam menampilkan ketiga
field tersebut membutuhkan id_pas pada tabel pasien, pemeriksaan,
dan juga tabel transaksi, lalu id_dok pada tabel dokter untuk
menampilkan nama dokter yang menangani pasien.

14. Studi Kasus 14


Dalam dunia kesehatan, akan ditinjau ulang obat mana yang
selalu keluar dan obat mana yang tidak pernah keluar, sehingga dapat
meminimalisir expired obat dan pengeluaran untuk stok obat.
Tampilkan daftar obat yang tidak pernah ada di tabel resep dan tidak ada
duplikasi data
a. Kode Program
SELECT DISTINCT o.jenis_obat, o.kode_obat, o.merk
FROM resep r RIGHT OUTER JOIN obat o
ON r.kode_obat = o.kode_obat
WHERE r.kode_obat IS NULL;

b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan daftar obat yang tidak pernah ada di tabel
resep dan tidak ada duplikasi data, maka digunakan perintah RIGHT
OUTER JOIN pada tabel resep dan obat. Karena akan mengembalikan
semua nilai dari tabel resep ditambah dengan nilai tabel obat yang
sesuai, dimana kode obat pada resep sama dengan NULL (kosong)
atau tidak ada dalam tabel resep.

15. Studi Kasus 15


Untuk mempermudah mengetahui id_dok, nama_dok yang
menangani pasien beserta id_pas dan nama_pas, maka dibutuhkan
perintah untuk mempermudah pekerjaan.
Tampilkan id_dok, nama dokter yang menangani pasien beserta id_pas
dan nama_pas
a. Kode Program
SELECT d.id_dok, d.nama_dok, pa.id_pas, pa.id_pas
FROM dokter d CROSS JOIN pemeriksaan p INNER JOIN
pasien pa
WHERE d.id_dok = p.id_dok AND p.id_pas = pa.id_pas;

b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan id_dok, nama dokter yang menangani pasien
beserta id_pas dan nama_pas, dibutuhkan perintah CROSS JOIN dan
INNER JOIN. Karena untuk menampilkan nama dokter membutuhkan
tabel dokter dan nama pasien membutuhkan tabel pasien.

16. Studi Kasus 16


Untuk membantu pegawai dalam mengetahui pasien mana yang sudah
registrasi, maka dibutuhkan program untuk memudahkannya.
Penggabungan dua tabel (pasien dan registrasi) secara full outer join
a. Kode Program
SELECT * FROM pasien p LEFT OUTER JOIN
registrasi r
ON p.id_pas = r.id_pas
UNION
SELECT * FROM pasien p RIGHT OUTER JOIN
registrasi r
ON p.id_pas = r.id_pas;

b. Screenshot Hasil
c. Penjelasan
Untuk mengatahui data pasien dan data registrasi yang dilakukan
pasien dapat menggunakan penggabungan 2 tabel, yakni tabel pasien
dengan tabel registrasi. Dapat juga menggunakan penggabungan
UNION atau FULL OUTER JOIN. Joinkan tabel pasien dengan tabel
registrasi secara LEFT OUTER JOIN kemudian Joinkan tabel pasien
dengan tabel registrasi secara RIGHT OUTER JOIN kemudian
gabungkan keduanya dengan UNION.

SUBQUERY & VIEW


17. Studi Kasus 17
Melihat data doktor secara lengkap beserta jenis kelaminya atau
ada ketentuan lain.
Dendapatkan data dokter yang memiliki jenis kelamin sama dengan
pegawai bernama “Sutejo”.!
a. Kode Program
SELECT * FROM dokter
WHERE jk = (SELECT jk FROM pegawai WHERE
nama_peg = "Sutejo");

b. Screenshot Hasil
c. Penjelasan
Menurut perintah diatas diman perintah akan menampilkan data
dokter yang memiliki jenis kelamin yang sama dengan dosen
“Sutejo”. Dengan cara menggabungkan dua tabel tabel yaitu tabel
dokter dan tabel pegawai kemudian akan di ambil dari fild jk WHERE
jk = (SELECT jk FROM pegawai WHERE nama_peg = "Sutejo");
untuk megetahui jenis kelamin dari dosen yaitu Laki laki karena jk
sma dengan jk dari nama_peg nama_peg = "Sutejo");

18. Studi Kasus 18


Untuk mempermudah pegawai dan dokter dalam mengetahui
daftar daftar pasien yang di periksanya seperti riwayat penyakitnya.
Tampilkan id_dok dan nama_dok yang memeriksa pasien !
a. Kode Program

SELECT d.id_dok, d.nama_dok


FROM dokter d
WHERE d.id_dok IN(SELECT id_dok FROM pemeriksaan p);

b. Screenshot Hasil
c. Penjelasan
Dari perintah di atas kita bisa mengetahui daftar dokter dokter
siapa saja yang memriksa pasien . menggunakan perintah select dari
tabel dokter berupa id dan namanya. yang diinisialisasikan SELECT
d.id_dok, d.nama_dok. Dan kemudian dimana dokter
tersebut memmerikasa pasien . arrtinya berarti kita bisa
mencocoknyanya dengan tabel pemeriksaan yang diinisialisasikn
p.yaitu SELECT d.id_dok, d.nama_dok FROM dokter
d WHERE d.id_dok IN(SELECT id_dok FROM
pemeriksaan p);

19. Studi Kasus 19


Ada pasien yang tidak mengetahui prosedur dalam pendaftaran
pada poliklinik. Kemudian dia langsung masuk ke dalam ruang
pemeriksaan. Tetapi tetap di tangani oleh dokter.
Tampilkan data pemeriksaan pasien yang tidak terdaftar !
a. Kode Program

SELECT*FROM pemeriksaan p
WHERE NOT EXISTS(SELECT*FROM pasien pa
WHERE p.id_pas = pa.id_pas);

b. Screenshot Hasil
c. Penjelasan
Dari peribtah diatas untuk mengetahui data pemeriksaan dimana p
sebagai inisialisai (SELECT*FROM pemeriksaan p) yang mana salah
satu datanya tidak ada pada tabel pasien yang mana pa menjadi
inisialisasi yang memiliki id_pas yang sama. WHERE NOT
EXISTS(SELECT*FROM pasien pa WHERE p.id_pas =
pa.id_pas);

20. Studi Kasus 20


Untuk mengetahui data data transaksi yang menyangkut tarif tarif
diamana ada yang bertransaksi dengan tarif yang lebih besar di antara
semua transaksi berdasarkan tanggal transaksinya.
Tampilkan data transaksi yang memiliki tarif lebih besar dari semua tarif
transaksi di tanggal 2016-03-12 !
a. Kode Program

SELECT*FROM transaksi
WHERE Tarif > ALL
(SELECT Tarif FROM transaksi
WHERE tgl_trans = "2016-03-12");

b. Screenshot Hasil

c. Penjelasan
Dari perintah diatas kita dapat mengetahui tarif yang diperoleh
dengan tarif yang paling besar mencakup diambil dari semua data
pada tabel . jadi untuk memper oleh data tersebut menggunakan
perintah ALL untuk melibatkan semua data dalam tabel transaksi
dalam mencari tarif terbesar pada taggal transaksi di
tanggal 2016-03-12. Dengan perintah diatas.

21. Studi Kasus 21


Dalam penggunaan obat memiliki manfaat atau fungsi fungsi
tertentu berdasarkan penyakit pasiennya begitu pula dengan dosis obat
yang telah di tulis dokter pada resep untuk penembusan obat.
Tampilkan data obat yang tidak dianjurkan ke resep oleh dokter !!
a. Kode Program

SELECT*FROM obat o
WHERE EXISTS(SELECT*FROM resep r
WHERE o.kode_obat = r.kode_obat);

b. Screenshot Hasil

c. Penjelasan
Dari perintah diatas akan mengetahui nilai yang ada dalam tabel.
(WHERE EXISTS(SELECT*FROM resep r WHERE o.kode_obat =
r.kode_obat);) yaitu dimana tabel resep yang diiniliasisasikan oleh r
dan o untuk tabel obat. Dari masing masing tabel akan di cari
kode_obatnya.

22. Studi Kasus 22


Untuk mempermudah pegawai mengetahui daftar pasien
berdasarkan poli yang di ambil dengan ketentuan rincian poli yang telah
di tentukan tanpa membuat perintah query yang panjang.
Definisikan updatable view untuk menampilkan pasien yang mengambil
poli Mata !
a. Kode Program

CREATE VIEW vPasPoliMata


AS
SELECT * FROM pasien
WHERE id_pas IN
(SELECT id_pas FROM ambil_poli
WHERE kode_poli IN (SELECT kode_poli FROM
poli
WHERE nama_poli = "Mata"));

SELECT*FROM vPasPoliMata;

b. Screenshot Hasil

c. Penjelasan
Dari perintah diatas kita akan membuat perintah view sebagai
pengganti (CREATE VIEW vPasPoliMata AS SELECT * FROM
pasien ) perintah select untuk menampilkan tabel pasien yang di
dalamnya terdapat subquery berupa perintah untuk menampilkan
pasien yang mengambil poli mata. Dengan menampilkan id_pas dari
tabel ambil_poli dimana kode_poli dari tabel poli berupa
nama_polinya adalah poli “Mata”. Jadi ngefisienkan pada perintah
SELECT. Karna tidak lagi menggunakan perintah deng query yang
panjang. Kemudian langsung menggunakan perintah vie yang telah
dibuat tadi yaitu SELECT*FROM vPasPoliMata;.
23. Studi Kasus 23
Untuk mempermudah pegawai mengetahui jumlahnya pasien
berdasarkan poli yang di ambil tanpa membuat perintah query yang
panjang.
Definisikan view untuk menampilkan jumlah pasien pada masing masing
poli !
a. Kode Program

CREATE VIEW vCountPasien


AS
SELECT kode_poli, COUNT(*) AS jumlah FROM
pasien, ambil_poli
WHERE pasien.id_pas = ambil_poli.id_pas
GROUP BY kode_poli;

SELECT*FROM vCountPasien;

b. Screenshot Hasil

c. Penjelasan
Dari perintah diatas kita akan membuat perintah view sebagai
penggati (SELECT kode_poli, COUNT(*) AS jumlah FROM

pasien, ambil_poli) perintah select untuk menampilkan kode_poli


dan jumlahnya. Perintah di dalamnya terdapat subquery berupa
perintah untuk menapilkan kode_poli kemudian dijumlah menurut
pasian yang mengampil poli dengan perintah ( COUNT(*) AS
jumlah FROM pasien, ambil_poli WHERE pasien.id_pas =
ambil_poli.id_pas GROUP BY kode_poli; ) dari id_pas yang
sama antara tabel pasien dan tabel ambil_poli. Kemudian di grupkan
dengan kode_poli. Sehingga menampilkan kode_poli dan jumlah
berapa pasien yang mengambil poli.

24. Studi Kasus 24


Untuk memudahkan pegawai dalam memberikan kembalian atau
memberikan obat maka diperlukan perintah.
Buatlah view untuk menampilkan data transaksi yang memiliki Tarif
< 15000
a. Kode Program
CREATE VIEW vTransaksi
AS
SELECT id_transaksi, id_pas, Tarif,
tgl_trans
FROM transaksi
WHERE Tarif < 15000;

SELECT*FROM vTransaksi;

b. Screenshot Hasil

c. Penjelasan
Untuk membuat view berdasarkan tarif transaksi yang kurang dari
15000, maka dibuatkan view vTransaksi dengan menampilkan
id_transaksi, id_pas, tariff, dan tgl_trans. Disini menggunakan fungsi
kurang dari “<” untuk menyeleksi tarif.

TRIGGER
25. Studi Kasus 25
Transaksi obat selalu berlasung dalam waktu yang sangat singkan.
Untuk itu pegawai sangat membutuhkan cara untuk memperbaruhi data
yang telah berupa karan adanya transaksi. Dan menjaga kevalidan data.
Buatlah trigger untuk mengupdate pada tabel obat, jika ada pengurangan
stok obat dari tabel resep !
a. Kode Program
DELIMITER //
CREATE TRIGGER updateStok
AFTER INSERT ON resep

FOR EACH ROW BEGIN

UPDATE obat
SET stok = stok - NEW.jumlah
WHERE kode_obat = NEW.kode_obat;

END //
INSERT INTO resep
VALUES
("D011","PA026","R026","OAG001","3 x sehari 1 tablet","2");//

b. Screenshot Hasil
c. Penjelasan
Jadi melalui membuatan Trigger diatas akan memudahkan dalam
memperbarui suatu data dan kebutuhan yang dibutuhkan oleh
pegawai. Seperti dalam kasus jika ada pengurangan stok obat dari
tabel resep akan otomati terkurangi di tabel obaat. Dengan query
CREATE TRIGGER updateStok AFTER INSERT ON resep.
Yang memanfaatkan salah satu perintah yang disediakan oleh trigger
yaitu select. Keudian mengunakan rumus untukmengurangi data
setelah pengupdetan data. (seperti UPDATE obat)utuk
memperbaruhi tabel dari obat. ( SET stok = stok -
NEW.jumlah)untuk mengurangi stok setelah diupdate WHERE
kode_obat = NEW.kode_obat.
Kemudian seteah memsbuat trigger kita harus membuat pemicunya
untuk mengecek apakah trigger yang telah kita buat apakah aktif atau
tidak.

26. Studi Kasus 26


Dalam penginputan data obat yang baru. Dibutuhkan peringatan
jika barang yang diinputkan sudah ada sebelumnya. Agar tidak terjadi
kekeliruan.
Buatlah trigger untuk menampilkan status jika menambahkan data obat
yang sebelumnya sudah ada !
a. Kode Program
DELIMITER //
CREATE TRIGGER insert_obat
BEFORE INSERT ON obat
FOR EACH ROW BEGIN

IF EXISTS(SELECT*FROM obat
WHERE kode_obat = NEW.kode_obat)
THEN
SET @status = CONCAT('Kode ', NEW.kode_obat, ' yang Anda
masukkan sudah ada');

END IF;
END //

INSERT INTO obat


VALUES
("Analgetik","OAG005","Asam Mefenamat","5690","57");//
SELECT @status;
//

b. Screenshot Hasil

c. Penjelasan
Dari pembuatan trigger diatas dapat membuat suatu status yang
bertujuan sebagai pemberitahuan katika ada inputan data baru yang
sama atau sudah ada sebelumnya.Dalam trigger kali ini memanfaatkan
salah satu perintah pada trigger yaitu menggunakan perintah BEFORE
INSERT ON dimana sebelum penambahan pada tabel
obat jika data ada atau (IF EXISTS(SELECT*FROM
obat WHERE kode_obat = NEW.kode_obat)) dimana
yang memiliki kode_obat yang sama akan muncul suatu
pemberitahuan berupa status seperti (SET @status =
CONCAT('Kode ', NEW.kode_obat, ' yang Anda
masukkan sudah ada');) kemudian kita akan membuat
pemicunya perupa insert.an data yang sudah ada sebelumnya. Untuk
memastikan bahwa trigger tersebut adalah aktif.

27. Studi Kasus 27


Setiap transaksi yang terjadi harusnya ada sebuah pemberitahuan
yang valid seperti berupa tanggal. Jadi akan dibentuk seperti riwayat
dalam setiap kali exsekusi perintah.
Buatlah log aktivitas setiap ada update stok obat, dan penghapusan obat
dengan menggunakan trigger
a. Kode Program
CREATE TABLE log_aktivitas(
Waktu DATETIME NOT NULL,
Operasi VARCHAR(255) NOT NULL);

DELIMITER //
CREATE TRIGGER log_obat
AFTER UPDATE ON obat
FOR EACH ROW BEGIN

DECLARE ket VARCHAR(255);

SET ket = CONCAT('Merubah data dengan keyword ',


NEW.kode_obat,' pada tabel obat');
INSERT INTO log_aktivitas
VALUES (NOW(), ket);

END//

UPDATE obat
SET stok = "50"
WHERE kode_obat = "OPR001";//

SELECT*FROM log_aktivitas;//
DELIMITER //
CREATE TRIGGER log_delete
AFTER DELETE ON obat
FOR EACH ROW BEGIN

DECLARE ket VARCHAR (255);


SET ket = CONCAT('Menghapus data ', OLD.kode_obat,'
dari tabel pembelian');
DELETE FROM obat
WHERE kode_obat
INSERT = 'OAN003';//
INTO log_aktivitas
VALUES(NOW(), ket);

END //
SELECT*FROM log_aktivitas;//

b. Screenshot Hasil
c. Penjelasan
Pembuatan trigger diatas bertujuan tuntuk menciptakan log atau
pemberitahuaan berdasarkan waktunya eksekusi perintah. Seperti
perintah update dan hapus. Tapi sebelum pembuatan tringger harus
membuat tabel log_aktivitas terlebih dahulu. Trigger log_aktivitas
update menggunakan perintah (CREATE TRIGGER log_obat
AFTER UPDATE ON ) dimana akan berfungsi setelah perintah
update. Dan akan menampilkan tulisan. SET ket =
CONCAT('Merubah data dengan keyword ',
NEW.kode_obat,' pada tabel obat'); sesuai dengan
kode obatnya . kemudian untuk trigger log_delete (CREATE
TRIGGER log_delete AFTER DELETE ON
obat)kemudian akan menampilkan SET ket =
CONCAT('Menghapus data ', OLD.kode_obat,' dari
tabel pembelian'); kemudian buatlah pemicu dari masing
masing log agar menampilkan tabel log_aktivitasnya dan
menunjukkan bahwa trigger telah aktif. Dan tampilkan tabel
log_aktivitasnya (SELECT*FROM log_Aktivitas;//).

28. Studi Kasus 28


Dalam sebuah poliklinik, untuk membantu pegawai dalam merekap
jumlah pasien yang ditangani oleh seorang dokter sangatlah diperlukan.
Oleh karena itu, maka dibutuhkan perintah untuk membantu pegawai
dalam merekap hal tersebut.
Definisikan stored procedure untuk mendapatkan jumlah pasien yang
ditangani oleh seorang dokter dengan id_dok sesuai dengan parameter
yang dimasukkan (parameter IN) . Jika tidak ada pasien yang ditangani,
maka akan menampilkan angka 0 (bukan null)
a. Kode Program
DELIMITER //
CREATE PROCEDURE GetCountPasien(
IN id_dokter VARCHAR(15))
BEGIN

SELECT COUNT(id_pas) AS jumlah


FROM pemeriksaan
WHERE id_dok IN (SELECT id_dok FROM dokter
WHERE id_dok = id_dokter);

END
CALL//
GetCountPasien('D018');//

CALL GetCountPasien('D002');//

b. Screenshot Hasil
c. Penjelasan
Untuk mengetahui jumlah pasien yang ditangani seorang dokter,
maka digunakan stored procedure GetCountPasien dengan
menggunakan parameter IN pada id_dokter, karena parameter tersebut
nantinya akan menjadi masukan bagi parameter tersebut. Untuk
menhitung jumlah pasien digunakan fungsi COUNT pada id_pas yang
akan ditampilkan dengan field alias bernama jumlah. Untuk
menampilkannya dapat menggunakan fungsi CALL yang diikuti
dengan nama procedure dan isi dari parameter atau id_dok.

29. Studi Kasus 29


Terkadang pada poliklinik aka nada perubahan, termasuk
perubahan daftar poli, baik itu dihapus maupun diganti. Oleh karena itu
maka dibutuhkan perintah untuk membantu pegawai dalam memperbarui
daftar poli tersebut.
Definisikan stored procedure untuk memodifikasi data poli apabila eksis
dan melakukan penambahan jika belum eksis. Jadi, masukan dari
argumen dapat digunakan untuk penambahan ataupun modifikasi data.
a. Kode Program
CREATE PROCEDURE data_poli(
IN kode VARCHAR(15),
IN nama VARCHAR(255))
BEGIN

IF EXISTS(SELECT*FROM poli WHERE kode_poli = kode)


THEN
UPDATE poli SET kode_poli = kode WHERE kode_poli
= kode;
UPDATE poli SET nama_poli = nama WHERE kode_poli
= kode;
ELSE
INSERT INTO poli
VALUES
(kode, nama);
END IF;

END //

CALL data_poli('P011','Gigi');

CALL data_poli('P002','Umum');

b. Screenshot Hasil
c. Penjelasan
Untuk memperbarui data pada poli maka digunakan stored
procedure data_poli dengan menggunakan parameter IN pada kode
dan nama, karena parameter tersebut akan menjadi masukan bagi
parameter tersebut. Disini menggunakan kondisi IF-ELSE dan
menggunakan fungsi EXISTS. Jika data pada tabel poli ada atau eksis,
maka data tersebut akan diperbarui, jika tidak ada maka akan terjadi
penambahan data.

30. Studi Kasus 30


Untuk mempermudah pegawai dalam memilah-milah pasien
berdasarkan jenis pasien, maka dibutuhkan perintah untuk
mengelompokan daftar pasien berdasarkan jenis kelamin.
Definisikan stored procedure untuk mengelompokan data pasien
berdasarkan jenis kelamin
a. Kode Program
DELIMITER //
CREATE PROCEDURE data_pasien(
IN jelkel VARCHAR(2))
BEGIN

SELECT*FROM pasien
WHERE jk = jelkel;

END //

CALL data_pasien('L');//

CALL data_pasien('P');//

b. Screenshot Hasil
c. Penjelasan
Untuk mengelempokkan ata pasien berdasarkan jenis kelamin,
maka digunakan stored procedure dengan menggunakan parameter IN
pada jelkel, karena parameter tersebut nantinya akan menjadi masukan
bagi parameter tersebut. Untuk menampilkannya menggunakan fungsi
select pada tabel pasien dengan mengkondisikan apabila jk sama
dengan parameter yang dimasukkan.

31. Studi Kasus 31


Terkadang para pegawai poliklinik kesulitan dalam merekap total
nominal pendapatan poliklinik dalam satu hari, oleh karena itu
dibutuhkan perintah untuk membantu pegawai dalam merekap total
nominal tersebut.
Buatlah Stored Procedure untuk mendapatkan total nominal dari transaksi
selama 1 hari !
a. Kode Program
DELIMITER //
CREATE PROCEDURE total_tarif(
IN tgl DATE)
BEGIN

SELECT SUM(tarif) AS total_nominal


FROM transaksi
WHERE tgl_trans = tgl;

END //

CALL total_tarif('2016-03-13');//

b. Screenshot Hasil

c. Penjelasan
Untuk mendapatkan total nominal transaksi pasien dalam 1 hari
maka digunakan stored procedure total_tarif dengan menggunakan
parameter IN pada tgl, karena parameter tersebut akan menjadi
masukan bagi parameter. Untuk menotalkan nominal, maka
digunakan fungsi SUM pada tariff di tabel transaksi.
32. Studi Kasus 32
Pegawai terkadang tidak teliti atau kesusahan dalam menghitung stok
obat, sehingga membutuhkan perintah untuk memudahkan pegawai.
Buatlah stored procedure untuk menghitung jumlah stok obat
a. Kode Program
DELIMITER //
CREATE PROCEDURE JumlahStokObat(
OUT jml_StokObat INT(3)
)
BEGIN
SELECT SUM(stok)
INTO jml_StokObat
FROM obat;
END //

CALL JumlahStokObat(@jml_StokObat);//

SELECT @jml_StokObat;//

b. Screenshot Hasil
c. Penjelasan
Untuk menghitung jumlah stok obat digunakan stored procedure
dengan menggunakan parameter OUT, karena parameter tersebut akan
menjadi keluaran dari parameter. Untuk menjumlahkan stok obat
digunakan fungsi SUM pada stok. Untuk menampilkan jumlahnya
digunakan fungsi CALL yang diikuti nama prosedur dan parameter.
Lalu deselect parameternya.
33. Studi Kasus 33
Pada poliklinik setiap hari terdapat dokter yang bekerja untuk
melayani pasien, dan dokter tersebut mempunyai jadwal praktek sendiri-
sendiri. Untuk membantu pegawai dalam menjumlahkan dokter yang
praktek pada 1 hari, maka dibutuhkan perintah untuk mempermudah
pekerjaannya.
Buatlah stored procedure untuk menghitung jumlah dokter yang praktek
pada suatu hari
a. Kode Program
DELIMITER //
CREATE PROCEDURE jumlah_praktek(
IN hari_prak VARCHAR(15),
OUT total INT(3)
)
BEGIN
SELECT COUNT(id_dok)
INTO total
FROM JadwalPraktek
WHERE Hari = hari_prak;
END //

CALL jumlah_praktek('Senin',@total);//

SELECT @total;

b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan jumlah dokter yang praktek pada 1 hari maka
digunakan stored procedure jumlah_praktek, dengan menggunakan
parameter IN dan parameter OUT. Pada parameter IN digunakan
sebagai masukan oleh parameter tersebut, sedangkan parameter OUT
digunakan sebagai keluaran oleh parameter tersebut. Untuk
memanggil procedure tersebut digunakan perintah CALL yang diikuti
oleh parameter, dan untuk menampilkan jumlah digunakan fungsi
SELECT yang diikuti variabel.

34. Studi Kasus 34


Pegawai membutuhkan program untuk menginputkan data pasien
yang mengambil poli untuk memudahkan pekerjaannya.
Definisikan stored procedure untuk penambahan data ambil_poli.
Skenarionya, penambahan dapat dilakukan jika dan hanya jika id_pas
eksis di tabel pasien dan nilai kode_poli eksis di tabel poli. Apabila
operasi berhasil, kembalikan status Operasi Berhasil, sebaliknya jika
gagal, kembalikan pesan Operasi Gagal.
a. Kode Program
DELIMITER //
CREATE PROCEDURE AddAmbil_poli(
IN id_pasien VARCHAR(15),
IN kd_poli VARCHAR(15)
)
BEGIN
DECLARE status VARCHAR(255);
SET STATUS = '';

IF EXISTS(SELECT*FROM pasien
WHERE id_pas = id_pasien)
THEN
IF EXISTS(SELECT*FROM poli
WHERE kode_poli = kd_poli)
THEN
INSERT INTO ambil_poli
VALUES
(id_pasien, kd_poli);
SET status = "Operasi Berhasil";
ELSE
SET status = "Operasi Gagal";
END IF;
ELSE
SET status = "Operasi Gagal";
END IF;
SELECT status;

END //

CALL AddAmbil_poli("PA025","P001");//

CALL AddAmbil_poli("PA026","P007");//
b. Screenshot Hasil
c. Penjelasan
Untuk menambah data ambil poli maka digunakan stored
procedure dengan menggunakan parameter IN, dimana parameter
tersebut sebagai masukan. Jika pasien yang mengambil poli terdaftar
pada tabel pasien maka input data ke tabel ambil_mk berhasil, jika
tidak ada maka gagal.
35. Studi Kasus 35
Untuk memberi pelayanan terhadap pasien antara perempuan dan
laki-laki tentunya berbeda. Maka dari itu dibutuhkan perintah untuk
menjumlahkan pasien berdasarkan jenis kelamin.
Prosedur untuk menampilkan jumlah pasien berdasarkan Gender (P)
a. Kode Program
DELIMITER //
CREATE PROCEDURE CountByGender(
IN gender VARCHAR(2),
OUT total INT(2)
)
BEGIN
SELECT COUNT(id_pas)
INTO total
FROM pasien
WHERE jk=gender;
END//

CALL CountByGender('P', @total);//

SELECT @total;//

b. Screenshot Hasil

c. Penjelasan
Untuk membedakan pasien laki-laki dan perempuan dapat
menerapkan STORED PROCEDURE. Pada STORED PROCEDURE
di atas digunakan untuk mencari jumlah dari pasien yang ada pada
tabel pasien berdasarkan jenus kelaminnya. Penghitungan pasiennya
menggunakan Fungsi Agregat COUNT. Misalkan saja jenis kelamin
‘P’ pada tabel pasien terdapat 13 pasien yang berjenis kelamin
Perempuan.

TRANSACTION

36. Studi Kasus 36


Terkadang ketika memasukkan data ke tabel, data yang diinputkan
tidak tersimpan, oleh karena itu dibutuhkan perintah untuk memudahkan
pegawai dalam memasukkan data agar tersimpan dengan baik.
Masukkan data ke tabel obat dengan mengimplementasikan transaction
a. Kode Program
START TRANSACTION;

INSERT INTO obat


VALUES
("Antibiotik","OAN003","Erythromicyn","2300","100")
;

COMMIT;

b. Screenshot Hasil
c. Penjelasan
Untuk memasukkan data dengan mengimplementasikan transaction
maka untuk awalan digunakan perintah START TRANSACTION;. Lalu
diikuti perintah insert ke tabel obat. Untuk menyompan data secara
permanen maka digunakan perintah COMMIT diakhir query.

37. Studi Kasus 37


Terkadang ketika pegawai sedang mendaftarkan pasien atau
memasukkan data terjadi kesalahan yang tidak disengaja, oleh karena itu
membutuhkan perintah untuk memudahkannya.
Masukkan data ke tabel registrasi, lalu rollback data tersebut
a. Kode Program
START TRANSACTION;

INSERT INTO registrasi


VALUES
("REG026","26","26",15003,"PA026","2016-03-20");

ROLLBACK;

b. Screenshot Hasil
c. Penjelasan
Untuk memasukan data dengan implementasi transaction, untuk
awalan menggunakan perintah START TRANSACTION, lalu
menggunakan perintah insert untuk memasukkan data. Jika ingin
dibatalkan dalam memasukkan data tersebut, maka menggunakan
perintah ROLLBACK. Ketika sudah di COMMIT, perintah
ROLLBACK tidak berfungsi, karena penggunaan perintah COMMIT
akan dilakukan secara implisit.
38. Studi Kasus 38
Terkadang para pegawai kesusahan dalam menghitung transaksi
para pasien secara manual, oleh karena itu di perlukan perintah untuk
memudahkan pegawai dalam menghitung transaksi pasien.
Definisikan stored procedure dengan menggunakan implementasi
transaction untuk menghitung tarif yang harus dibayar oleh pasien
a. Kode Program
DELIMITER //
CREATE PROCEDURE tarif_transaksi(
IN id_trans VARCHAR(15),
IN nm_trans VARCHAR(255),
IN id_pasien VARCHAR(15),
IN tanggal DATE,
IN kd_obat VARCHAR(15)
)
BEGIN
DECLARE hrg INT(10);
DECLARE jml INT(10);
START TRANSACTION;
IF EXISTS(SELECT*FROM obat WHERE kode_obat = kd_obat)
AND
EXISTS(SELECT*FROM resep WHERE id_pas = id_pasien)
THEN
SELECT harga INTO hrg FROM obat
WHERE kode_obat = kd_obat;
SELECT jumlah INTO jml FROM resep
WHERE id_pas=id_pasien;
INSERT INTO transaksi
VALUES
(id_trans, nm_trans, id_pasien, tanggal, kd_obat,
jml*hrg+10000);
SELECT "Transaksi Berhasil" AS Status;
COMMIT;
ELSE
SELECT "id_pas atau kode_obat tidak tersedia" AS
Status;
END IF;

END //

CALL tarif_transaksi("TR026","Pembayaran
berobat","PA026","2016-03-20","OAG001");//

CALL tarif_transaksi("TR028","Pembayaran
berobat","PA028","2016-03-20","OAG001");//

b. Screenshot Hasil
c. Penjelasan
Untuk menghitung tarif pasien digunakan strored procedure
dengan parameter IN, karena parameter tersebut nantinya akan
digunakan sebagai masukan. Dalam pembuatan perintah ini
menggunakan implementasi transaction yang diakhiri dengan perintah
COMMIT, karena agar data yang dimasukkan tidak hilang ketika
prompt mysql dikeluarkan. Untuk menghitung tarif dengan
menggunakan rumus (jumlah obat*harga obat + administrasi yang
telah ditentukan yaitu 10000). Jika id pasien dank ode obat ada dalam
tabel, maka akan mengeluarkan pesan “Transaksi Berhasil” dan
otomatis data akan tersimpan pada tabel transaksi, jika id pasien dan
kode obat tidak ada maka akan mengeluarkan pesan “id_pas atau
kode_obat tidak tersedia”.
39. Studi Kasus 39
Untuk mencegah kejahatan dan menjaga keamanan di perlukan
pemberitahuan atau status setelah melakukan registrasi.
Definisikan stored procedure untuk melakukan registrasi pasien dengan
implementasi transaction !
a. Kode Program

DELIMITER //
CREATE PROCEDURE registrasi(
IN id_registrasi VARCHAR(15),
IN no_registrasi INT(3),
IN no_ur INT(3),
IN no_peg INT(5),
IN id_pasien VARCHAR(15),
IN tanggal DATE
)
BEGIN
START TRANSACTION;
IF EXISTS(SELECT*FROM pegawai
WHERE nip = no_peg)
THEN
INSERT INTO registrasi
VALUES
(id_registrasi, no_registrasi, no_ur, no_peg,
id_pasien, tanggal);
SELECT "Registrasi berhasil" AS Status;
COMMIT;
ELSE
SELECT "Registrasi Gagal" AS Status;
END IF;
END //

CALL registrasi("REG026","26","26","15003","PA026","2016-03-20");//

CALL registrasi("REG027","27","27","15026","PA027","2016-03-20");//

b. Screenshot Hasil
c. Penjelasan
Langka pertama untukmembuat transaction diatas harus terlebih
dahulu membuat procedure registrasi terlebih dahulu. Dan kemudian
memulai transaction jika bernilai benar nip pegawai yang terdaftar
pada tabel pegawai. Tapi jika bernilai salah nip tidak sesuai yang ada
pada tabel pegawai. Maka akan muncul status “Registrasi Berhasil”
jika bernilai benar. Dan jika bernilai salah atau tidak sesuai maka akan
muncul status “Registrasi Gagal”.

40. Studi Kasus 40


Untuk memudahkan pegawai pada kasir atau pembayaran di
butuhkan penghitungan terhadap transaksi jika terjadi kembalian uang
dan akan menampilkan pesan atau status jika uang yang dibayarkan tidak
sesui jumlah pembayaran.
Buatlah table pembayaran untuk menampilkan status pembayaran pasien
yang menggunakan stored procedure dengan mengimplementasikan
transaction !
a. Kode Program
CREATE TABLE pembayaran(
id_transaksi VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
bayar INT(10) NOT NULL,
kembali INT(10) NOT NULL);//

DELIMITER //
CREATE PROCEDURE pemb(
IN id_trans VARCHAR(15),
IN nama_pasien VARCHAR(225),
IN bayar INT(10)
)
BEGIN
DECLARE kembali INT(10);
START TRANSACTION;

IF EXISTS(SELECT*FROM transaksi
WHERE id_transaksi = id_trans)
THEN
SELECT Tarif INTO kembali FROM transaksi
WHERE id_trans = id_transaksi;
IF(bayar <= kembali)
THEN
SELECT "Pembayaran Kurang" AS status;
ELSE
SET kembali = bayar-kembali;
INSERT INTO pembayaran
VALUES
(id_trans, nama_pasien, bayar, kembali);
COMMIT;
END IF;
ELSE
SELECT "id transaksi tidak terdaftar" AS Status;

END IF;

END //

CALL pemb("TR001","PA001","15000");//

CALL pemb("TR0027","PA027","15000");//

CALL pemb("TR002","PA002","20000");//
b. Screenshot Hasil
c. Penjelasan
Langaka pertama harus ada pembuatan tabel pembayaran yang
akan digunakan untuk transaksi saat pasien membayar obat pada kasir
atau pegawai. Kemudian membuat procedure pemb dan baru memulai
transaksi yang awalnya harus mendeklarasikan tipe data berupa int.
jika berniali benar id_transaksisnya akan menampilkan SELECT Tarif
INTO kembali FROM transaksi WHERE id_trans =
id_transaksi.Dan akan menampilkan status “Pembayaran Kurang”
jika IF(bayar <= kembali).Tapi jika tidak pembayaran yang
lebih akan di kurangi kembaliannya. Dan Jika id_trans tidak sesuai
maka akan muncul status “ id transaksi tidak terdaftar ” dan
untuk mengecek transaction tersebut maka dapat dipanggil
pembeliannya.

41. Studi Kasus 41


Pada sebuah poliklinik setiap pendaftar akan dikelompokkan
berdasarkan umur, agar tidak ada kesalahan dalam memerika dan
memberi dosis obat.
Definisikan stored procedure untuk membagi pasien berdasarkan
umur dengan implementasi transaction
a. Kode Program
CREATE TABLE
kategori_umur_pasien(
id_pas VARCHAR(15) NOT NULL,
kategori VARCHAR(255) NOT
NULL
);
DELIMITER //
CREATE PROCEDURE kategoriUmur(
IN kd_pasien VARCHAR(15)
)
BEGIN
DECLARE umr INT(11);
DECLARE kat VARCHAR(100);
START TRANSACTION;
SELECT umur INTO umr FROM pasien WHERE id_pas = kd_pasien;
IF (umr >= 0) AND (umr <=5)
THEN
SET kat = "Bayi";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 5) AND (umr <=11) THEN
SET kat = "Kanak-kanak";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 11) AND (umr <=16) THEN
SET kat = "Remaja awal";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 16) AND (umr <=25) THEN
SET kat = "Remaja akhir";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 25) AND (umr <=35) THEN
SET kat = "Dewasa awal";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 35) AND (umr <=45) THEN
SET kat = "Dewasa akhir";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 45) AND (umr <=55) THEN
SET kat = "Lansia awal";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 55) AND (umr <=65) THEN
SET kat = "Lansia akhir";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
ELSEIF (umr > 65) THEN
SET kat = "Manula";
INSERT INTO kategori_umur_pasien
VALUES (kd_pasien,kat);
COMMIT;
END IF;
END //

CALL kategoriUmur("PA001");//

b. Screenshot Hasil
c. Penjelasan
Untuk mengelompokan data pasien berdasarkan umur maka
dibuatkan tabel kategori_umur_pasien. Selanjutnya dibuat stored
procedure dengan mengimplementasikan transaction. Jika umur antara
0-5 termasuk kategori bayi, jika umur 5-11 maka termasuk kategori
kanak-kanak, jika umur 11-16 maka termasuk kategori remaja awal,
jika umur 16-25 maka termasuk kategori remaja akhir, jika umur 25-
35 maka termasuk kategori dewasa awal, jika umur 35-45 maka
termasuk kategori dewasa akhir, jika umur 45-55 maka termasuk
lansia awal, jika umur 55-65 maka termasuk kategori lansia akhir, dan
jika lebih dari 65 maka termasuk kategori manula.

42. Studi Kasus 42


Untuk memudahkan pegawai dalam merekap data pasien (catatan
rekam medis) maka dibutuhkan perintah untuk memudahkan pegawai
Membuat catatan rekam medis dengan menggunakan implementasi
transaction.
a. Kode Program
START TRANSACTION;

CREATE VIEW RekamMedik


AS
SELECT p.id_pas, p.nama_pas, pem.diagnosa
FROM pasien p, pemeriksaan pem
WHERE p.id_pas=pem.id_pas;

COMMIT;

b. Screenshot Hasil
c. Penjelasan
Untuk membuat catatan rekam medik dapat yang berisi id_pas,
nama_pas, dan diagnosa dapat menggunakan JOIN antara tabel pasien
dan tabel pemeriksaan kemudian agar data tersimpan permanen maka
sebelum membuat VIEW RekamMedik diaktifkan dulu START
TRANSACTION yang diakhir pembuatan VIEW diberi perintah
COMMIT agar tersimpan secara permanen.
G. Kesimpulan
Berdasarkan hasil pembuatan database poliklinik telah dilakukan, maka
dari akan diatarik kesimpulan berdasarkan penulisan penulisan atau bab bab
sebelumnya. Berikut adalah kesimpulan yang dapat diambil diantaranya
adalah :
1. Membantu pembuatan aplikasi database agar memudahkan
pegawai poliklinik dalam pekerjanya. Seperti mencari data yang
penting dan mengarsipkannya secara efisien.
2. Membantu pembuatan aplikasi agar data pemeriksaan dapat
terdokumentasikan secara rapi dan tidak lagi melakukan pencatatan
secara manual.
3. Dan dengan basisdata piliklinik ini membuat proses pecarian data,
transaksi dan adminitrasi secara otomatis dan lebih mudah.
Daftar Pustaka
1. Tim Asisten Dosen. 2016. Modul 1-8. Malang : Universitas Negeri Malang.
2. Kadir, Abdul. 2008. Belajar Database Menggunakan MySQL. Yogyakarta :
ANDI.
3. http://www.rsmlamongan.com/home.php?page=daftar-
dokter.html#.VydEf3q1fZI, diakses pada 18 aApril 2015
Lampiran
DESAIN DATABASE
 Membuat database
CREATE DATABASE poliklinik;

 Menggunakan database
USE poliklinik;

 Membuat table pasien


CREATE TABLE pasien(
id_pas VARCHAR(15) NOT NULL,
nama_pas VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
umur VARCHAR(10) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_pas VARCHAR(12) NOT NULL,
tgl_reg DATE NOT NULL,
PRIMARY KEY(id_pas)
);

INSERT INTO pasien


VALUES
("PA001","Budi","L","18 tahun","Jl.Mawar 32", "Malang", "65113","085789173782","2016-03-
12"),
("PA002","Dodi","L","23 tahun","Jl.Melati 57", "Malang", "65132","085789171234","2016-03-
12"),
("PA003","Doni","L","13 tahun","Jl.Mekar 45", "Malang", "65110","085789171123","2016-03-
12"),
("PA004","Lena","P","10 tahun","Jl.Sekar 65", "Malang", "65105","085781231123","2016-03-
13"),
("PA005","Ani","P","11 tahun","Jl.Tulip 23", "Malang", "65111","085789171101","2016-03-13"),
("PA006","Nanda","P","21 tahun","Jl.Kenanga 34", "Malang", "65112","085189171101","2016-03-
13"),
("PA007","Anton","L","30 tahun","Jl.Lemon 9", "Malang", "65113","085159171341","2016-03-
13"),
("PA008","Putri","P","18 tahun","Jl.Manila 7", "Malang", "65101","085789179834","2016-03-
13"),
("PA009","Diana","P","19 tahun","Jl.Anggur 9", "Malang", "65102","085707428716","2016-03-
13"),
("PA010","Kafita","P","23 tahun","Jl.Melati 8", "Malang", "65132","085707428103","2016-03-
14"),
("PA011","Faisal","L","21 tahun","Jl.Kenangan 5", "Malang", "65104","085707428104","2016-03-
14"),
("PA012","Hermawan","L","21 tahun","Jl.Menteng 3", "Malang", "65106","085773337106","2016-
03-15"),
("PA013","Hana","P","11 tahun","Jl.Sawo 2", "Malang", "65107","085707334287","2016-03-15"),
("PA014","Nana","P","17 tahun","Jl.Melon 4", "Malang", "65133","085793334287","2016-03-15"),
("PA015","Ani","L","16 tahun","Jl.Raflesia 5", "Malang", "65111","085679334717","2016-03-
16"),
("PA016","Nizam","L","15 tahun","Jl.Nangka 6", "Malang", "65121","085749334287","2016-03-
16"),
("PA017","Nani","P","30 tahun","Jl.Jombang 7", "Malang", "65115","085679333118","2016-03-
16"),
("PA018","Azza","P","24 tahun","Jl.Semangka 21", "Malang", "65124","085679113428","2016-03-
17"),
("PA019","Nuzzayin","L","20 tahun","Jl.Mandala 23", "Malang", "65123","085679113425","2016-
03-17"),
("PA020","Effendi","L","21 tahun","Jl.Mandala 12", "Malang", "65125","085755232125","2016-
03-17"),
("PA021","Zakariyah","L","11 tahun","Jl.Nanas 11", "Malang", "65126","085755232450","2016-
03-18"),
("PA022","Eza","L","31 tahun","Jl.Sunar 12", "Malang", "65127","085755232459","2016-03-18"),
("PA023","Eny","P","22 tahun","Jl.Sabar 22", "Malang", "65113","085755232785","2016-03-18"),
("PA024","Nuha","P","20 tahun","Jl.Sunar 23", "Malang", "65127","085755232455","2016-03-
19"),
("PA025","Cinta","P","12 tahun","Jl.Indahna 5", "Malang","65115","085755232055","2016-03-
19");
 Membuat table dokter
CREATE TABLE dokter(
id_dok VARCHAR(15) NOT NULL,
nama_dok VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
kode_poli VARCHAR(15) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_dok VARCHAR(12) NOT NULL,
PRIMARY KEY(id_dok)
);

INSERT INTO dokter


VALUES
("D001","dr. Iriani, Sp.PD","P","P001","Jl.Jakarta 5", "Malang","65119","085789173711"),
("D002","dr. Agung, Sp. S","L","P005","Jl.Merdeka 9", "Malang","66015","085789173700"),
("D003","dr. Zayin, Sp. OT","L","P004","Jl.Mandalawangi 10", "Malang","63215","085789173255"),
("D004","dr. Efendi, Sp. P","L","P009","Jl.Singahraja 11", "Malang","62215","085789173521"),
("D005","dr. Nurita, Sp. Rad","P","P006","Jl.Sekarsari 12", "Malang","64214","085789176701"),
("D006","dr. Dita, Sp. OT","P","P004","Jl.Andan sari 4", "Malang","65232","085789173911"),
("D007","dr. Deny, Sp. S","L","P005","Jl.Semarang 14", "Malang","65112","085789176711"),
("D008","dr. Cintya, Sp. A","P","P002","Jl.Siguragura 16", "Malang","65233","085789073711"),
("D009","dr. Agung, Sp. M","L","P008","Jl.Buntu 23", "Malang","65234","085783273711"),
("D010","dr. Setiawan, Sp. PD","L","P001","Jl.Merdeka 19", "Malang","66015","085789103711"),
("D011","dr. Cici, Sp, JP","P","P007","Jl.Angkasa 01", "Malang","65235","085783273711"),
("D012","dr. Anton, Sp. Rad","L","P006","Jl.Buntu 98", "Malang","65234","085783273711"),
("D013","dr. Dinda, Sp. U","L","P012","Jl.Buntu 11", "Malang","65234","085783273711"),
("D014","dr. Galih, Sp. OT","L","P004","Jl.Bendungan Sutami 46",
"Malang","65116","085894001001"),
("D015","dr. Cintya, Sp. U","P","P012","Jl.Terusan 09", "Malang","65239","085789089000"),
("D016","dr. Ani, Sp. S","P","P005","Jl.Siguragura 10", "Malang","65233","085789073719"),
("D017","dr. Budi, Sp. OT","L","P004","Jl.Cinta 01", "Malang","65236","085789073719"),
("D018","dr. Dody, Sp. B","L","P003","Jl.Jombang 01", "Malang","65115","085789073703"),
("D019","dr. Diana, Sp. THT","P","P010","Jl.Cemara 98", "Malang","65238","085789073717"),
("D020","dr. Dani, Sp. PD","L","P001","Jl.Larasliris 31", "Malang","65236","085789073917"),
("D021","dr. Elfa, Sp. A","P","P002","Jl.Larasliris 16", "Malang","65276","085779073917"),
("D022","dr. Tora, Sp. JP","L","P007","Jl.Selasi 30", "Malang","65238","085789073919"),
("D023","dr. Regina, Sp. THT","P","P010","Jl.Terusan 21", "Malang","65239","085789073917"),
("D024","dr. Putri, Sp. P","P","P009","Jl.Selayar 53", "Malang","65240","085789073945"),
("D025","dr. Gunawan, Sp. PA","L","P011","Jl.Sumber 12", "Malang","65241","085789073617");

 Membuat table pegawai


CREATE TABLE pegawai(
nip INT(15) NOT NULL,
nama_peg VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_peg VARCHAR(12) NOT NULL,
PRIMARY KEY(nip)
);
INSERT into pegawai
VALUES
(15001,"Sutejo","L","Jl. Jakarta 04","Malang","65119","089567008901"),
(15002,"Suratmi","P","Jl. Jombang 11","Malang","65115","089567067812"),
(15003,"Azis","L","Jl. Surabaya 43","Malang","65117","089562314000"),
(15004,"Tanti","P","Jl. Semarang 21","Malang","65112","081267608911"),
(15005,"Niken","P","Jl. Mojokerto 45","Malang","65123","083557908961"),
(15006,"Revina","P","Jl. Galunggung 34","Malang","65114","081231450178"),
(15007,"Hasna","P","Jl. Veteran 55","Malang","65100","083411232009"),
(15008,"Leo","L","Jl. Jakarta 09","Malang","65119","087568432098"),
(15009,"Fadzil","L","Jl. Surabaya 12","Malang","65117","085231456790"),
(15010,"Hilda","P","Jl. Kawi 89","Malang","65118","081323555000"),
(15011,"Nurul","L","Jl. Anggrek 22","Malang","65101","088001320111"),
(15012,"Rofi","L","Jl. Jombang 34","Malang","65115","081200456789"),
(15013,"Lutfi","L","Jl. Kawi 89","Malang","65118","089808567111"),
(15014,"Agung","L","Jl. Semarang 15","Malang","65112","081342546078"),
(15015,"Habil","L","Jl. Bondowoso 64","Malang","65121","089444301987"),
(15016,"Putri","P","Jl. Wilis 37","Malang","65122","087809403112"),
(15017,"Chika","P","Jl. Semarang 54","Malang","65112","081134546000"),
(15018,"Nabila","P","Jl. Mawar 01","Malang","65113","083455678001"),
(15019,"Achmad","L","Jl. Melati 27","Malang","65132","089888302504"),
(15020,"Fardha","P","Jl. Melon 11","Malang","65133","085747012987"),
(15021,"Priyanti","P","Jl. Anggrek 09","Malang","65101","085235670111"),
(15022,"Frisca","P","Jl. Galunggung 71","Malang","65114","085727752515"),
(15023,"Jamal","P","Jl. Melon 21","Malang","65133","087067068981"),
(15024,"Gita","P","Jl. Bendungan Sutami 55","Malang","65116","082897118121"),
(15025,"Faizathi","P","Jl. Ijen 39","Malang","65111","087367048321");

 Membuat table registrasi

CREATE TABLE registrasi(


id_reg VARCHAR(15) NOT NULL,
no_reg INT(15) NOT NULL,
no_urut INT(5) NOT NULL,
nip INT(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_reg DATE NOT NULL,
PRIMARY KEY(id_reg)
);

INSERT INTO registrasi


VALUES
("REG001","1","1",15001,"PA001","2016-03-12"),
("REG002","2","2",15006,"PA002","2016-03-12"),
("REG003","3","3",15023,"PA003","2016-03-12"),
("REG004","4","4",15021,"PA004","2016-03-13"),
("REG005","5","5",15012,"PA005","2016-03-13"),
("REG006","6","6",15004,"PA006","2016-03-13"),
("REG007","7","7",15003,"PA007","2016-03-13"),
("REG008","8","8",15002,"PA008","2016-03-13"),
("REG009","9","9",15003,"PA009","2016-03-13"),
("REG010","10","10",15011,"PA010","2016-03-14"),
("REG011","11","11",15010,"PA011","2016-03-14"),
("REG012","12","12",15017,"PA012","2016-03-15"),
("REG013","13","13",15019,"PA013","2016-03-15"),
("REG014","14","14",15008,"PA014","2016-03-15"),
("REG015","15","15",15024,"PA015","2016-03-16"),
("REG016","16","16",15013,"PA016","2016-03-16"),
("REG017","17","17",15019,"PA017","2016-03-16"),
("REG018","18","18",15015,"PA018","2016-03-17"),
("REG019","19","19",15007,"PA019","2016-03-17"),
("REG020","20","20",15002,"PA020","2016-03-17"),
("REG021","21","21",15004,"PA021","2016-03-18"),
("REG022","22","22",15022,"PA022","2016-03-18"),
("REG023","23","23",15012,"PA023","2016-03-18"),
("REG024","24","24",15020,"PA024","2016-03-19"),
("REG025","25","25",15003,"PA025","2016-03-19");
 Membuat table resep

CREATE TABLE resep(


id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_resep VARCHAR(15) NOT NULL,
kode_obat VARCHAR(15) NOT NULL,
dosis VARCHAR(255) NOT NULL,
jumlah INT(5) NOT NULL,
PRIMARY KEY(no_resep)
);

INSERT INTO resep


VALUES
("D001","PA001","R001","OPR002","3 x sehari 1 tablet","1"),
("D018","PA002","R002","OVI005","3 x sehari 1 tablet","1"),
("D018","PA003","R003","OAG001","3 x sehari 1 tablet","1"),
("D012","PA004","R004","OAT001","3 x sehari 1 tablet","1"),
("D022","PA005","R005","OVI001","3 x sehari 1 tablet","1"),
("D009","PA006","R006","OPR002","3 x sehari 1 tablet","1"),
("D003","PA007","R007","OVI005","3 x sehari 1 tablet","1"),
("D006","PA008","R008","OAN001","3 x sehari 1 tablet","1"),
("D010","PA009","R009","OPR005","3 x sehari 1 tablet","1"),
("D018","PA010","R010","OAN005","3 x sehari 1 tablet","1"),
("D011","PA011","R011","OAT002","3 x sehari 1 tablet","1"),
("D009","PA012","R012","OPR003","3 x sehari 1 tablet","1"),
("D024","PA013","R013","OAT001","3 x sehari 1 tablet","1"),
("D023","PA014","R014","OAG005","3 x sehari 1 tablet","1"),
("D012","PA015","R015","OPR005","3 x sehari 1 tablet","1"),
("D004","PA016","R016","OAN001","3 x sehari 1 tablet","1"),
("D018","PA017","R017","OAT001","3 x sehari 1 tablet","1"),
("D012","PA018","R018","OAG002","3 x sehari 1 tablet","1"),
("D016","PA019","R019","OAN003","3 x sehari 1 tablet","1"),
("D004","PA020","R020","OAG005","3 x sehari 1 tablet","1"),
("D023","PA021","R021","OAG002","3 x sehari 1 tablet","1"),
("D023","PA022","R022","OAN004","3 x sehari 1 tablet","1"),
("D022","PA023","R023","OAT002","3 x sehari 1 tablet","1"),
("D018","PA024","R024","OAN003","3 x sehari 1 tablet","1"),
("D010","PA025","R025","OPR002","3 x sehari 1 tablet","1");

 Membuat table poli

CREATE TABLE poli(


kode_poli VARCHAR(10) NOT
NULL,
nama_poli VARCHAR(50) NOT
NULL,
PRIMARY KEY(kode_poli));

INSERT INTO poli


VALUES
("P001","Penyakit Dalam"),
("P002","Anak"),
("P003","Bedah Umum"),
("P004","Bedah Orthopedi"),
("P005","Saraf"),
("P006","Radiologi"),
("P007","Jantung"),
("P008","Mata"),
("P009","Paru"),
("P010","THT");
 Membuat table ambil_poli

CREATE TABLE ambil_poli(


id_pas VARCHAR(15) NOT NULL,
kode_poli VARCHAR(10) NOT NULL);

INSERT INTO ambil_poli


VALUES
("PA001","P001"),
("PA002","P003"),
("PA003","P005"),
("PA004","P006"),
("PA005","P007"),
("PA006","P008"),
("PA007","P004"),
("PA008","P004"),
("PA009","P001"),
("PA010","P003"),
("PA011","P007"),
("PA012","P008"),
("PA013","P009"),
("PA014","P010"),
("PA015","P006"),
("PA016","P009"),
("PA017","P003"),
("PA018","P006"),
("PA019","P005"),
("PA020","P009"),
("PA021","P010"),
("PA022","P010"),
("PA023","P007"),
("PA024","P003"),
("PA025","P001");

 Membuat table transaksi

CREATE TABLE transaksi(


id_transaksi VARCHAR(10) NOT NULL,
NamaTransaksi VARCHAR(255) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_trans DATE NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
Tarif INT(10) NOT NULL,
PRIMARY KEY(id_transaksi));
INSERT INTO transaksi
VALUES
("TR001","Pembayaran berobat","PA001","2016-03-12","OPR002","14190"),
("TR002","Pembayaran berobat","PA002","2016-03-12","OVI005","21650"),
("TR003","Pembayaran berobat","PA003","2016-03-12","OAG001","14600"),
("TR004","Pembayaran berobat","PA004","2016-03-13","OAT001","15600"),
("TR005","Pembayaran berobat","PA005","2016-03-13","OVI001","23400"),
("TR006","Pembayaran berobat","PA006","2016-03-13","OPR002","14190"),
("TR007","Pembayaran berobat","PA007","2016-03-13","OVI005","21650"),
("TR008","Pembayaran berobat","PA008","2016-03-13","OAN001","14500"),
("TR009","Pembayaran berobat","PA009","2016-03-13","OPR005","16190"),
("TR010","Pembayaran berobat","PA010","2016-03-14","OAN005","13400"),
("TR011","Pembayaran berobat","PA011","2016-03-14","OAT002","16350"),
("TR012","Pembayaran berobat","PA012","2016-03-15","OPR003","12750"),
("TR013","Pembayaran berobat","PA013","2016-03-15","OAT001","15600"),
("TR014","Pembayaran berobat","PA014","2016-03-15","OAG005","15690"),
("TR015","Pembayaran berobat","PA015","2016-03-16","OPR005","16190"),
("TR016","Pembayaran berobat","PA016","2016-03-16","OAN001","14500"),
("TR017","Pembayaran berobat","PA017","2016-03-16","OAT001","15600"),
("TR018","Pembayaran berobat","PA018","2016-03-17","OAG002","13580"),
("TR019","Pembayaran berobat","PA019","2016-03-17","OAN003","12300"),
("TR020","Pembayaran berobat","PA020","2016-03-17","OAG005","15690"),
("TR021","Pembayaran berobat","PA021","2016-03-18","OAG002","13580"),
("TR022","Pembayaran berobat","PA022","2016-03-18","OAN004","11900"),
("TR023","Pembayaran berobat","PA023","2016-03-18","OAT002","16350"),
("TR024","Pembayaran berobat","PA024","2016-03-19","OAN003","12300"),
("TR025","Pembayaran berobat","PA025","2016-03-19","OPR002","14190");

 Membuat table pemeriksa

CREATE TABLE pemeriksaan(


id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_urut INT(5) NOT NULL,
keluhan VARCHAR(255) NOT NULL,
diagnosa VARCHAR(255) NOT NULL,
id_penyakit VARCHAR(15) NOT NULL,
berat_badan VARCHAR(10) NOT NULL);

INSERT INTO pemeriksaan


VALUES
("D001","PA001","1","sakit perut","Diabetes","PE014","50 Kg"),
("D018","PA002", "2","benjolan","kanker","PE018","65 Kg"),
("D018","PA003", "3","kejang kejang","Migrain","PE017","40 Kg"),
("D012","PA004","4","nyeri","Osteoporosis","PE015","30 Kg"),
("D022","PA005","5","nyeri di jantung","hipertensi","PE013","20 Kg"),
("D009","PA006","6","penglihatan buram","Miopi","PE012","50 Kg"),
("D003","PA007","7","infeksi selaput saraf","Meningitis","PE007","50 Kg"),
("D006","PA008","8","linu","Leptospirosis","PE004","45 Kg"),
("D010","PA009","9","nyeri perut","gagal ginjal","PE023","57 Kg"),
("D018","PA010","10","sakit perut","usus buntu","PE025","68 Kg"),
("D011","PA011","11","cepat letih","jantung lemah","PE021","47 Kg"),
("D009","PA012","12","penglihatan buram","Miopi","PE012","45 Kg"),
("D024","PA013","13","sesak nafas","Asma","PE019","40 Kg"),
("D023","PA014","14","sakit telinga","radang telinga","PE024","30 Kg"),
("D012","PA015","15","terkilir","patah tulang","PE016","31 Kg"),
("D004","PA016","16","sesak nafas","Asma","PE019","32 Kg"),
("D018","PA017","17","terkilir","patah tulang","PE016","47 Kg"),
("D012","PA018","18","mata lelah","katarak","PE022","43 Kg"),
("D016","PA019","19","batuk","Tuberkulosis","PE002","54 Kg"),
("D004","PA020","20","batuk","Tuberkulosis","PE002","20 Kg"),
("D023","PA021","21","mata lelah","katarak","PE022","47 Kg"),
("D023","PA022","22","penglihatan buram","Miopi","PE012","40 Kg"),
("D022","PA023","23","cepat letih","jantung lemah","PE021","50 Kg"),
("D018","PA024","24","benjolan","Kanker","PE018","56 Kg"),
("D010","PA025","25","sakit perut","Diabetes","PE014","20 Kg"),
("D011","PA026","26","cepat letih","jantung lemah","PE026","35 Kg"),
("D006","PA027","27","linu","Leptospirosis","PE004","23 Kg");
 Membuat table obat

CREATE TABLE obat(


jenis_obat VARCHAR(225) NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
merk VARCHAR(255) NOT NULL,
harga INT(10) NOT NULL,
stok VARCHAR(10) NOT NULL,
PRIMARY KEY(kode_obat));

INSERT INTO obat


VALUES
("Paracetamol","OPR001","Bodrexin","3100","10"),
("Paracetamol","OPR002","Dumin","4190","100"),
("Paracetamol","OPR003","Pamol","2750","100"),
("Paracetamol","OPR004","Sanmol","2890","100"),
("Paracetamol","OPR005","Proris","6190","100"),
("Antibiotik","OAN001","Amoxicillin","4500","100"),
("Antibiotik","OAN002","Cefadroxil","3450","100"),
("Antibiotik","OAN003","Erythromicyn","2300","100"),
("Antibiotik","OAN004","Ciprofloxacin","1900","100"),
("Antibiotik","OAN005","Tetrasiklin","3400","100"),
("Antiseptik","OAT001","Betadine","5600","100"),
("Antiseptik","OAT002","Alphadine","6350","100"),
("Antiseptik","OAT003","Iosal","3450","100"),
("Antiseptik","OAT004","Minosep","7850","100"),
("Antiseptik","OAT005","Duvodine","11500","100"),
("Vitamin","OVI001","Neurobion","13400","67"),
("Vitamin","OVI002","Neurodex","6780","100"),
("Vitamin","OVI003","Caviplex","5600","103"),
("Vitamin","OVI004","Berocca","4900","200"),
("Vitamin","OVI005","Becombion Forte","11650","100"),
("Analgetik","OAG001","Methadon","4600","200"),
("Analgetik","OAG002","Fentanil","3580","120"),
("Analgetik","OAG003","Kodein","2340","90"),
("Analgetik","OAG004","Ibuprofen","1980","100"),
("Analgetik","OAG005","Asam Mefenamat","5690","57");

 Membuat table jadwalpraktek


CREATE TABLE JadwalPraktek(
id_dok VARCHAR(15) NOT NULL,
KodeJadwal VARCHAR(15) NOT NULL,
Hari VARCHAR(10) NOT NULL,
JamMulai VARCHAR(10) NOT NULL,
JamSelesai VARCHAR(10) NOT NULL,
PRIMARY KEY(KodeJadwal));

INSERT INTO JadwalPraktek


VALUES
("D001","JP001","Senin","09.00","11.30"),
("D002","JP002","Rabu","08.00","10.00"),
("D003","JP003","Selasa","09.00","11.30"),
("D004","JP004","Kamis","13.00","14.00"),
("D005","JP005","Senin","13.00","15.00"),
("D006","JP006","Rabu","14.00","16.00"),
("D007","JP007","Selasa","15.00","16.00"),
("D008","JP008","Kamis","09.00","11.30"),
("D009","JP009","Jum'at","08.00","10.30"),
("D010","JP010","Senin","10.00","11.00"),
("D011","JP011","Kamis","10.30","11.30"),
("D012","JP012","Rabu","13.00","15.00"),
("D013","JP013","Selasa","9.45","11.00"),
("D014","JP014","Jum'at","13.00","15.00"),
("D015","JP015","Senin","08.30","11.30"),
("D016","JP016","Selasa","10.30","11.30"),
("D017","JP017","Rabu","9.45","11.00"),
("D018","JP018","Kamis","08.00","10.00"),
("D019","JP019","Selasa","08.30","11.30"),
("D020","JP020","Senin","14.00","16.00"),
("D021","JP021","Rabu","08.30","11.30"),
("D022","JP022","Jum'at","15.00","16.00"),
("D023","JP023","Selasa","14.00","16.00"),
("D024","JP024","Kamis","15.00","16.00"),
("D025","JP025","Senin","15.00","16.00");
 Membuat table penyakit
CREATE TABLE penyakit(
id_penyakit VARCHAR(15) NOT NULL,
nama_penyakit VARCHAR(225) NOT NULL,
keterangan VARCHAR(225) NOT NULL,
PRIMARY KEY(id_penyakit));

INSERT INTO penyakit


VALUES
("PE001","Demam Tifoid","Menular"),
("PE002","Tuberkulosis","Menular"),
("PE003","Demam Hemoragik","Menular"),
("PE004","Leptospirosis","Menular"),
("PE005","Sifilis","Menular"),
("PE006","Demam Chikungunya","Menular"),
("PE007","Meningitis","Menular"),
("PE008","Influenza","Menular"),
("PE009","Tifus Murin","Menular"),
("PE010","Abses Tangan","Menular"),
("PE011","Kolera","Menular"),
("PE012","Miopi","Tidak Menular"),
("PE013","Hipertensi","Tidak Menular"),
("PE014","Diabetes","Tidak Menular"),
("PE015","Osteoporosis","Tidak Menular"),
("PE016","Patah Tulang","Tidak Menular"),
("PE017","Migrain","Tidak Menular"),
("PE018","Kanker","Tidak Menular"),
("PE019","Asma","Tidak Menular"),
("PE020","Asam Urat","Tidak Menular"),
("PE021","Jantung Lemah","Tidak Menular"),
("PE022","Katarak","Tidak Menular"),
("PE023","Gagal Ginjal","Tidak Menular"),
("PE024","Radang Telinga","Tidak Menular"),
("PE025","Usus Buntu","Tidak Menular");

Anda mungkin juga menyukai