SQL -Constraints: Kunci Integrasi Data

Hai teman-teman, para ahli basis data masa depan! Saya sangat senang 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 adalah seperti membuka kekuatan super rahasia dalam manajemen basis data. Jadi, mari kita masuk ke dalam!

SQL - Constraints

Apa Itu Constraints SQL?

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

Mengapa Constraints Penting?

Biarkan saya ceritakan secepatnya. Pernah saya punya murid yang membuat basis data untuk toko hewan peliharaan tanpa menggunakan constraint. Suatu hari, mereka secara tidak sengaja memasukkan harga negatif untuk seorang anak anjing. Tiba-tiba, orang-orang mendapatkan bayaran untuk mengadopsi anjing! Itu adalah chaos (tetapi anjing-anjing sangat bahagia). Itu sebabnya kita butuh constraint - untuk mencegah situasi seperti ini yang lucu tapi membingungkan.

Constraints SQL: Daftar

Berikut adalah tabel utama constraints SQL yang kita akan jelajahi:

Constraint Deskripsi
NOT NULL Memastikan kolom tidak dapat 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 kondisi tertentu
DEFAULT Menetapkan nilai default untuk kolom
INDEX Digunakan untuk membuat dan mengambil data dari basis data secara cepat

Sekarang, mari kitauraikan satu per satu ini.

Membuat Constraints di SQL

Constraints dapat ditambahkan saat Anda pertama kali membuat tabel 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 constraint. mari kitauraikan mereka:

Constraint NOT NULL

Constraint NOT NULL memastikan bahwa kolom tidak dapat 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 menyediakan nilai default untuk kolom saat nilai tidak ditentukan. Dalam contoh kita, 'adoption_date' memiliki DEFAULT NULL, berarti jika tanggal tidak ditentukan, itu akan NULL.

adoption_date DATE DEFAULT NULL

Constraint PRIMARY KEY

Constraint PRIMARY KEY secara unik mengidentifikasi setiap rekord di tabel. Itu 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 merusak kaitan antara tabel. mari kita tambahkan tabel pemilik dan menghubungkannya ke tabel hewan 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 dapat 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 kondisi tertentu. Dalam tabel pets, 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 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 di kolom harga.

Constraints Integrasi Data: Menggabungkan Semua

Semua constraint ini bekerja bersama untuk memastikan integritas data. Mereka seperti sistem kekebalan basis datamu, melindungi nya 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 dapat negatif (CHECK)
  4. Jika tanggal adopsi tidak ditentukan, itu default ke hari ini (DEFAULT)
  5. Satu hewan tidak dapat diadopsi dua kali pada hari yang sama (UNIQUE kombinasi)

Dan itu saja! Anda sekarang siap untuk menjaga basis datamu bersih, konsisten, dan bebas kesalahan dengan constraints SQL. Ingat, basis data yang baik dikonstraint adalah basis data yang bahagia. Selamat coding, para maestro data masa depan!

Credits: Image by storyset