
Dalam dunia nyata, data tidaklah statis. ia bersifat dinamis dan rentan terhadap kesalahan manusia maupun sistem. Bayangkan jika sebuah universitas memiliki dua mahasiswa dengan NIM yang sama, atau seorang mahasiswa yang mengambil mata kuliah yang sebenarnya tidak pernah terdaftar di program studi tersebut.
Pada bab ini, kita akan mendalami bagaimana Data Definition Language (DDL) tidak hanya digunakan untuk membuat struktur, tetapi juga untuk menyematkan aturan-aturan cerdas ke dalam tabel. Aturan ini, yang disebut sebagai constraints (batasan), berfungsi sebagai polisi lalu lintas yang memastikan setiap data yang masuk memenuhi standar kualitas yang ditetapkan. Kita juga akan mempelajari bagaimana melakukan renovasi terhadap struktur tabel yang sudah ada tanpa harus menghancurkan data di dalamnya melalui perintah ALTER.

Integritas Entitas adalah prinsip dasar yang menyatakan bahwa setiap baris (record) dalam sebuah tabel harus dapat diidentifikasi secara unik. Dalam dunia nyata, tidak ada dua manusia yang benar-benar identik dalam segala hal, begitu pula dalam tabel basis data. Kita memerlukan sebuah penanda yang memastikan bahwa data "Budi" di jurusan Informatika berbeda dengan "Budi" di jurusan Sistem Informasi.
Primary Key atau Kunci Primer adalah kolom (atau kumpulan kolom) yang dipilih untuk menjadi identitas unik bagi setiap baris data. Syarat utama sebuah Primary Key adalah nilainya tidak boleh kosong (NOT NULL) dan tidak boleh ada yang kembar (UNIQUE).
Dalam Database Kampus kita, kolom yang paling tepat menjadi Primary Key pada tabel mahasiswa adalah NIM (Nomor Induk Mahasiswa). Meskipun ada mahasiswa yang memiliki nama, tanggal lahir, atau alamat yang sama, NIM mereka dipastikan akan selalu berbeda.
ALTER TABLE mahasiswa
ADD PRIMARY KEY (nim);
Dengan perintah ini, sistem akan menolak jika di masa mendatang ada operator yang mencoba memasukkan mahasiswa baru dengan NIM yang sudah terdaftar. Inilah yang kita sebut sebagai penjaga gerbang integritas data.
Terkadang, kita berurusan dengan data yang tidak memiliki kode unik alami seperti NIM, misalnya pada tabel log_aktivitas atau id_transaksi_pembayaran_ukt. Untuk mempermudah, kita bisa meminta basis data untuk membuatkan nomor urut secara otomatis setiap kali data baru masuk. Inilah fungsi dari AUTO_INCREMENT.
Analogi sederhananya adalah mesin pengambil nomor antrean di bank. Anda tidak perlu menentukan nomor Anda sendiri; mesin akan memberikan nomor selanjutnya secara berurutan.
Misalkan kita membuat tabel jadwal_kuliah di mana kita ingin setiap jadwal memiliki ID unik yang bertambah sendiri:
CREATE TABLE jadwal_kuliah (
id_jadwal INT AUTO_INCREMENT,
kode_matkul VARCHAR(10),
hari VARCHAR(10),
jam TIME,
PRIMARY KEY (id_jadwal)
);
Setiap kali Anda memasukkan jadwal baru, Anda tidak perlu mengisi kolom id_jadwal. Basis data akan mengisinya dengan 1, 2, 3, dan seterusnya. Hal ini sangat memudahkan pengembang aplikasi karena mengurangi risiko terjadinya duplikasi nomor ID akibat kesalahan manusia.
Integritas entitas melalui Primary Key memastikan bahwa identitas internal sebuah tabel terjaga. Namun, bagaimana jika tabel 'Mahasiswa' perlu berhubungan dengan tabel 'Mata Kuliah'? Bagaimana cara kita menjamin bahwa seorang mahasiswa hanya bisa mengambil mata kuliah yang benar-benar ada di daftar?
