Sebelum masuk ke teknis, pahami dulu definisi dasarnya:
- Data: Representasi fakta dunia nyata (manusia, barang, peristiwa) yang direkam dalam bentuk angka, huruf, gambar, atau bunyi.
- Basis Data (Database): Markas atau gudang tempat berkumpulnya data. Secara teknis, ini adalah kumpulan data operasional yang disimpan secara terintegrasi dan diatur dalam tabel/file sesuai fungsinya.
Sistem Basis Data: Gabungan antara data, perangkat keras, perangkat lunak (DBMS), dan pengguna yang memungkinkan akses dan manipulasi data.
Sistem basis data diciptakan untuk mengatasi kelemahan sistem pemrosesan file tradisional (seperti menyimpan data di dokumen teks terpisah).
Tujuan Utamanya:
- Kecepatan (Speed): Menyimpan dan memanggil data dengan cepat.
- Efisiensi Ruang (Space): Mengurangi redundansi (pengulangan) data.
- Keakuratan (Accuracy): Menerapkan aturan/batasan tipe data agar input valid.
- Keamanan (Security): Menentukan siapa yang boleh mengakses atau mengubah data (username/password).
- Kebersamaan (Shareability): Data dapat dipakai bersama oleh banyak pengguna/aplikasi secara bersamaan.
Sistem basis data terdiri dari 4 komponen utama:
- Data: Fakta yang disimpan.
- Perangkat Keras (Hardware): Komputer, memori, harddisk.
- Perangkat Lunak (Software): Sistem operasi dan DBMS (Database Management System) seperti MySQL, Oracle, SQL Server.
- Pengguna (User): Orang yang berinteraksi dengan sistem.
Dalam basis data, cara pengguna melihat data berbeda dengan cara sistem menyimpannya. Ada 3 level abstraksi:
- Level Fisik (Terendah): Bagaimana data sesungguhnya disimpan (struktur data rinci).
- Level Logik/Konseptual: Data apa yang disimpan dan hubungannya (misal: tabel mahasiswa terhubung ke tabel nilai).
- Level Pandangan (View - Tertinggi): Apa yang dilihat pengguna akhir. Pengguna hanya melihat data yang relevan bagi mereka (misal: bagian keuangan hanya melihat data tagihan, bukan nilai akademik).
Pengguna basis data dibagi berdasarkan perannya:
- System Engineer: Ahli yang memasang sistem dan perangkat keras.
- DBA (Database Administrator): "Bos" yang mengontrol sistem, mengatur hak akses, dan merencanakan kebutuhan.
- Programmer: Orang yang membuat aplikasi untuk mengakses database menggunakan bahasa pemrograman.
- End User (Pemakai Akhir): Orang yang hanya menggunakan data (bisa pemakai umum atau mahir).
Model data adalah konsep untuk menggambarkan hubungan antar data. Salah satu yang paling populer adalah Entity Relationship Model (ERM).
Komponen Utama ERD (Entity Relationship Diagram):
- Entitas (Entity): Objek yang dapat diidentifikasi unik (Contoh: Mahasiswa, Mobil).
- Atribut: Karakteristik entitas (Contoh: Nama, NIM, Alamat).
- Relasi: Hubungan antar entitas (Contoh: Mahasiswa Mengambil Mata Kuliah).
Langkah Membuat ERD:
- Identifikasi Entitas.
- Tentukan Atribut dan Primary Key (Kunci Unik, misal: NIM).
- Tentukan Relasi dan Foreign Key (Kunci Tamu untuk menghubungkan tabel).
- Tentukan Derajat Relasi (Satu-ke-Satu, Satu-ke-Banyak, dsb).
Dalam pengelolaannya, ada perintah-perintah dasar yang sering digunakan:
- Membuat/Menghapus:
CREATE DATABASE,DROP DATABASE,CREATE TABLE,DROP TABLE. - Manipulasi Data:
INSERT: Memasukkan data baru.SELECT: Mengambil/mencari data.UPDATE: Mengubah data.DELETE: Menghapus data.
Meskipun canggih, basis data memiliki sisi positif dan negatif:
- Kelebihan: Konsistensi data terjaga, akses lebih cepat, integritas data lebih baik, dan mengurangi kerangkapan data.
- Kekurangan: Biaya mahal (hardware/software), sistemnya rumit/kompleks, dan biaya konversi dari sistem lama yang tinggi.
Definisi: Lingkungan basis data adalah habitat di mana basis data berada, di mana pengguna memiliki alat untuk mengakses, memodifikasi, atau membuat data baru.
Tiga Tingkatan Arsitektur (ANSI-SPARC):
- Tingkat Eksternal (View Level): Level tertinggi. Ini adalah cara pandang pengguna terhadap data. Pengguna hanya melihat data yang relevan bagi mereka.
- Tingkat Konseptual (Logical Level): Menjabarkan data apa yang disimpan dan hubungannya. Ini memuat semua entitas, atribut, dan batasan keamanan.
- Tingkat Internal (Physical Level): Level terendah. Menjelaskan bagaimana data sesungguhnya disimpan secara fisik (alokasi penyimpanan, enkripsi, dll).
Kemandirian Data (Data Independence): Tujuannya agar perubahan di level bawah tidak merusak level di atasnya.
- Physical Data Independence: Mengubah skema internal (fisik) tidak mengganggu skema konseptual.
- Logical Data Independence: Mengubah skema konseptual tidak mengganggu skema eksternal (program aplikasi).
Normalisasi adalah teknik mengelompokkan atribut agar struktur relasi menjadi baik, tanpa redudansi yang tidak perlu, dan bebas dari masalah (anomali). Masalah jika tidak dinormalisasi (Anomali):
- Update Anomaly: Jika data diubah di satu tempat, semua data yang sama di tempat lain harus diubah juga.
- Insertion Anomaly: Kesulitan menyisipkan data baru karena ada kolom yang harus diisi padahal datanya belum ada.
- Deletion Anomaly: Menghapus satu data menyebabkan hilangnya informasi lain yang tidak diinginkan.
Tahapan Normalisasi:
- Un-Normalized: Semua data dicatat apa adanya dalam satu tabel besar.
- 1NF (Bentuk Normal Pertama): Setiap kolom bernilai atomik (tidak ada pecahan) dan menghilangkan perulangan grup.
- 2NF (Bentuk Normal Kedua): Menghilangkan ketergantungan sebagian. Setiap atribut bukan kunci harus bergantung penuh pada Primary Key.
- 3NF (Bentuk Normal Ketiga): Menghilangkan ketergantungan transitif. Atribut bukan kunci tidak boleh bergantung pada atribut bukan kunci lainnya.
- Redudansi: Duplikasi data di beberapa lokasi. Dibutuhkan untuk relasi antar tabel (melalui Foreign Key).
- De-Normalisasi: Proses mengembalikan tabel yang sudah normal menjadi "tidak normal" (sengaja dibuat redudan) untuk meningkatkan performa.
- Tujuan: Meningkatkan performa, mengurangi kompleksitas perintah, dan mempercepat akses.
- Bentuknya: Menambah atribut turunan, atribut berlebihan, atau tabel rekapitulasi.
SQL adalah bahasa standar untuk mengakses dan mengelola basis data.
- A. DDL (Data Definition Language): Mendefinisikan struktur atau kerangka database.
CREATE DATABASECREATE TABLE(Contoh Tipe Data:INT,VARCHAR,DATE,CHAR)ALTER TABLEDROP TABLE
- B. DML (Data Manipulation Language): Mengolah isi data di dalam tabel.
INSERTSELECTUPDATEDELETE
Diperkenalkan oleh E.F. Codd pada tahun 1970.
- Interactive SQL: Mengetik perintah langsung di konsol.
- Embedded SQL: Menyisipkan perintah SQL ke dalam bahasa pemrograman lain.
Kategori Perintah SQL:
- DDL (Data Definition Language): Membangun struktur (Database, Tabel, Index).
- DML (Data Manipulation Language): Mengelola isi data (Insert, Select, Update, Delete).
- DCL (Data Control Language): Mengatur hak akses (Grant, Revoke, Commit, Rollback).
- Angka (Numerik):
INT,TINYINT,FLOAT,DOUBLE,DECIMAL. - Teks (String):
CHAR,VARCHAR,TEXT,LONGTEXT. - Tanggal & Waktu:
DATE,TIME,DATETIME. - Blob (Binary Large Object): Untuk menyimpan file biner (gambar, musik).
- Fungsi Agregat (Statistik):
SUM(),AVG(),COUNT(),MAX(),MIN(). - Fungsi Aritmatik:
+,-,*,/,%. - Fungsi String & Waktu:
NOW(),MONTH().
- A. Operasi Database
CREATE DATABASE nama_db;SHOW DATABASES;USE nama_db;DROP DATABASE nama_db;
- B. Operasi Tabel
- Membuat Tabel:
CREATE TABLE nama_tabel ( kolom1 tipe(ukuran), kolom2 tipe(ukuran) );
- Memodifikasi Tabel (
ALTER TABLE):- Tambah Kolom:
ALTER TABLE nama_tabel ADD nama_kolom tipe; - Ganti Nama & Tipe:
ALTER TABLE nama_tabel CHANGE kolom_lama kolom_baru tipe_baru; - Ganti Tipe Saja:
ALTER TABLE nama_tabel MODIFY nama_kolom tipe_baru; - Hapus Kolom:
ALTER TABLE nama_tabel DROP nama_kolom; - Set Primary Key:
ALTER TABLE nama_tabel ADD PRIMARY KEY(nama_kolom);
- Tambah Kolom:
- Membuat Tabel:
- C. Index & View
- Index: Mempercepat pencarian.
CREATE INDEX nama_index ON nama_tabel(kolom); - View: Tabel bayangan (virtual) dari hasil query.
CREATE VIEW nama_view AS SELECT ...;
- Index: Mempercepat pencarian.
- A. Menambah Data (
INSERT)INSERT INTO nama_tabel VALUES (nilai1, nilai2);INSERT INTO nama_tabel(kolom1) VALUES (nilai1);
- B. Menampilkan Data (
SELECT)SELECT * FROM nama_tabel;SELECT kolom1, kolom2 FROM nama_tabel;- Klausa
WHERE(Filter):SELECT * FROM Mahasiswa WHERE Alamat='Depok'; - Operator:
=,>,<,AND,OR,NOT,LIKE,BETWEEN.
- C. Mengubah Data (
UPDATE)UPDATE nama_tabel SET kolom=nilai_baru WHERE kondisi;
- D. Menghapus Data (
DELETE)DELETE FROM nama_tabel WHERE kondisi;
Sebuah basis data tunggal yang secara fisik tersebar di berbagai komputer di beberapa lokasi berbeda, namun tetap terhubung melalui jaringan komunikasi data.
- Unit Bisnis Tersebar: Organisasi memiliki cabang di lokasi berbeda.
- Kebutuhan Berbagi Data: Memudahkan pertukaran data antar lokasi.
- Efisiensi Biaya & Komunikasi: Mengurangi biaya komunikasi dan meningkatkan keandalan.
- Aplikasi Multi-Vendor: Mendukung aplikasi dari pengembang berbeda.
- Pemulihan Data (Recovery): Jika satu situs gagal, situs lain masih bisa diakses.
- Sinkronisasi Data: Memastikan data di berbagai lokasi tetap selaras.
- Replikasi Data (Data Replication): Menggandakan data yang sama ke beberapa lokasi.
- Partisi Horizontal (Horizontal Partitioning): Memecah tabel berdasarkan baris (misal: data pelanggan per cabang).
- Partisi Vertikal (Vertical Partitioning): Memecah tabel berdasarkan kolom (misal: data gaji dan data alamat dipisah).
- Kombinasi: Menggabungkan metode di atas.
- Sentralisasi (Centralized):
- Kelebihan: Konsistensi data sangat baik.
- Kekurangan: Reliabilitas buruk (jika server pusat mati, semua mati).
- Replikasi (Replicated):
- Kelebihan: Keandalan sangat baik (ada cadangan).
- Kekurangan: Konsistensi data bisa menjadi masalah (perlu sinkronisasi).
- Desentralisasi (Decentralized/Independent):
- Kelebihan: Mudah dikelola per lokasi dan reliabilitas tinggi.
- Kekurangan: Konsistensi data sangat rendah.
- A. Pengertian & Fungsi DBMS
- Definisi: Perangkat lunak untuk mengelola basis data.
- Fungsi Utama: Menjaga integritas data, manajemen penyimpanan, keamanan, akses multi-user, dan manajemen transaksi.
- B. Contoh Produk DBMS Populer
- MySQL: Paling populer, gratis (open source).
- MariaDB: Pengembangan mandiri dari MySQL.
- Microsoft SQL Server: Memiliki fitur mirroring dan clustering.
- Oracle: Untuk skala besar, sangat handal.
- PostgreSQL: Kuat dalam relasi dan akurasi data.
- C. Tahapan Pengembangan Aplikasi
- 3 Tahapan: Analisis, Desain/Perancangan, Implementasi.
- 5 Tahapan: Perencanaan, Analisis, Desain, Implementasi, Evaluasi/Reviu.
Panduan membangun aplikasi perpustakaan menggunakan MySQL (basis data) dan Microsoft Access (antarmuka).
- A. Perancangan (Desain)
- Kasus: Sistem perpustakaan Fakultas.
- Entitas ERD: Anggota, Buku, Tempat Buku, Pinjam.
- B. Persiapan & Instalasi
- Aplikasi: XAMPP, Microsoft Access 365, MySQL ODBC Connector, Visual C++.
- C. Langkah-Langkah Pembuatan Aplikasi
- Membuat Database di MySQL: Buat database
perpustakaandan tabel-tabelnya (anggota,buku,pinjam,tempat_buku) diphpMyAdmin. - Menghubungkan MySQL ke Access (ODBC): Gunakan menu
External Data -> ODBC Databasedi Access untuk membuat linked table. - Membuat Form (Antarmuka Input): Gunakan
Form Wizarduntuk membuat form input data untuk setiap tabel. - Membuat Query & Report (Laporan): Gunakan
Query Wizarduntuk menggabungkan data danReport Wizarduntuk membuat laporan siap cetak. - Finishing (Switchboard & Pengaturan): Buat menu utama (
Switchboard) dan aturAccess Optionsagar aplikasi terlihat profesional.
- Membuat Database di MySQL: Buat database
- Apa itu primary key? — Atribut unik yang mengidentifikasi baris dalam tabel.
- Apa itu foreign key? — Kolom yang menunjuk ke primary key di tabel lain untuk menjaga referensial integritas.
- Jelaskan perbedaan
CHARdanVARCHAR. —CHARpanjang tetap;VARCHARpanjang variabel. - Apa fungsi
INDEX? — Mempercepat pencarian/scan pada kolom tertentu. - Apa itu normalisasi? — Proses pengaturan tabel untuk mengurangi redundansi.
- Sebutkan 1NF. — Kolom hanya mengandung nilai atomik, tidak ada grup berulang.
- Sebutkan 2NF. — 1NF + semua atribut non-kunci bergantung penuh pada primary key.
- Sebutkan 3NF. — 2NF + tidak ada ketergantungan transitif antar atribut non-kunci.
- Apa itu denormalisasi? — Sengaja menambah redundansi untuk meningkatkan performa baca.
- Apa itu transaksi? — Sekumpulan operasi SQL yang dieksekusi atomik (commit/rollback).
- Jelaskan ACID — Atomicity, Consistency, Isolation, Durability.
- Perintah untuk menyimpan perubahan transaksi? —
COMMIT. - Perintah untuk membatalkan transaksi? —
ROLLBACK. - Apa itu
JOIN? — Menggabungkan baris dari dua atau lebih tabel berdasarkan kondisi. - Bedakan
INNER JOINdanLEFT JOIN. —INNERhanya baris cocok;LEFTsemua baris kiri + cocok kanan. - Bagaimana menambahkan kolom pada tabel? —
ALTER TABLE t ADD COLUMN c TYPE;. - Cara membuat index? —
CREATE INDEX idx_name ON table(col);. - Fungsi
GROUP BY? — Mengelompokkan baris untuk agregasi. - Fungsi
HAVING? — Menyaring hasil agregat setelahGROUP BY. - Bagaimana memilih 10 baris teratas? —
SELECT ... LIMIT 10(MySQL) atauSELECT TOP 10(SQL Server). - Apa itu
VIEW? — Virtual table hasil query; tidak selalu menyimpan data fisik. - Apa perbedaan view dan materialized view? — Materialized view menyimpan hasil fisik; view biasanya tidak.
- Jelaskan isolation pada ACID. — Menjamin transaksi terisolasi agar perubahan sementara tidak terlihat oleh transaksi lain.
- Sebutkan isolation levels biasa. — READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
- Apa itu deadlock? — Kondisi dua transaksi saling menunggu resource yang di-lock satunya.
- Bagaimana menghindari deadlock? — Desain transaksi singkat, akses resource dalam urutan konsisten.
- Apa itu indeks unik? — Index yang melarang nilai duplikat pada kolom.
- Bagaimana menyimpan file biner? — Gunakan tipe
BLOB. - Apa itu
AUTO_INCREMENT? — Mekanisme menghasilkan nilai unik otomatis untuk primary key. - Apa perbedaan
TRUNCATEdanDELETE? —TRUNCATEcepat dan reset counter;DELETEdapat memakaiWHERE. - Bagaimana menganalisis query lambat? — Gunakan
EXPLAINuntuk melihat rencana eksekusi. - Apa itu foreign key cascade? —
ON DELETE/UPDATE CASCADEmenghapus/memperbarui baris terkait otomatis. - Jelaskan replikasi master-slave. — Master menerima write; slave menerima salinan read-only dari master.
- Apa itu sharding? — Partisi horizontal data ke server berbeda berdasarkan key.
- Kapan menggunakan partisi vertikal? — Saat memisahkan kolom besar dari kolom yang sering dipakai.
- Apa itu OLTP vs OLAP? — OLTP: transaksi operasional; OLAP: analitik/warehouse.
- Cara backup MySQL sederhana? —
mysqldump -u user -p dbname > dump.sql. - Apa itu referential integrity? — Konsistensi hubungan antar tabel via FK constraints.
- Bagaimana menangani NULL dalam
WHERE? — GunakanIS NULLatauIS NOT NULL. - Contoh
GROUP BYdengan agregat: —SELECT dept, COUNT(*) FROM emp GROUP BY dept;. - Apa fungsi
HAVING COUNT(*) > 1? — Menyaring grup dengan lebih dari satu baris. - Fungsi agregat untuk non-numerik? —
COUNT(). - Apa itu constraint
CHECK? — Membatasi nilai kolom sesuai kondisi (didukung di banyak DBMS). - Bagaimana membuat composite primary key? —
PRIMARY KEY (col1, col2). - Singkat soal CAP theorem? — Consistency, Availability, Partition tolerance — pilih trade-off.