Tipe Data pada Database: Numerik, String, Date & Time, dan BLOB

Focusnic - Tipe Data pada Database: Numerik, String, Date & Time, dan BLOB

Pada setiap sistem database, tipe data memainkan peran krusial dalam menentukan bagaimana informasi disimpan, diolah, dan ditampilkan. Pemilihan tipe data yang tepat tidak hanya berpengaruh pada akurasi dan konsistensi, tapi juga pada kinerja dan efisiensi penyimpanan.

Artikel ini mengupas empat kategori utama: numerik, karakter/string, date & time, dan BLOB. Setiap pembahasan dilengkapi dengan contoh penggunaan, rentang nilai, serta tips optimasi.

Dengan memahami karakteristik masing-masing tipe data, Anda dapat merancang skema database yang optimal dan menghindari masalah seperti overflow, pemborosan ruang penyimpanan, atau kesalahan konversi data.

Selami detail penting berikut untuk memperkuat fondasi desain database Anda dan mendukung performa aplikasi secara maksimal.

Tipe Data Numerik: Integer, Decimal, dan Floating-Point

Tipe data numerik menyimpan nilai angka dan dibagi menjadi tiga kategori utama: integer, decimal/numeric, serta floating-point. Pemilihannya bergantung pada kebutuhan presisi dan rentang nilai.

Integer: TINYINT, SMALLINT, INT, BIGINT

Tipe integer ideal untuk bilangan bulat tanpa koma. Setiap varian menawarkan rentang berbeda:

  • TINYINT: -128 hingga 127 (signed), 0–255 (unsigned)
  • SMALLINT: -32.768 hingga 32.767 (signed), 0–65.535 (unsigned)
  • INT (INTEGER): -2.147.483.648 hingga 2.147.483.647 (signed), 0–4.294.967.295 (unsigned)
  • BIGINT: -9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807 (signed), 0–18.446.744.073.709.551.615 (unsigned)

Tips optimasi:

  • Pilih tipe terkecil yang mencakup seluruh nilai untuk menghemat ruang.
  • Gunakan unsigned saat nilai negatif tidak diperlukan.
  • Indeks pada kolom integer umumnya lebih cepat dibandingkan string.

Decimal dan Numeric

DECIMAL (atau NUMERIC) menyimpan angka dengan presisi tetap, menentukan precision (total digit) dan scale (digit di belakang koma). Contoh: DECIMAL(10,2) menyimpan hingga delapan digit sebelum koma dan dua digit desimal.

Cocok untuk data keuangan atau ilmiah yang menuntut akurasi mutlak tanpa kesalahan pembulatan floa-ting.

Float dan Double: Angka Pecahan

FLOAT dan DOUBLE menggunakan format floating-point dengan presisi mendekati, bukan tetap. Float (4 byte) menyediakan sekitar 7 digit presisi, sementara Double (8 byte) mencapai 15 digit.

Kelebihan: hemat ruang untuk data ilmiah. Kekurangan: kemungkinan rounding error, sehingga kurang cocok untuk perhitungan keuangan.

Tipe Data Karakter & String: CHAR, VARCHAR, TEXT

Tipe data karakter menyimpan teks dan dibagi berdasarkan panjang tetap (fixed) atau variabel (variable). Pilih berdasarkan pola data dan kebutuhan performa.

Perbedaan CHAR vs VARCHAR

CHAR(n) menyimpan panjang tetap n karakter, menambahkan spasi jika teks lebih pendek. VARCHAR(n) menyimpan panjang variabel hingga n karakter, tanpa padding.

Rekomendasi:

  • CHAR ideal untuk data dengan panjang konsisten, misal kode negara (2 karakter) atau status (1–3 karakter).
  • VARCHAR cocok untuk teks dengan panjang bervariasi, seperti nama pengguna atau alamat email.
  • VARCHAR memerlukan 1–2 byte ekstra untuk mencatat panjang aktual.

TEXT, MEDIUMTEXT, LONGTEXT

Untuk teks besar, gunakan tipe TEXT dan variannya:

  • TEXT: hingga 65.535 byte (~64 KB)
  • MEDIUMTEXT: hingga 16.777.215 byte (~16 MB)
  • LONGTEXT: hingga 4.294.967.295 byte (~4 GB)

Catatan:

  • Tipe TEXT tidak menyimpan karakter panjang secara langsung di baris utama, melainkan di lokasi terpisah.
  • Pencarian pada kolom TEXT bisa lebih lambat dan memerlukan full-text index jika volume besar.

Tipe Data Date & Time dan BLOB

Selain angka dan teks, database berisi informasi waktu dan data biner. Berikut opsi yang umum dipakai:

Date & Time: DATE, DATETIME, TIMESTAMP, TIME, YEAR

Rancangan penyimpanan tanggal dan waktu:

  • DATE: menyimpan tahun-bulan-hari (YYYY-MM-DD).
  • DATETIME: kombinasi DATE dan waktu (YYYY-MM-DD HH:MM:SS), rentang 1000-01-01 hingga 9999-12-31.
  • TIMESTAMP: 4-byte, menyimpan detik sejak epoch (1970-01-01 00:00:00 UTC), otomatis terupdate dengan zona waktu.
  • TIME: menyimpan jam:menit:detik (-838:59:59 hingga 838:59:59).
  • YEAR: menyimpan tahun dalam format 2 atau 4 digit (1901–2155 pada 4-digit).

Tips:

  • Gunakan TIMESTAMP untuk mencatat waktu pembuatan/ubah data secara otomatis.
  • Pilih DATETIME saat membutuhkan jangkauan historis sebelum 1970 atau setelah 2038.

BLOB: Menyimpan Data Biner Besar

BLOB (Binary Large Object) menyimpan file biner seperti gambar, audio, atau dokumen. Variannya:

  • TINYBLOB: hingga 255 byte
  • BLOB: hingga 65.535 byte (~64 KB)
  • MEDIUMBLOB: hingga 16.777.215 byte (~16 MB)
  • LONGBLOB: hingga 4.294.967.295 byte (~4 GB)

Pertimbangan:

  • Penyimpanan BLOB dalam database memudahkan backup terpusat, tapi dapat membebani I/O.
  • Alternatif: simpan file di storage eksternal dan rujuk path pada kolom VARCHAR.
  • Indexing BLOB tidak efektif; gunakan untuk data biner mentah saja.

Kesimpulan

Pemilihan tipe data numerik, string, date & time, serta BLOB harus didasarkan pada kebutuhan presisi, rentang nilai, dan performa. Dengan memahami karakteristik masing-masing, Anda dapat merancang database yang efisien, skalabel, dan mudah dioptimasi sesuai kebutuhan aplikasi.

Table of Contents