Halo, mahasiswa baru! Selamat datang di salah satu materi paling fundamental dalam kuliah basis data — yaitu jenis dan tipe data. Sebelum kamu bisa bikin database yang keren dan efisien, kamu wajib paham dulu "bahan baku" penyusunnya: tipe data.
Kalau basis data itu ibarat gudang, maka tipe data adalah rak-rak dengan label berbeda. Ada rak untuk angka bulat, rak untuk teks, rak untuk tanggal, dan sebagainya. Salah taruh barang ke rak yang salah? Sistem kamu bisa kacau balau, boros memori, bahkan error yang susah dilacak.
Artikel ini dirancang khusus buat kamu yang baru pertama kali ketemu mata kuliah basis data — dengan bahasa yang santai, analogi yang mudah dipahami, plus studi kasus nyata: penerapan tipe data pada sistem rekam medis. Karena belajar tipe data lebih seru kalau ada konteks dunia nyatanya! 🏥
Apa Itu Tipe Data dalam Basis Data? Kenapa Penting Banget?
Tipe data (data type) dalam basis data adalah kategori atau klasifikasi yang menentukan jenis nilai apa yang bisa disimpan dalam sebuah kolom atau atribut, berapa banyak memori yang dialokasikan, dan operasi apa saja yang bisa dilakukan terhadap nilai tersebut (Ramakrishnan & Gehrke, 2003).
Secara sederhana: tipe data adalah "kontrak" antara kamu dan database — kamu bilang "kolom ini isinya angka bulat antara 0–127", database bilang "oke, aku siapkan tempat 1 byte untuk itu".
Jenis & Tipe Data dalam Basis Data Secara Umum
Secara umum, standar SQL (Structured Query Language) yang dirumuskan oleh ISO/IEC 9075 mengelompokkan tipe data ke dalam beberapa kategori besar. Inilah fondasi yang digunakan oleh hampir semua sistem manajemen basis data (DBMS), termasuk MySQL, PostgreSQL, Oracle, dan SQL Server.
Tipe data numerik digunakan untuk menyimpan nilai angka. Terbagi menjadi dua sub-kategori utama:
Menyimpan bilangan bulat tanpa desimal. Analoginya: seperti menghitung jumlah orang — kamu tidak bisa punya 2,5 orang di ruang tunggu, kan? Ukurannya bervariasi tergantung range yang dibutuhkan.
Untuk angka dengan koma/desimal. Bedanya: FLOAT itu "estimasi" (cocok untuk berat badan, suhu), sementara DECIMAL itu "presisi tinggi" (wajib untuk uang/keuangan, dosis obat). Kalau kamu pakai FLOAT untuk tagihan rumah sakit, siap-siap ada selisih aneh di angka desimalnya!
Untuk menyimpan teks, huruf, dan karakter. Ini tipe data yang paling sering dipakai mahasiswa — tapi juga paling sering salah digunakan!
Menyimpan teks dengan panjang tetap/fixed. Analoginya: seperti formulir dengan kotak isian yang sudah punya jumlah kotak pasti. Kalau kamu isi "AB", tapi fieldnya CHAR(10), maka 8 karakter sisanya akan diisi spasi kosong. Cocok untuk data yang panjangnya selalu sama, seperti kode diagnosis ICD-10 (misal: "A01.0").
Menyimpan teks dengan panjang bervariasi, maksimal n karakter. Jauh lebih fleksibel dan hemat storage dibanding CHAR. Cocok untuk nama pasien, alamat, keluhan, yang panjangnya tidak bisa diprediksi. Ini tipe data teks paling populer di dunia! (Silberschatz et al., 2019)
Untuk teks yang sangat panjang (dokumen, catatan dokter, anamnesis panjang). Di MySQL tersedia TINYTEXT, TEXT, MEDIUMTEXT, hingga LONGTEXT.
Hanya punya dua nilai: TRUE atau FALSE (ya atau tidak). Simpel tapi sangat powerful! Analoginya: lampu — cuma bisa nyala atau mati. Cocok untuk: status aktif pasien, apakah pasien memiliki alergi, apakah sudah menikah, apakah kunjungan darurat, dan sebagainya. Di MySQL, ini diimplementasikan sebagai TINYINT(1) dengan nilai 0 (FALSE) dan 1 (TRUE).
Khusus menyimpan informasi temporal. Di rekam medis, ini sangat krusial untuk mencatat kapan pasien datang, kapan pemeriksaan dilakukan, kapan obat diberikan.
Tipe Data di MySQL: Panduan Lengkap + Perbandingan
MySQL adalah DBMS open-source paling populer di dunia — digunakan oleh Facebook, YouTube, Twitter, dan tentu saja ribuan sistem informasi rumah sakit di Indonesia (MySQL Documentation, 2024). Menurut DB-Engines Ranking, MySQL secara konsisten menempati posisi kedua DBMS paling banyak digunakan secara global.
Berikut adalah tabel lengkap tipe data MySQL beserta kegunaannya:
| Tipe Data | Ukuran | Range Nilai | Contoh Penggunaan |
|---|---|---|---|
| TINYINT | 1 byte | -128 s/d 127 | Jumlah tablet obat, status (0/1) |
| SMALLINT | 2 byte | -32.768 s/d 32.767 | Nomor antrian, tahun lahir |
| INT / INTEGER | 4 byte | ~-2.1M s/d ~2.1M | ID pasien, ID kunjungan |
| BIGINT | 8 byte | ~-9.2 Kuadriliun | ID untuk sistem skala nasional |
| FLOAT | 4 byte | ~7 digit desimal | Berat badan, tinggi badan, suhu |
| DOUBLE | 8 byte | ~15 digit desimal | Hasil lab dengan presisi tinggi |
| DECIMAL(p,s) | Variabel | Presisi eksak | Biaya/tagihan, dosis obat (penting!) |
| Tipe Data | Ukuran Maks | Karakteristik | Contoh Field Rekam Medis |
|---|---|---|---|
| CHAR(n) | 255 karakter | Panjang tetap | kode_icd, jenis_kelamin ('L'/'P') |
| VARCHAR(n) | 65.535 byte | Panjang variabel | nama_pasien, alamat, no_telepon |
| TEXT | 65.535 byte | Teks panjang | catatan_dokter, anamnesis, keluhan |
| TINYINT(1) | 1 byte | Boolean (0/1) | status_aktif, punya_alergi, darurat |
| DATE | 3 byte | Format YYYY-MM-DD | tanggal_lahir, tanggal_kunjungan |
| DATETIME | 8 byte | Tanggal + jam | waktu_masuk, waktu_keluar ICU |
| TIMESTAMP | 4 byte | Dengan timezone, auto-update | created_at, updated_at record |
SELECT 0.1 + 0.2; — hasilnya bukan 0.3, melainkan 0.30000000000000004! Inilah "floating point imprecision" yang terjadi pada FLOAT/DOUBLE. Untuk data keuangan seperti tagihan pasien atau dosis obat, selalu gunakan DECIMAL demi akurasi 100%. Ini bukan bug MySQL — ini sifat dasar bilangan floating point di semua komputer (IEEE 754 Standard).Implementasi Nyata: Tipe Data pada Tabel Pasien & Kunjungan Rekam Medis
Oke, sekarang waktunya kita lihat bagaimana semua teori di atas diterapkan dalam konteks nyata — sistem informasi rekam medis. Berdasarkan standar rekam medis yang diatur dalam Permenkes No. 269 Tahun 2008 tentang Rekam Medis, dan panduan teknis sistem informasi rumah sakit dari Kementerian Kesehatan RI, berikut contoh desain tabel yang baik:
❌ Pakai TEXT untuk semua deskripsi pendek — Kolom TEXT tidak bisa diindex di MySQL (secara default). Jika kamu sering melakukan search/filter pada kolom itu, gunakan VARCHAR.
❌ Simpan tanggal sebagai VARCHAR — Seperti menulis "12 Maret 2024" dalam kolom VARCHAR. Akibatnya kamu tidak bisa melakukan operasi tanggal seperti menghitung usia atau rentang tanggal kunjungan!
- Elmasri, R. & Navathe, S.B. (2015). Fundamentals of Database Systems (7th ed.). Pearson Education.
- Ramakrishnan, R. & Gehrke, J. (2003). Database Management Systems (3rd ed.). McGraw-Hill.
- Silberschatz, A., Korth, H.F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.
- MySQL AB. (2024). MySQL 8.0 Reference Manual: Data Types. Oracle Corporation. https://dev.mysql.com/doc/refman/8.0/en/data-types.html
- Kementerian Kesehatan RI. (2008). Peraturan Menteri Kesehatan No. 269/MENKES/PER/III/2008 tentang Rekam Medis. Jakarta: Kemenkes RI.
- ISO/IEC. (2016). ISO/IEC 9075-1:2016 — Information technology — Database languages — SQL. International Organization for Standardization.
Kesimpulan: Tipe Data adalah Fondasi Database yang Tidak Bisa Diabaikan
Oke, kamu sudah sampai di akhir artikel ini — selamat! 🎉 Mari kita rekap apa yang sudah kita pelajari bersama:
tbl_pasien dan tbl_kunjungan dari contoh di atas, lalu coba INSERT beberapa data dan lihat bagaimana MySQL memvalidasi tipe datanya. Belajar tipe data itu harus langsung di tangan, bukan cuma dibaca! 💪
No comments:
Post a Comment