normalisasi 1nf 2nf | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: normalisasi 1nf 2nf

Monday, October 5, 2026

normalisasi 1nf 2nf

๐Ÿ—‚️๐Ÿงน

Kuliah Basis Data · Artikel 10 dari 16

Beres-beres Tabel: Menata Data Mentah ke 1NF dan 2NF

Dari tabel kunjungan pasien yang berantakan menjadi struktur rapi, selangkah demi selangkah.

Normalisasi 1NF 2NF Rekam Medis
⏱ 9 menit
Estimasi baca
๐ŸŽ“ Dasar
Level
๐Ÿ“… 2026
Tahun

Pernah membuka tabel kunjungan pasien lalu menemukan kolom diagnosis berisi "J00, I10, E11" sekaligus dalam satu sel? Coba cari semua pasien hipertensi dari tabel itu. Bisa, tapi capek, dan hasilnya rawan meleset. Itulah tanda data mentah belum dirapikan. Artikel ini membahas normalisasi 1NF dan 2NF khusus untuk kamu, mahasiswa D3 RMIK semester 3, memakai data registrasi, kunjungan, dan diagnosis yang akan kamu temui di fasilitas pelayanan kesehatan.

๐Ÿ“š Artikel ini bagian dari seri Kuliah Basis Data (Artikel 10 dari 16). Sub-CPMK T3: kamu mampu mengubah data tidak ternormalisasi menjadi 1NF dan 2NF.

Kenapa Normalisasi 1NF dan 2NF Dibutuhkan di Rekam Medis?

Bayangkan lemari arsip puskesmas. Kalau satu map berisi data pasien, riwayat dokter, dan daftar penyakit bercampur, mencari satu informasi jadi lama, dan mengubahnya berisiko salah. Normalisasi adalah proses "beres-beres" itu: memecah tabel besar menjadi tabel kecil yang masing-masing mengurus satu hal (Date, 2003; Silberschatz dkk., 2019). Konsep dasarnya berasal dari model relasional Codd (1970).

๐Ÿ“ Definisi Ringkas

1NF: setiap sel hanya berisi satu nilai (atomik), tidak ada kelompok kolom berulang, dan setiap baris bisa dibedakan lewat primary key.

2NF: sudah 1NF, dan setiap kolom non-kunci bergantung pada seluruh primary key, bukan hanya sebagian (tidak ada ketergantungan parsial).

๐Ÿ’ก Tips: 2NF hanya "bermasalah" pada tabel dengan primary key gabungan (lebih dari satu kolom). Kalau primary key-nya satu kolom dan sudah 1NF, tabel otomatis 2NF.

Ini data mentah kita, hasil salinan buku register rawat jalan yang diketik ke satu tabel:

๐Ÿ“‹ Tabel mentah: kunjungan_mentah
no_kunjungan | no_rm   | nama_pasien | kode_dokter | nama_dokter | diagnosis
K001         | RM-0101 | Siti Aisyah | D01         | dr. Budi    | J00 Nasofaringitis akut, I10 Hipertensi esensial
K002         | RM-0102 | Rudi Hartono| D02         | dr. Lina    | E11 Diabetes melitus tipe 2
K003         | RM-0101 | Siti Aisyah | D01         | dr. Budi    | I10 Hipertensi esensial

Langkah Normalisasi 1NF: Satu Sel, Satu Nilai

Lihat baris K001: dua diagnosis menumpuk di satu sel. Ini melanggar 1NF. Analoginya seperti satu kotak obat yang isinya parasetamol dan amlodipin dicampur, apoteker pasti sulit menghitung stoknya. Perbaiki dengan empat langkah:

1
Cari kolom yang tidak atomik. Di sini: diagnosis (isi lebih dari satu nilai, plus kode dan nama digabung).
2
Pisahkan menjadi kolom atomik. Buat kode_icd dan nama_penyakit sebagai kolom sendiri.
3
Jadikan satu diagnosis = satu baris. Kunjungan K001 tampil dua kali, sekali per diagnosis.
4
Tentukan primary key. Satu kunjungan bisa punya banyak diagnosis, jadi kuncinya gabungan: (no_kunjungan, kode_icd).
✅ Hasil 1NF (SQL)
CREATE TABLE kunjungan_1nf (
  no_kunjungan  VARCHAR(10),
  kode_icd      VARCHAR(10),
  no_rm         VARCHAR(10),
  nama_pasien   VARCHAR(60),
  kode_dokter   VARCHAR(5),
  nama_dokter   VARCHAR(60),
  nama_penyakit VARCHAR(100),
  PRIMARY KEY (no_kunjungan, kode_icd)
);
๐Ÿ”ฅ Fakta menarik: kode ICD-10 sendiri sudah bersifat "atomik" dan unik per penyakit, sehingga cocok dijadikan bagian primary key pada tabel diagnosis.

Dari 1NF ke 2NF: Memutus Ketergantungan Parsial

Tabel 1NF kita sudah lebih rapi, tetapi masih boros. Nama Siti Aisyah dan dr. Budi tertulis berulang di setiap diagnosis. Penyebabnya adalah ketergantungan fungsional parsial: ada kolom yang hanya bergantung pada sebagian primary key. Analoginya seperti kartu antrean: nama pasien cukup ditentukan oleh nomor kunjungan, tidak perlu menunggu kode ICD.

๐Ÿ” Analisis Ketergantungan Fungsional (PK = no_kunjungan + kode_icd)
KetergantunganJenisTindakan
no_kunjungan → no_rm, nama_pasien, kode_dokter, nama_dokterParsial (bagian PK)Pindah ke tabel kunjungan
kode_icd → nama_penyakitParsial (bagian PK)Pindah ke tabel ref_icd
(no_kunjungan, kode_icd) → (tidak ada kolom lain)PenuhJadi tabel diagnosis_kunjungan
⚠️ Perhatian: jangan hapus kolom begitu saja saat memecah tabel. Pastikan setiap tabel baru punya primary key, dan kolom penghubung (no_kunjungan, kode_icd) tetap ada supaya data bisa digabung kembali dengan JOIN.
✅ Hasil 2NF (SQL)
CREATE TABLE ref_icd (
  kode_icd      VARCHAR(10) PRIMARY KEY,
  nama_penyakit VARCHAR(100)
);
CREATE TABLE kunjungan (
  no_kunjungan VARCHAR(10) PRIMARY KEY,
  no_rm        VARCHAR(10),
  nama_pasien  VARCHAR(60),
  kode_dokter  VARCHAR(5),
  nama_dokter  VARCHAR(60)
);
CREATE TABLE diagnosis_kunjungan (
  no_kunjungan VARCHAR(10),
  kode_icd     VARCHAR(10),
  PRIMARY KEY (no_kunjungan, kode_icd)
);
⚡ Insight penting: tabel kunjungan sudah 2NF, tetapi nama_pasien masih bergantung pada no_rm, dan nama_dokter pada kode_dokter. Itu ketergantungan transitif, tugas 3NF di artikel berikutnya.

Cek Cepat Normalisasi 1NF dan 2NF dengan Tabel Pembanding

Aspek1NF2NF
SyaratNilai atomik, tanpa kolom berulang1NF + tanpa ketergantungan parsial
Masalah yang dibereskanDiagnosis bertumpuk dalam satu selNama pasien dan penyakit tertulis berulang
Cara memperbaikiPecah kolom, satu nilai satu barisPecah tabel berdasarkan ketergantungan

Praktikkan sekarang: ambil satu tabel dari formulir registrasi yang pernah kamu lihat, lalu tuliskan primary key-nya. Tanyakan pada tiap kolom, "kamu bergantung pada seluruh kunci atau sebagian saja?" Dua pertanyaan itu sudah cukup untuk 80% kasus 2NF di laporan praktikum.

Kesimpulan

Normalisasi 1NF dan 2NF membuat data kunjungan lebih mudah dicari, hemat tempat, dan aman diubah. 1NF memastikan satu sel satu nilai, sedangkan 2NF memisahkan kolom yang hanya bergantung pada sebagian primary key. Hasilnya tiga tabel: ref_icd, kunjungan, dan diagnosis_kunjungan.

Menurutmu, bagian mana yang paling membingungkan: 1NF atau 2NF? Tulis di kolom komentar, dan bagikan artikel ini ke teman sekelasmu.

Lanjut ke 3NF ๐Ÿš€
Referensi
  1. Codd, E. F. (1970). A relational model of data for large shared data banks. Communications of the ACM, 13(6), 377–387.
  2. Date, C. J. (2003). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  3. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.
  4. Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
  5. Peraturan Menteri Kesehatan Republik Indonesia Nomor 24 Tahun 2022 tentang Rekam Medis.
#BasisData #Database #RMIK #1NF #2NF #KetergantunganFungsional
๐Ÿ—‚️ Normalisasi 1NF dan 2NF ๐Ÿงน Data Mentah ke Tabel Rapi
๐Ÿ“š

Daftar Isi Kuliah Basis Data

Lihat seluruh 16 artikel dalam seri ini dan temukan urutan belajarnya.

Buka Daftar Isi

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