Dalam dunia nyata, data tidaklah statis, ia dinamis, bergerak cepat, dan sangat rentan terhadap kesalahan manusia, baik itu karena kelalaian mengetik (typo) maupun logika yang keliru. Tanpa aturan yang tegas, basis data hanyalah sebuah gudang besar berisi catatan yang berantakan dan tidak dapat dipercaya.

image.png

Pada bab ini, kita akan mempelajari Constraints atau batasan. Jika tabel basis data adalah sebuah bangunan, maka constraints adalah fondasi dan pilar penyangganya. Ia berfungsi sebagai "polisi lalu lintas" yang bekerja 24 jam untuk memastikan bahwa setiap informasi yang masuk haruslah valid, jujur, dan konsisten. Kita tidak hanya akan belajar membuat tabel, tapi kita akan belajar bagaimana membangun sebuah sistem yang memiliki integritas.

Query sebelum praktik

5.1. Entity Integrity

image.png

Dalam kehidupan sehari-hari, setiap orang memiliki sesuatu yang membedakannya dari orang lain, seperti sidik jari atau nomor KTP. Tanpa identitas unik ini, dunia akan kacau. bayangkan jika ada dua orang berbeda dengan nomor rekening bank yang sama.

Dalam basis data, prinsip ini disebut Entity Integrity (Integritas Entitas). Aturan ini menjamin bahwa setiap baris data dalam tabel adalah entitas yang unik dan dapat dibedakan satu sama lain. Tidak boleh ada baris "hantu" yang tidak memiliki identitas, dan tidak boleh ada dua baris yang mengaku sebagai individu yang sama.

5.1.1. PRIMARY KEY

Primary Key (Kunci Primer) adalah jantung dari sebuah tabel. Ini adalah satu atau beberapa kolom yang kita pilih sebagai identitas unik. Ibarat sebuah kunci pintu, ia hanya cocok untuk satu lubang spesifik.

Ada dua syarat mutlak agar sebuah kolom bisa menjadi Primary Key:

  1. Tidak Boleh Kosong (NOT NULL): Setiap data harus punya identitas. Anda tidak bisa mendaftarkan mahasiswa tanpa memberikan NIM.
  2. Tidak Boleh Kembar (UNIQUE): Tidak boleh ada dua data yang memiliki kunci yang sama.

Dalam kasus Database Kampus kita, kolom yang paling ideal menjadi Primary Key adalah NIM (Nomor Induk Mahasiswa). Meskipun ada dua mahasiswa bernama "Jeffry" yang lahir di tanggal yang sama, NIM mereka akan tetap membedakan siapa yang mengambil mata kuliah Kalkulus dan siapa yang mengambil Bahasa Inggris. Untuk menetapkan Primary Key pada tabel yang sudah kita buat sebelumnya, kita menggunakan perintah ALTER:

ALTER TABLE mahasiswa
ADD PRIMARY KEY (nim);

5.1.2. AUTO_INCREMENT

Terkadang, kita berhadapan dengan data yang tidak memiliki identitas alami seperti NIM atau NIK. Contohnya, saat mencatat riwayat transaksi atau nomor antrean. Apakah kita harus mengetik nomor urut satu per satu secara manual? Tentu tidak.

Di sinilah AUTO_INCREMENT berperan. Fitur ini memerintahkan basis data untuk menciptakan nomor urut secara otomatis setiap kali ada data baru yang masuk. Mari kita terapkan pada tabel krs (Kartu Rencana Studi), di mana setiap pengambilan mata kuliah akan diberikan ID unik secara otomatis:

CREATE TABLE krs (
id_krs INT AUTO_INCREMENT,
nim_mhs CHAR(8),
kode_matkul VARCHAR(10),
semester VARCHAR(5),
PRIMARY KEY (id_krs)
);

Dengan AUTO_INCREMENT, pengembang aplikasi tidak perlu lagi pusing memikirkan "tadi nomor terakhir berapa ya?". Basis data akan mengelolanya untuk Anda, memastikan tidak ada nomor yang terlewat atau terduplikasi.