Hubungkan Pasien dan Poli: Relasi Tabel, Foreign Key, dan Form Pendaftaran Kunjungan Pasien (JOIN)
Artikel 12 dari 16 · Seri Pemrograman Web D4 MIK · CPMK 5, Sub-CPMK 8
Bayangkan petugas pendaftaran mengetik nama pasien dan nama poli berulang-ulang di setiap kunjungan. Salah ketik satu huruf, "Poli Gigi" berubah jadi "Poli Gigy", dan laporan jumlah kunjungan langsung kacau. Solusinya adalah relasi tabel MySQL: data pasien dan poli disimpan satu kali, lalu dihubungkan lewat foreign key.
Artikel ini adalah bagian dari seri Pemrograman Web D4 MIK. Kamu akan membuat tabel kunjungan, menggabungkannya dengan JOIN, dan membangun form pendaftaran kunjungan pasien dengan PHP. Semua praktik memakai XAMPP, phpMyAdmin, dan Sublime Text dengan data fiktif. Siap menyambungkan dua modul yang sudah kamu buat?
Konsep Dasar Relasi Tabel MySQL: Pasien dan Poli Saling Terhubung
Bayangkan kartu berobat. Setiap pasien punya nomor kartu unik, dan setiap poli punya kode ruangan. Saat pasien datang, petugas tidak menulis ulang identitas lengkapnya. Petugas cukup mencatat "kartu nomor sekian, ke ruangan sekian". Catatan itulah tabel kunjungan. Pasien dan poli adalah data induk (master), sedangkan kunjungan adalah data transaksi.
pasien.id_pasien 1 ──< N kunjungan.id_pasien
poli.id_poli 1 ──< N kunjungan.id_poli
┌─────────────┐ ┌────────────────┐ ┌───────────┐ │ pasien │ 1──N │ kunjungan │ N──1 │ poli │ │ id_pasien PK│◄─────│ id_pasien FK │─────►│ id_poli PK│ │ no_rm │ │ id_poli FK │ │ nama_poli │ │ nama_pasien │ │ tgl_kunjungan │ └───────────┘ └─────────────┘ └────────────────┘
Praktik 1: Membuat Relasi Tabel MySQL dengan Foreign Key
Buka XAMPP Control Panel, klik Start pada Apache dan MySQL.
Akses
http://localhost/phpmyadmin, lalu pilih database db_klinik. Kalau belum ada, buat baru dengan nama itu.Klik tab SQL, tempel kode di bawah, lalu klik Go. Kalau tabel
pasien dan poli dari artikel sebelumnya sudah ada, lewati dua CREATE pertama dan INSERT-nya. Pastikan tipe kolom primary key-nya sama dengan skrip ini.Buka tabel
kunjungan, klik tab Structure → Relation view (atau menu Designer). Kamu akan melihat dua foreign key aktif.ENGINE=InnoDB. XAMPP versi terbaru sebenarnya memakai MariaDB, tetapi sintaks dan perilaku foreign key untuk praktik ini sama.
JOIN dalam Relasi Tabel MySQL: Gabungkan Data Kunjungan, Pasien, dan Poli
Tabel kunjungan hanya berisi angka ID, jadi petugas tidak bisa membacanya. JOIN berfungsi seperti mencocokkan nomor kartu dengan buku besar identitas, sehingga angka berubah menjadi nama pasien dan nama poli. Jalankan dua kunjungan fiktif ini, lalu query JOIN-nya di tab SQL:
Hasil yang diharapkan: dua baris muncul dengan kolom nama_pasien (Siti Aminah, Budi Santoso) dan nama_poli (Poli Gigi, Poli Umum), bukan lagi angka 1 dan 2.
| Jenis JOIN | Hasil | Contoh kegunaan |
|---|---|---|
INNER JOIN | Hanya data yang cocok di kedua tabel | Daftar kunjungan lengkap |
LEFT JOIN | Semua data tabel kiri, yang tak cocok berisi NULL | Poli yang belum punya kunjungan |
k, p, pl). Query jadi lebih ringkas, dan kamu terhindar dari error kolom ambigu.
Praktik 2: Form Pendaftaran Kunjungan dari Relasi Tabel MySQL ke PHP
Buat folder
C:\xampp\htdocs\klinik, lalu buka di Sublime Text.koneksi.php.Kalau sudah punya file koneksi dari artikel sebelumnya, pakai saja.
kunjungan.php.File ini berisi tiga hal: proses simpan, form dengan dropdown dari tabel master, dan tabel hasil JOIN.
Buka
http://localhost/klinik/kunjungan.php. Pilih pasien, poli, tanggal, dan isi keluhan, lalu klik Simpan. Hasil yang diharapkan: muncul pesan sukses, dan baris baru tampil paling atas di tabel dengan nama pasien serta nama poli.?) pada prepared statement juga melindungi form dari SQL injection, sesuai rekomendasi OWASP.
Error yang Sering Muncul pada Relasi Tabel MySQL & Cara Mengatasinya
| Pesan Error | Penyebab | Solusi |
|---|---|---|
#1452 Cannot add or update a child row | ID pasien/poli tidak ada di tabel induk | Isi data master dulu, pilih lewat dropdown |
#1451 Cannot delete or update a parent row | Data master masih dipakai kunjungan | Hapus kunjungan terkait dulu, atau jangan hapus data master |
#1215 Cannot add foreign key constraint | Tipe kolom beda (misal INT vs INT UNSIGNED) atau engine bukan InnoDB | Samakan tipe data dan gunakan InnoDB |
#1052 Column ... is ambiguous | Nama kolom sama di dua tabel | Tulis dengan alias, misalnya p.nama_pasien |
- Filter kunjungan. Tambahkan form pencarian pada
kunjungan.phpuntuk menampilkan kunjungan berdasarkan poli dan tanggal memakaiWHERE. - Rekap per poli. Buat query
LEFT JOIN+GROUP BYyang menampilkan jumlah kunjungan setiap poli, termasuk poli yang jumlahnya 0. - Uji integritas. Coba hapus pasien yang sudah punya kunjungan. Catat pesan errornya, lalu jelaskan dengan bahasamu sendiri mengapa MySQL menolaknya.
Kamu sudah menyambungkan data pasien dan master poli. Intinya, relasi tabel MySQL menyimpan setiap data sekali di tabel master, lalu menghubungkannya ke tabel kunjungan lewat foreign key. JOIN mengubah angka ID menjadi informasi yang bisa dibaca, dan form PHP dengan dropdown menjaga data tetap bersih.
Bagaimana hasil praktikmu? Ceritakan error yang kamu temui di kolom komentar, dan bagikan artikel ini ke teman sekelasmu!
💬 Tulis Komentar 📤 Bagikan via WhatsApp- MySQL Reference Manual, FOREIGN KEY Constraints
- MySQL Reference Manual, JOIN Clause
- PHP Manual, MySQLi Prepared Statements
- OWASP, SQL Injection Prevention Cheat Sheet
Lihat seluruh 16 artikel dalam seri ini, dari dasar HTML sampai aplikasi web terintegrasi.
📖 Buka Daftar Isi Artikel
No comments:
Post a Comment