SQL -Constraints: Kunci Integrasi Data

Hai teman-teman, para ahli basis data masa depan! Saya sangat gembira untuk menjadi panduanmu dalam perjalanan menarik ini ke dunia constraint SQL. Sebagai seseorang yang telah mengajar SQL selama lebih dari satu dekade, saya bisa menjamin bahwa memahami constraint seperti membuka kekuatan super rahasia dalam manajemen basis data. Jadi, mari kita masuk ke dalam!

SQL - Constraints

Apa Itu Constraints SQL?

Bayangkan Anda membangun rumah kartu. Setiap kartu harus ditempatkan dengan benar, atau seluruh struktur bisa runtuh. Constraints SQL seperti aturan yang membuat basis data 'rumah kartu' Anda tetap kokoh. Mereka memastikan bahwa data di tabel Anda mengikuti aturan khusus, menjaga akurasi dan konsistensi.

Mengapa Constraints Penting?

Biarkan saya ceritakan sebuah kisah singkat. Pernah ada murid saya yang membuat basis data untuk toko hewan peliharaan tanpa menggunakan constraint. Suatu hari, mereka secara tidak sengaja memasukkan harga negatif untuk seekor anak anjing. Tiba-tiba, orang-orang mendapatkan bayaran untuk mengadopsi anjing! Itu adalah chaos (tetapi anjing-anjing sangat senang). Itulah mengapa kita butuh constraint - untuk mencegah situasi seperti ini yang lucu tapi masalah.

Constraints SQL: Daftar

Berikut adalah tabel utama constraints SQL yang kita akan jelajahi:

Constraint Deskripsi
NOT NULL Memastikan kolom tidak bisa memiliki nilai NULL
UNIQUE Memastikan semua nilai di kolom berbeda
PRIMARY KEY Kombinasi NOT NULL dan UNIQUE
FOREIGN KEY Memastikan integritas referensi antara tabel
CHECK Memastikan semua nilai di kolom memenuhi syarat tertentu
DEFAULT Menetapkan nilai default untuk kolom
INDEX Digunakan untuk membuat dan mengambil data dari basis data dengan cepat

Sekarang, mari kitauraikan ini satu per satu.

Membuat Constraints di SQL

Constraints dapat ditambahkan saat Anda membuat tabel pertama kali atau kemudian menggunakan pernyataan ALTER TABLE. Mari kita mulai dengan membuat tabel sederhana untuk toko hewan peliharaan khayal kita:

CREATE TABLE pets (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
species VARCHAR(50) NOT NULL,
age INT CHECK (age >= 0),
price DECIMAL(10, 2) NOT NULL CHECK (price > 0),
adoption_date DATE DEFAULT NULL
);

Tabel sederhana ini sudah termasuk beberapa constraints. Mari kitauraikan mereka:

Constraint NOT NULL

Constraint NOT NULL memastikan bahwa kolom tidak bisa memiliki nilai NULL. Dalam contoh kita, 'id', 'name', 'species', dan 'price' semua NOT NULL. Ini berarti setiap hewan harus memiliki rincian ini terisi.

name VARCHAR(50) NOT NULL,

Constraint UNIQUE

Meskipun kita belum secara eksplisit menggunakan UNIQUE, itu penting untuk disebutkan. Constraint UNIQUE memastikan semua nilai di kolom berbeda. Misalnya, jika kita ingin setiap hewan memiliki nomor mikrochip yang unik:

ALTER TABLE pets
ADD COLUMN microchip_number VARCHAR(20) UNIQUE;

Constraint DEFAULT

Constraint DEFAULT memberikan nilai default untuk kolom saat nilai tidak ditentukan. Dalam contoh kita, 'adoption_date' memiliki DEFAULT NULL, artinya jika tidak ada tanggal yang ditentukan, itu akan NULL.

adoption_date DATE DEFAULT NULL

Constraint PRIMARY KEY

Constraint PRIMARY KEY secara unik mengidentifikasi setiap rekord di tabel. Ini adalah kombinasi NOT NULL dan UNIQUE. Dalam tabel kita, 'id' adalah primary key:

id INT NOT NULL PRIMARY KEY,

Constraint FOREIGN KEY

Constraint FOREIGN KEY digunakan untuk mencegah aksi yang akan menghancurkan tautan antara tabel. Mari kita tambahkan tabel pemilik dan menghubungkannya ke tabel kita:

CREATE TABLE owners (
owner_id INT NOT NULL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);

ALTER TABLE pets
ADD COLUMN owner_id INT,
ADD CONSTRAINT fk_owner
FOREIGN KEY (owner_id) REFERENCES owners(owner_id);

Sekarang, Anda tidak bisa menambahkan hewan dengan owner_id yang tidak ada di tabel pemilik. Itu seperti memastikan setiap hewan memiliki rumah nyata!

Constraint CHECK

Constraint CHECK memastikan semua nilai di kolom memenuhi syarat tertentu. Dalam tabel kita, kita gunakan itu untuk memastikan umur dan harga positif:

age INT CHECK (age >= 0),
price DECIMAL(10, 2) NOT NULL CHECK (price > 0),

Constraint INDEX

Meskipun bukan constraint, INDEX sangat penting untuk kinerja basis data. Mereka seperti indeks di belakang buku, membantu SQL menemukan data secara cepat:

CREATE INDEX idx_species ON pets(species);

Ini membuat indeks pada kolom species, membuat pencarian berdasarkan species menjadi lebih cepat.

Menghapus Constraints SQL

kadang-kadang, Anda mungkin perlu menghapus constraint. Berikut cara Anda melakukannya:

ALTER TABLE pets
DROP CONSTRAINT check_price;

Ini akan menghapus constraint CHECK pada kolom harga.

Constraints Integrasi Data: Menggabungkan Semua

Semua constraint ini bekerja bersama-sama untuk memastikan integritas data. Mereka seperti sistem kekebalan basis data Anda, melindunginya dari data buruk. Mari kita lihat contoh yang lebih kompleks:

CREATE TABLE adoptions (
adoption_id INT NOT NULL PRIMARY KEY,
pet_id INT NOT NULL,
owner_id INT NOT NULL,
adoption_date DATE DEFAULT CURRENT_DATE,
adoption_fee DECIMAL(10, 2) CHECK (adoption_fee >= 0),
FOREIGN KEY (pet_id) REFERENCES pets(id),
FOREIGN KEY (owner_id) REFERENCES owners(owner_id),
UNIQUE (pet_id, adoption_date)
);

Tabel ini memastikan:

  1. Setiap adopsi memiliki ID unik (PRIMARY KEY)
  2. Setiap adopsi terhubung ke hewan dan pemilik yang valid (FOREIGN KEY)
  3. Biaya adopsi tidak bisa negatif (CHECK)
  4. Jika tanggal adopsi tidak ditentukan, ia default ke hari ini (DEFAULT)
  5. Sebuah hewan tidak bisa diadopsi dua kali pada hari yang sama (UNIQUE kombinasi)

Dan itu adalah! Anda sekarang dilengkapi untuk menjaga basis data Anda bersih, konsisten, dan bebas kesalahan dengan constraints SQL. Ingat, basis data yang baik dikonstrain adalah basis data yang senang. Selamat coding, para maestro data masa depan!

Credits: Image by storyset