perancangan struktur basis data | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: perancangan struktur basis data

Wednesday, April 1, 2026

perancangan struktur basis data

BASIS DATA SIMRS D3 RMIK Semester 4

Perancangan Struktur Basis Data:
Desain & Arsitektur Skema Fisik SIMRS

Tabel, kolom, Primary Key, Foreign Key, constraint, indeks — semua yang kamu butuhkan untuk merancang basis data Sistem Informasi Manajemen Rumah Sakit yang solid dan profesional.

6+
Entitas Utama SIMRS
3NF
Target Normalisasi
4 Tipe
Constraint Penting
Relasi Antar Tabel

Bayangkan kamu baru masuk kerja di rumah sakit besar sebagai staf rekam medis. Di hari pertama, sistem komputernya down. Data pasien bertebaran di tiga aplikasi berbeda, nomor rekam medis duplikat, dan dokter teriak karena riwayat alergi pasien tidak muncul saat dibutuhkan. Kaos total. Nah, semua bencana itu bisa dicegah — asal perancangan struktur basis data-nya benar sejak awal.

Di artikel ini, kita bahas tuntas bagaimana perancangan struktur basis data — mulai dari desain dan arsitektur, tabel, kolom, Primary Key (PK), Foreign Key (FK), constraint, indeks, sampai skema fisik basis data SIMRS yang nyata. Ini bukan teori kosong; ini bekal langsung yang bisa kamu terapkan di tugas kuliah, praktikum, bahkan nanti di dunia kerja.

⚡ Fakta Menarik

Menurut Permenkes No. 82 Tahun 2013, setiap rumah sakit wajib memiliki Sistem Informasi Manajemen Rumah Sakit (SIMRS). Artinya, basis data yang kamu rancang hari ini adalah komponen legal yang wajib ada di setiap fasilitas kesehatan Indonesia — bukan sekadar tugas kuliah!

🏗️ Desain & Arsitektur Basis Data: Fondasi Sebelum Membangun

Sebelum kamu buru-buru bikin tabel di MySQL, ada tahapan penting yang sering dilewatkan: perancangan arsitektur. Analoginya seperti membangun rumah — kamu tidak langsung pasang batu bata tanpa gambar denah, kan?

Menurut Connolly & Begg (2015), desain basis data terdiri dari tiga level arsitektur yang saling berkaitan, yang dikenal sebagai ANSI/SPARC Architecture:

1
Level Konseptual (Conceptual Schema)
Gambaran besar keseluruhan data — entitas apa saja yang ada (Pasien, Dokter, Obat, dll.) dan bagaimana hubungannya. Biasanya diwujudkan dalam Entity Relationship Diagram (ERD).
2
Level Logikal (Logical Schema)
Transformasi ERD menjadi tabel-tabel relasional. Di sini kita tentukan tabel, kolom, tipe data, dan relasi antar tabel — namun belum terikat ke DBMS tertentu.
3
Level Fisik (Physical Schema)
Implementasi nyata di DBMS (MySQL, PostgreSQL, dll.) — termasuk DDL, indeks, partisi tabel, dan optimasi penyimpanan. Inilah yang kita tulis dalam SQL.
💡 Tips Praktikum

Saat mengerjakan tugas atau UAS, mulailah selalu dari ERD dulu. Dosen umumnya menilai ketepatan relasi antar entitas, bukan banyaknya tabel. Satu ERD yang logis lebih bernilai dari sepuluh tabel yang asal-asalan!

🔑 Tabel, Kolom, Primary Key & Foreign Key dalam SIMRS

Kalau basis data itu seperti sebuah perpustakaan, maka tabel adalah raknya, kolom adalah kategorisasi buku (judul, pengarang, ISBN), dan baris adalah satu buku konkret. Sederhana, tapi penting untuk dipahami sebelum masuk ke bagian yang lebih teknis.

Silberschatz, Korth, & Sudarshan (2020) dalam Database System Concepts mendefinisikan relasi (tabel) sebagai himpunan baris yang memiliki skema atribut (kolom) yang sama. Dalam konteks SIMRS, berikut contoh nyata struktur tabel dasarnya:

Nama Kolom Tipe Data Constraint Keterangan
id_pasien VARCHAR(10) PRIMARY KEY Nomor Rekam Medis unik
nama_pasien VARCHAR(100) NOT NULL Nama lengkap pasien
tanggal_lahir DATE NOT NULL Format YYYY-MM-DD
jenis_kelamin ENUM('L','P') CHECK Hanya 'L' atau 'P'
id_poli INT FOREIGN KEY Referensi ke tabel Poli

Primary Key (PK) adalah kolom (atau kombinasi kolom) yang secara unik mengidentifikasi setiap baris dalam tabel. Tidak boleh NULL, tidak boleh duplikat. Untuk SIMRS, Nomor Rekam Medis (NRM) adalah PK tabel Pasien — ini bukan sekadar aturan teknis, tapi juga standar rekam medis Indonesia berdasarkan Permenkes No. 269 Tahun 2008.

Foreign Key (FK) adalah kolom yang mereferensikan PK di tabel lain, menciptakan relasi antar tabel. Contoh: id_dokter di tabel Kunjungan merujuk ke id_dokter di tabel Dokter. Tanpa FK, datamu bisa "yatim" — ada kunjungan ke dokter yang tidak terdaftar, alias orphan record.

📐 Formula / Aturan Emas PK
PK yang baik = Unik + Stabil + Minimal

Unik = tidak ada dua baris dengan nilai sama. Stabil = nilainya jarang/tidak berubah (hindari pakai nama atau alamat sebagai PK!). Minimal = gunakan kolom sesedikit mungkin, lebih baik satu kolom integer/varchar singkat.

🛡️ Constraint & Indeks: Penjaga Integritas dan Kecepatan Data

Constraint ibarat "peraturan tata tertib" di asrama — dibuat agar tidak ada yang berbuat sembarangan. Sementara indeks ibarat "daftar isi" di buku tebal — tanpanya, kamu harus baca dari halaman pertama hanya untuk nemuin satu nama.

Ramez Elmasri & Shamkant Navathe (2016) dalam Fundamentals of Database Systems mengklasifikasikan constraint menjadi beberapa jenis utama:

🔒
NOT NULL
Kolom wajib diisi, tidak boleh kosong. Contoh: nama_pasien NOT NULL
🎯
UNIQUE
Nilai di kolom tidak boleh duplikat. Contoh: no_nik UNIQUE — satu NIK, satu pasien.
CHECK
Validasi logika domain. Contoh: CHECK (umur >= 0) — umur tidak boleh negatif.
🔗
FOREIGN KEY
Menjaga integritas referensial. Data di tabel anak harus ada padanannya di tabel induk.

Indeks: Turbo untuk Query

Indeks mempercepat pencarian data secara dramatis — terutama di tabel besar seperti data kunjungan pasien yang bisa mencapai jutaan baris. Tanpa indeks, DBMS harus scan seluruh tabel (full table scan). Dengan indeks, ia langsung melompat ke lokasi yang tepat.

SQL DDL — Tabel Pasien & Indeks
-- Tabel Pasien
CREATE TABLE pasien (
  id_pasien   VARCHAR(10)  NOT NULL,
  nama_pasien VARCHAR(100) NOT NULL,
  tanggal_lahir DATE       NOT NULL,
  jenis_kelamin ENUM('L','P') NOT NULL,
  no_nik      VARCHAR(16)  UNIQUE,
  id_poli     INT,
  PRIMARY KEY (id_pasien),
  FOREIGN KEY (id_poli) REFERENCES poli(id_poli)
    ON DELETE SET NULL
    ON UPDATE CASCADE
);

-- Indeks pada nama untuk pencarian cepat
CREATE INDEX idx_nama_pasien
  ON pasien (nama_pasien);

-- Indeks komposit untuk laporan per poli & tanggal
CREATE INDEX idx_poli_tgl
  ON kunjungan (id_poli, tanggal_kunjungan);
🔍 Insight Penting

Jangan asal tambah indeks! Indeks mempercepat SELECT, tapi memperlambat INSERT, UPDATE, DELETE karena indeks harus diperbarui setiap ada perubahan data. Prinsipnya: buat indeks hanya pada kolom yang sering dipakai di klausa WHERE, JOIN, atau ORDER BY.

🏥 Skema Fisik Basis Data SIMRS: Gambaran Nyata

Sekarang kita masuk ke bagian paling seru — bagaimana perancangan struktur basis data itu terlihat dalam konteks nyata sebuah SIMRS. Mengacu pada standar minimal SIMRS menurut Permenkes No. 82 Tahun 2013, setidaknya ada enam entitas/modul utama yang harus diakomodir dalam skema fisiknya:

📊 Entitas Utama dalam Skema SIMRS
👤
Pasien
id_pasien (PK), nama, NIK, tanggal_lahir, golongan_darah, alamat
🩺
Dokter
id_dokter (PK), nama, no_str, spesialisasi, id_poli (FK)
🏥
Kunjungan / Registrasi
id_kunjungan (PK), id_pasien (FK), id_dokter (FK), tanggal, keluhan, status
💊
Obat & Farmasi
id_obat (PK), nama_obat, satuan, stok, harga_beli, harga_jual
💰
Tagihan & Pembayaran
id_tagihan (PK), id_kunjungan (FK), total, status_bayar, metode_bayar
🛏️
Rawat Inap
id_rawat_inap (PK), id_pasien (FK), id_kamar (FK), tgl_masuk, tgl_keluar, diagnosa
🎓 Insight Akademis

Dalam merancang SIMRS, pastikan skema fisikmu mempertimbangkan normalisasi hingga 3NF (Third Normal Form). Menurut Date (2004) dalam An Introduction to Database Systems, 3NF menghilangkan redundansi yang dapat menyebabkan anomali pembaruan (update anomaly), penyisipan (insertion anomaly), dan penghapusan (deletion anomaly) data — tiga bencana terbesar dalam desain basis data yang buruk.

SQL DDL — Tabel Kunjungan (contoh relasi lengkap)
CREATE TABLE kunjungan (
  id_kunjungan    INT          AUTO_INCREMENT PRIMARY KEY,
  id_pasien       VARCHAR(10)  NOT NULL,
  id_dokter       INT          NOT NULL,
  tanggal_kunjungan DATETIME   NOT NULL,
  keluhan         TEXT,
  diagnosa        VARCHAR(200),
  status          ENUM('menunggu','proses','selesai') DEFAULT 'menunggu',
  FOREIGN KEY (id_pasien)
    REFERENCES pasien(id_pasien)
    ON DELETE RESTRICT ON UPDATE CASCADE,
  FOREIGN KEY (id_dokter)
    REFERENCES dokter(id_dokter)
    ON DELETE RESTRICT ON UPDATE CASCADE
);

-- Indeks untuk laporan harian
CREATE INDEX idx_tgl_kunjungan
  ON kunjungan (tanggal_kunjungan);
CREATE INDEX idx_pasien_kunjungan
  ON kunjungan (id_pasien, tanggal_kunjungan);

✅ Checklist Perancangan Basis Data SIMRS yang Benar

Sebelum kamu submit tugas atau deploy sistem, pastikan semua poin berikut sudah terpenuhi. Ini adalah quality gate yang dipakai oleh DBA (Database Administrator) profesional:

Setiap tabel memiliki Primary Key yang unik dan tidak NULL
Semua Foreign Key terdefinisi dengan aksi ON DELETE dan ON UPDATE yang tepat
Kolom wajib sudah ditandai NOT NULL, kolom opsional boleh NULL dengan DEFAULT yang masuk akal
Tipe data kolom proporsional — gunakan INT bukan BIGINT jika datanya kecil; VARCHAR(100) bukan TEXT jika panjang sudah pasti
Skema sudah di-normalisasi minimal 3NF — tidak ada redundansi data antar tabel
Indeks dipasang pada kolom yang sering digunakan untuk pencarian (WHERE) dan JOIN
Nama tabel dan kolom menggunakan konvensi yang konsisten (snake_case, bahasa Indonesia atau Inggris, pilih salah satu)
⚠️ Kesalahan Umum Mahasiswa

Tiga kesalahan terbesar yang paling sering ditemukan di tugas mahasiswa RMIK: (1) menyimpan nama dokter langsung di tabel kunjungan — harusnya pakai FK ke tabel dokter; (2) memakai VARCHAR untuk semua kolom angka — stok_obat harus INT, bukan VARCHAR; dan (3) tidak ada constraint sama sekali — akibatnya stok bisa minus, usia bisa 999 tahun, dan data chaos total.

📚 Referensi

  1. Connolly, T., & Begg, C. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill.
  3. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  4. Date, C. J. (2004). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  5. Kementerian Kesehatan RI. (2013). Peraturan Menteri Kesehatan Nomor 82 Tahun 2013 tentang Sistem Informasi Manajemen Rumah Sakit. Kemenkes RI.
  6. Kementerian Kesehatan RI. (2008). Peraturan Menteri Kesehatan Nomor 269 Tahun 2008 tentang Rekam Medis. Kemenkes RI.
  7. Ramez, E., & Navathe, S. (2017). Sistem Basis Data (terjemahan). Indeks.

🎯 Kesimpulan

Perancangan struktur basis data bukan sekadar urusan teknis — ini adalah fondasi keandalan seluruh SIMRS. Dari desain ERD di level konseptual, transformasi ke skema logikal, hingga implementasi fisik dengan DDL, constraint, dan indeks: setiap langkah memiliki tujuan yang jelas.

Yang perlu kamu ingat: PK untuk identitas unik, FK untuk integritas relasi, constraint untuk validasi bisnis, dan indeks untuk performa. Terapkan 3NF, patuhi standar Permenkes, dan desainmu sudah selevel dengan sistem rumah sakit sungguhan.

💬

Diskusi Yuk! 🙌

Ada yang masih bingung soal FK vs PK? Atau mau nanya kenapa normalisasi 3NF itu penting? Drop pertanyaanmu di kolom komentar! Kita diskusi bareng. Kalau artikel ini bermanfaat, jangan lupa share ke teman seprodi — lumayan jadi referensi belajar bareng sebelum UAS 😄

📌 Bookmark Artikel Ini 📤 Share ke Teman 🔔 Subscribe Blog Ini
#BasisData #SIMRS #RMIK #PrimaryKey #ForeignKey #ERD #SQL #Normalisasi3NF #RekamMedis #KuliahRMIK

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux