Bab 6 dari 6 · 25 menit

Integritas Data, Objek Lanjutan, dan Transaksi ACID

Menjaga kualitas, validitas, serta performa basis data memerlukan penerapan aturan integritas, pengelolaan objek lanjutan, dan eksekusi transaksi yang aman.

Constraints

Constraints adalah aturan yang dipasang pada skema kolom untuk mencegah data tidak valid masuk ke dalam sistem:

  • PRIMARY KEY: Pengenal unik baris data (tidak boleh kosong atau ganda).
  • FOREIGN KEY: Menghubungkan data ke primary key pada tabel lain.
  • UNIQUE: Menjamin semua nilai di kolom tersebut berbeda.
  • NOT NULL: Menolak penyimpanan data jika kolom dibiarkan kosong.
  • CHECK: Memastikan nilai kolom memenuhi kondisi logika tertentu (misalnya jumlah > 0).
  • DEFAULT: Menyediakan nilai bawaan jika kolom tidak diisi saat INSERT.
CREATE TABLE pesanan (
  id INT PRIMARY KEY,
  user_id INT NOT NULL REFERENCES pengguna(id),
  kode VARCHAR(20) UNIQUE,
  jumlah INT CHECK (jumlah > 0),
  status VARCHAR(15) DEFAULT 'pending'
);

Index dan View

Untuk mengoptimalkan struktur query, SQL menyediakan objek lanjutan berupa Index dan View:

  • Index: Struktur data penolong untuk mempercepat pencarian data (SELECT dan WHERE), dianalogikan seperti indeks pada halaman belakang buku. Gunakan index secukupnya karena keberadaannya memakan ruang disk dan memperlambat perintah INSERT/UPDATE.
  • View: Tabel virtual berbasis query tersimpan. View mempermudah pemanggilan query gabungan yang rumit tanpa menduplikasi data fisik di penyimpanan.
-- Membuat index untuk mempercepat pencarian nama
CREATE INDEX idx_nama ON produk (nama);

-- Membuat view untuk menyaring produk yang aktif
CREATE VIEW produk_aktif AS
SELECT nama, harga FROM produk WHERE stok > 0;

Transaksi dan Prinsip ACID

Ketika kamu mengeksekusi serangkaian operasi yang saling terikat, kamu harus membungkusnya dalam Transaksi. Transaksi memastikan kumpulan operasi diperlakukan sebagai satu kesatuan utuh dengan memenuhi prinsip ACID:

  • Atomicity: Seluruh perintah berhasil dieksekusi lengkap, atau dibatalkan seluruhnya jika timbul error.
  • Consistency: Data tetap valid dan mematuhi semua constraint sebelum maupun setelah transaksi berlangsung.
  • Isolation: Transaksi berjalan mandiri dan terisolasi tanpa saling mengacaukan dengan transaksi konkuren lain.
  • Durability: Setelah instruksi COMMIT selesai, perubahan data tersimpan permanen dan tahan terhadap kegagalan daya sistem.
BEGIN;
  UPDATE akun SET saldo = saldo - 100 WHERE id = 1;
  UPDATE akun SET saldo = saldo + 100 WHERE id = 2;
COMMIT; -- simpan permanen (atau ROLLBACK bila ada kendala)

Ekosistem RDBMS Populer

Sintaks SQL yang kamu pelajari ini didukung oleh berbagai mesin RDBMS populer, seperti MySQL, PostgreSQL yang kaya fitur dan standar-compliant, SQLite yang ringan tanpa server mandiri, MariaDB, SQL Server dari Microsoft, hingga Oracle DB untuk solusi enterprise skala besar.

Cek pemahaman

  1. 1. Prinsip ACID manakah yang menjamin bahwa semua langkah dalam transaksi berhasil seluruhnya atau tidak sama sekali?

  2. 2. Semakin banyak index yang kamu buat pada sebuah tabel, semakin cepat pula operasi INSERT dan UPDATE dijalankan pada tabel tersebut.

  3. 3. Perhatikan pembuatan view berikut. Bagaimana cara memanggil data dari view yang telah didefinisikan tersebut?

    CREATE VIEW produk_aktif AS
    SELECT nama, harga FROM produk
    WHERE stok > 0;