Pertemuan 1 — Introduction to Database Concepts
TL;DR — Basis data bukan sekadar “kumpulan file”. Ia adalah sistem yang menyimpan, mengelola, dan melindungi data agar bisa diandalkan banyak pengguna sekaligus. Pertemuan ini meletakkan fondasi: apa itu data, DBMS, model data, bahasa query, dan kenapa kita butuh semuanya sebelum menyentuh SQL di pertemuan 6.
Tujuan Pembelajaran
Setelah pertemuan ini, mahasiswa mampu:
- Membedakan data, basis data, dan DBMS.
- Menjelaskan alasan DBMS menggantikan file system.
- Mengenali model data yang umum dipakai (relasional, ER, semi-terstruktur).
- Membedakan DDL, DML, dan bahasa query.
- Memahami tahapan perancangan basis data.
- Mengidentifikasi komponen arsitektur sistem basis data.
- Menerapkan analisis relasional pada studi kasus nyata.
1. Konsep Dasar
1.1 Data, Basis Data, DBMS
Sebelum bicara teknologi, kita perlu sepakati istilahnya dulu. Salah kaprah paling umum: menganggap data, basis data, dan DBMS itu sama. Padahal tiga hal berbeda.
| Istilah | Arti |
|---|---|
| Data | Nilai mentah yang belum bermakna (angka, teks, gambar). |
| Informasi | Data yang sudah diolah dan bermakna. |
| Basis Data (Database) | Kumpulan data yang saling berhubungan dan terorganisir. |
| DBMS | Software yang mengelola basis data: menyimpan, mengambil, mengubah, mengamankan, dan mengontrol akses. |
| Sistem Basis Data | Gabungan basis data + DBMS + aplikasi + pengguna. |
Contoh DBMS yang umum dipakai:
| DBMS | Tipe | Umum di |
|---|---|---|
| MySQL | Relasional | Web app, startup |
| PostgreSQL | Relasional | Sistem enterprise, analitik |
| Oracle | Relasional | Perbankan, korporat besar |
| SQL Server | Relasional | Ekosistem Microsoft |
| SQLite | Relasional | Mobile, embedded, prototipe |
| MongoDB | Dokumen (NoSQL) | Data fleksibel, aplikasi modern |
Datum → Data → Informasi:
- Datum:
"Budi" - Data:
("Budi", 25, "Bandung") - Informasi: “Budi, 25 tahun, dari Bandung”
Satu datum tidak bisa dikaitkan ke siapa pun. Begitu digabung jadi tuple (nama, umur, kota), ia baru bermakna. Ini poin penting: basis data menyimpan data, tapi tujuannya menghasilkan informasi.
Kesalahan umum: menyebut MySQL sebagai “basis data”. MySQL adalah DBMS — software. Basis datanya adalah kumpulan tabel yang dikelola oleh MySQL. Bedakan keduanya.
1.2 Peran Basis Data di Aplikasi Nyata
Hampir semua aplikasi modern yang menyimpan state pakai basis data. Contoh:
| Aplikasi | Basis Data dipakai untuk |
|---|---|
| Media sosial | User, post, komentar, like, follower |
| E-commerce | Produk, pesanan, pembayaran, pengiriman |
| Perbankan | Nasabah, transaksi, saldo, pinjaman |
| Peta digital | Jalan, lokasi, rute, titik minat |
| Rumah sakit | Pasien, dokter, rekam medis, jadwal |
| Kampus | Mahasiswa, dosen, mata kuliah, nilai |
Pertanyaan diagnostik: kalau aplikasimu hilang semua datanya, apakah masih berguna? Kalau jawabannya tidak, berarti basis data adalah jantung aplikasi itu.
2. Kenapa DBMS, Bukan File System?
Sebelum era DBMS (1960-an), aplikasi menyimpan data di file biasa — TXT, CSV, Excel. Ini masih umum di proyek kecil dan script sederhana. Tapi begitu aplikasi tumbuh, file system mulai retak.
| Masalah File System | Solusi DBMS |
|---|---|
| Redundansi & inkonsistensi | Normalisasi + constraint |
| Sulit akses data (harus tulis program) | Query language (SQL) |
| Isolasi data (format berbeda tiap file) | Skema terpusat |
| Masalah integritas | Constraint, foreign key, transaksi ACID |
| Konkurensi terbatas | Concurrency control |
| Keamanan minim | Autentikasi + role + privilege |
| Sulit recovery | Log & backup otomatis |
Contoh nyata: bayangkan dua file — mahasiswa.csv dan nilai.csv. Keduanya menyimpan NIM dan nama_mahasiswa. Kalau Budi ganti nama, kamu harus update di dua file. Kalau salah satu lupa di-update, data jadi inkonsisten — dan tidak ada yang mendeteksi. Di DBMS, ini dicegah oleh normalisasi (nama disimpan sekali) dan foreign key (relasi antar-tabel dijaga).
ACID — Empat Jaminan Transaksi
Ini alasan paling sering orang beralih dari file system: transaksi. Saat transfer uang antar rekening, kamu tidak mau saldo terpotong di satu sisi tapi tidak masuk di sisi lain. DBMS menjamin ini dengan empat properti — singkatan ACID:
| Properti | Arti |
|---|---|
| Atomicity | Semua atau tidak sama sekali. Transfer gagal → tidak ada perubahan. |
| Consistency | Data tetap valid sebelum dan sesudah transaksi. |
| Isolation | Transaksi yang berjalan bersamaan tidak saling mengganggu. |
| Durability | Setelah commit, data tersimpan permanen — walau listrik mati. |
Kesalahan umum: menganggap ACID itu otomatis di semua DBMS. Tidak. Banyak operasi bisa dimatikan (mis.
SET autocommit=1di MySQL) atau memang tidak didukung (sebagian NoSQL hanya eventual consistency). Untuk sistem keuangan, ACID wajib.
3. Model Data
Model data = cara menggambarkan struktur data, relasi, dan constraint. Ini abstraksi — bukan implementasi. Bayangkan blueprint arsitek vs bangunan jadi.
| Model | Deskripsi | Dipakai di |
|---|---|---|
| Relasional | Tabel + relasi antar tabel | MySQL, PostgreSQL, Oracle |
| Entity-Relationship (ER) | Entitas + relasi (untuk perancangan) | Tahap desain |
| Semi-terstruktur | Data fleksibel (JSON, XML) | MongoDB, web services |
| Object-based | Objek + class + inheritance | OODBMS (jarang) |
| Hierarkis / Jaringan | Pohon / graf | Sistem legacy |
Yang dominan saat ini: relasional. Sederhana, matang, dan didukung banyak tools. Tapi bukan berarti yang lain mati — NoSQL tumbuh pesat karena kebutuhan data fleksibel (log, sensor, media sosial).
Kesalahan umum: menganggap NoSQL “lebih modern = lebih baik”. Tidak. NoSQL menang di skenario tertentu (data tidak terstruktur, horizontal scaling). Untuk transaksi keuangan yang butuh ACID ketat, relasional tetap juara.
Model ER dan EER dipelajari detail di Pertemuan 2 dan Pertemuan 3.
4. Bahasa Basis Data
Interaksi dengan basis data relasional pakai SQL, tapi SQL sebenarnya payung untuk beberapa sub-bahasa. Masing-masing punya peran berbeda:
| Kategori | Fungsi | Contoh perintah |
|---|---|---|
| DDL (Data Definition Language) | Mendefinisikan skema | CREATE TABLE, ALTER, DROP |
| DML (Data Manipulation Language) | Mengubah & mengambil data | INSERT, UPDATE, DELETE |
| DQL (Data Query Language) | Mengambil data | SELECT (sering dimasukkan DML) |
| DCL (Data Control Language) | Kontrol akses | GRANT, REVOKE |
| TCL (Transaction Control) | Kelola transaksi | COMMIT, ROLLBACK, SAVEPOINT |
Contoh DDL — bikin tabel:
CREATE TABLE Mahasiswa (
nim CHAR(10) PRIMARY KEY,
nama VARCHAR(100) NOT NULL,
angkatan INT
);Contoh DML/DQL — ambil data:
SELECT nama FROM Mahasiswa WHERE angkatan = 2026;Dua perintah ini kelihatan mirip, tapi beda peran: DDL mengubah struktur, DML/DQL mengubah atau membaca isi. DDL jarang dijalankan runtime; DML/DQL dipanggil terus-menerus oleh aplikasi.
Kesalahan umum: menganggap
SELECTitu DML. Secara teknis ia DQL (Data Query Language) — meski banyak buku menggabungkannya ke DML karena keduanya bekerja di level data, bukan skema.
Detail lengkap DDL, DML, DCL, TCL akan dibahas di Pertemuan 6–10.
5. Perancangan Basis Data
Basis data yang baik tidak muncul begitu saja dari kepala. Ada tahapan formal:
- Requirement analysis — pahami kebutuhan pengguna.
- Conceptual design — model ER: entitas, atribut, relasi.
- Logical design — konversi ER ke skema relasional (tabel, PK, FK).
- Schema refinement — normalisasi untuk kurangi redundansi.
- Physical design — index, storage, tuning.
Normalisasi memisahkan data ke tabel sesuai entitasnya. Tujuan:
- Menghindari duplikasi.
- Mencegah anomali insert/update/delete.
Contoh sederhana: data penerbangan dan data penumpang dipisah — bukan digabung jadi satu tabel besar. Alasannya di section 10.3.
Kesalahan umum: melompat langsung ke “bikin tabel di MySQL” tanpa modeling. Akibatnya: kolom duplikat, constraint berantakan, dan mengubah skema setelah produksi jadi mimpi buruk.
6. Arsitektur Sistem Basis Data
6.1 Tiga Level Abstraksi
DBMS menyembunyikan kompleksitas dari pengguna lewat tiga level abstraksi:
| Level | Deskripsi | Contoh |
|---|---|---|
| Physical | Bagaimana data disimpan di disk | Blok, index, page |
| Logical | Apa data yang disimpan | Tabel, kolom, relasi |
| View | Bagaimana pengguna melihat | Report, dashboard |
Ini disebut data abstraction. Kamu sebagai developer tidak perlu tahu bagaimana DBMS menyimpan baris di disk. Cukup pakai SQL, sisanya DBMS urus.
Kesalahan umum: mengira “physical” = “hardware”. Bukan. Physical design adalah struktur file internal DBMS — page size, B-tree index, tablespace. Ini ranah DBA, bukan developer biasa.
6.2 Application Architecture
Bagaimana aplikasi terhubung ke DBMS? Ada tiga pola umum:
| Arsitektur | Deskripsi | Contoh |
|---|---|---|
| Two-tier | Aplikasi ↔ DBMS langsung | Aplikasi desktop lama |
| Three-tier | Client ↔ App server ↔ DBMS | Web aplikasi modern |
| N-tier | Multi-layer, ada API gateway, cache | Sistem enterprise |
Aplikasi web modern umumnya three-tier: frontend (React/Vue) di browser, backend (Node/Python/Go) di server, dan DBMS (PostgreSQL/MySQL) di belakang. Frontend tidak pernah bicara langsung ke DBMS — selalu lewat API backend. Ini penting untuk keamanan dan validasi.
6.3 Database Architecture
Dari sisi deployment DBMS:
| Tipe | Deskripsi |
|---|---|
| Centralized | Satu server, semua klien terhubung ke sana |
| Client-server | Server basis data + banyak klien |
| Parallel | Beberapa CPU/disk untuk kecepatan |
| Distributed | Data tersebar di beberapa lokasi |
Untuk skala kecil–menengah, client-server sudah cukup. Distributed baru relevan ketika data harus ada di beberapa region geografis (mis. e-commerce multi-negara).
7. Sejarah Singkat DBMS
Kenapa belajar sejarah? Supaya tahu kenapa DBMS hari ini seperti ini — bukan sekadar aturan yang dihafal.
| Era | Perkembangan |
|---|---|
| 1960-an | Hierarkis (IMS), jaringan (CODASYL) |
| 1970-an | Model relasional (Codd). Sistem: System R, Ingres |
| 1980-an | SQL jadi standar, DBMS komersial (Oracle, DB2) |
| 1990-an | Data warehouse, OLAP, object-oriented |
| 2000-an | XML, web database |
| 2010-an | NoSQL, distributed (Hadoop, Cassandra), NewSQL |
| 2020-an | Cloud DBMS, serverless, multi-cloud |
Poin pentingnya: model relasional bukan yang pertama, tapi menang karena sederhana dan formal. NoSQL muncul di 2010-an bukan untuk menggantikan relasional, tapi melengkapi untuk kasus yang tidak cocok (data tidak terstruktur, skala horizontal).
8. Peran Karir Terkait
Belajar basis data membuka banyak jalur karier:
| Peran | Fokus |
|---|---|
| Database Administrator (DBA) | Instalasi, backup, tuning, security |
| Database Developer | Skema, query, stored procedure |
| Data Analyst | Query & visualisasi data |
| Data Engineer | Pipeline data, ETL, warehouse |
| Data Scientist | Model statistik & ML dari data |
| Backend Developer | Integrasi aplikasi ↔ DBMS |
Skill dasarnya sama: memodelkan data, menulis query, dan memahami trade-off. Sisanya spesialisasi.
9. Studi Kasus 1 — Facebook Status
Modul memberikan screenshot status Facebook. Kita analisis jadi tabel relasional. Ini latihan pertama melihat dunia nyata sebagai tabel yang saling terhubung.
9.1 Identifikasi Entitas
- User — pembuat status & komentar.
- Status — postingan utama.
- Comment — komentar atas status.
- Reply — balasan atas komentar.
9.2 Tabel Status
| Id | Creator | Date | Place | Status | Link |
|---|---|---|---|---|---|
| 1 | Budi Rahardjo | Aug 18, 6:59am | Bandung | Kewarganegaraan 1.0: “Maka kalau sekarang…” | rahard.wordpress.com |
Id = Primary Key. Setiap baris punya Id unik.
9.3 Tabel Comments
| Id_Status | Id_Comment | Comment | Commentator | Date | Time |
|---|---|---|---|---|---|
| 1 | 1 | yaaay, saya sudah di 3.0 dong prof! | Syahrul Pribadi | Aug 18 | 7:17am |
| 1 | 2 | Karena perekonomian kita masih versi BETA… | Pramudya Yuanauto | Aug 18 | 8:15am |
| 1 | 3 | Setuju pak. Soal UU kewarganegaraan… | Iman Fattah | Aug 18 | 7:39am |
| 1 | 4 | kalo memang WNA boleh jadi pejabat publik… | Pulung Bimasakti Ulung | Aug 18 | 9:02am |
Id_Status= Foreign Key ke tabel Status.Id_Comment= Primary Key.
Perhatikan: Id_Status semua bernilai 1. Artinya semua komentar ini menempel ke status yang sama.
9.4 Tabel Reply Comments
| Id_Status | Id_Comment | Id_Reply | Comment | Commentator | Date | Time |
|---|---|---|---|---|---|---|
| 1 | 2 | 1 | Indonesia Tanah Air masih versi BETA | Wikan Danar Sunindyo | Aug 18 | 8:14am |
| 1 | 2 | 2 | Nah tuh paham … hihihi | Pramudya Yuanauto | Aug 18 | 8:15am |
| 1 | 4 | 3 | mungkin juga bagus, supaya gak punya hubungan keluarga… | Budi Rahardjo | Aug 18 | 9:12am |
Id_Comment= Foreign Key ke tabel Comments.- Dua baris pertama punya
Id_Comment = 2— artinya keduanya membalas komentar yang sama (komentar Pramudya).
9.5 Tabel User
| Password | User_name | Profile_picture | Join_Date | Address | |
|---|---|---|---|---|---|
| budi@example.com | •••••• | Budi Rahardjo | Budi.jpg | 20 Jan 2014 | Bandung |
| syahrul@example.com | •••••• | Syahrul Pribadi | syahrul.jpg | 15 Mar 2015 | Jakarta |
| pramudya@example.com | •••••• | Pramudya Yuanauto | pramudya.jpg | 10 Aug 2013 | Surabaya |
| iman@example.com | •••••• | Iman Fattah | iman.jpg | 05 Feb 2016 | Yogyakarta |
| pulung@example.com | •••••• | Pulung Bimasakti Ulung | pulung.jpg | 22 Nov 2014 | Semarang |
| wikan@example.com | •••••• | Wikan Danar Sunindyo | wikan.jpg | 08 Jul 2012 | Bandung |
Catatan penting: password di sistem nyata tidak pernah disimpan plaintext. Sistem pakai hash (bcrypt, argon2, scrypt). Kolom
••••••di sini hanya placeholder. Modul meminta “use dummy data except the user name” — jadi kolom selainUser_nameboleh diisi apa saja.
9.6 Diagram Relasi
User ──< Status ──< Comment ──< ReplyTanda ──< artinya one-to-many:
- 1 user punya banyak status.
- 1 status punya banyak komentar.
- 1 komentar punya banyak balasan.
Kesalahan umum saat analisis:
- Menjadikan “Reply” sebagai kolom di tabel Comments (padahal relasi satu-ke-banyak — butuh tabel sendiri).
- Lupa FK di tabel Comment ke Status.
- Menggabung semua jadi satu tabel besar (jadi tidak ternormalisasi).
10. Studi Kasus 2 — Flight Data
Modul meminta konversi data penerbangan (Figure 2) jadi 2 tabel. Ini latihan kedua: normalisasi konkret.
10.1 Tabel Flight
| Attribute | Data |
|---|---|
| Flight_ID | GA-101 |
| Airline | Garuda Indonesia |
| Origin | Jakarta (CGK) |
| Destination | Denpasar (DPS) |
| Departure_Time | 08:30 |
| Arrival_Time | 11:15 |
| Aircraft_Type | Boeing 737-800 |
Flight_ID = Primary Key. Satu baris = satu penerbangan.
10.2 Tabel Flight Details
| Flight_ID | Passenger_ID | Passenger_Name | Seat | Class | Ticket_Price |
|---|---|---|---|---|---|
| GA-101 | P001 | Andi Wijaya | 12A | Economy | 1.250.000 |
| GA-101 | P002 | Siti Nurhaliza | 12B | Economy | 1.250.000 |
| GA-101 | P003 | Budi Santoso | 03A | Business | 3.500.000 |
Flight_ID= Foreign Key ke tabel Flight.(Flight_ID, Passenger_ID)= composite Primary Key.
Composite PK dipakai karena satu penumpang bisa ikut banyak penerbangan — yang unik adalah pasangan (penerbangan, penumpang).
10.3 Kenapa Dipisah?
Kalau digabung jadi satu tabel:
| Flight_ID | Airline | Origin | Destination | Departure | … | Passenger_ID | Passenger_Name |
|---|---|---|---|---|---|---|---|
| GA-101 | Garuda Indonesia | CGK | DPS | 08:30 | … | P001 | Andi Wijaya |
| GA-101 | Garuda Indonesia | CGK | DPS | 08:30 | … | P002 | Siti Nurhaliza |
| GA-101 | Garuda Indonesia | CGK | DPS | 08:30 | … | P003 | Budi Santoso |
Masalahnya:
- Kolom
Airline,Origin,Destination,Departurediulang tiap baris penumpang — redundansi. - Kalau jadwal berubah (mis. departure jadi 08:45), harus update semua baris. Kalau ada satu terlewat → inkonsisten.
- Tidak ada tempat menyimpan penerbangan tanpa penumpang — setiap baris butuh penumpang.
Dengan dipecah 2 tabel:
- Data penerbangan disimpan sekali di tabel
Flight. - Update jadwal = update 1 baris.
- Penerbangan kosong bisa disimpan (belum ada yang beli tiket).
Inilah normalisasi: memisahkan data ke tabel sesuai entitas, menghilangkan duplikasi.
Kesalahan umum: menyimpan data penerbangan dan penumpang di satu tabel karena “kelihatannya lebih gampang di-query”. Ini jebakan jangka pendek — jangka panjang rusak karena inkonsistensi.
11. Task 3 — Analisis Software Pilihan
Pilih software / aplikasi lain yang menggunakan basis data. Tidak boleh sama dengan teman sekelas — ini memaksa kamu berpikir sendiri, bukan copy-paste.
Langkah:
- Pilih software + satu fitur utama. Contoh: Gojek → Pesan GoFood.
- Tanya: “Objek apa saja yang terlibat?” → Restoran, Menu, Pelanggan, Pesanan, Kurir.
- Tentukan atribut tiap objek.
- Tentukan PK & FK.
Isi di sini:
- Nama software:
- Fitur utama:
- Screenshot fitur:
- Tabel yang terlibat:
| Nama Tabel | Atribut | Keterangan |
|---|---|---|
Contoh (GoFood):
| Nama Tabel | Atribut | Keterangan |
|---|---|---|
| Restoran | ID, Nama, Alamat, Rating | Data restoran mitra |
| Menu | ID, ID_Resto, Nama, Harga, Kategori | Item makanan per restoran |
| Pesanan | ID, ID_Pelanggan, ID_Resto, Waktu, Total, Status | Transaksi |
| Kurir | ID, Nama, Kendaraan, Rating | Data pengantar |
Kesalahan umum:
- Menjadikan atribut (mis. “Alamat”) sebagai tabel. Alamat adalah kolom di Restoran, bukan entitas sendiri.
- Lupa PK di salah satu tabel.
- Menggabung semua jadi satu tabel besar — melanggar normalisasi.
- Menyalin contoh GoFood — pilih software lain yang kamu benar-benar paham.
12. Ringkasan
| Konsep | Poin Kunci |
|---|---|
| Data vs DBMS | Data = isi, DBMS = software pengelola |
| Kenapa DBMS | ACID, konkurensi, keamanan, skalabilitas — empat hal yang file system lemah |
| Model data | Relasional dominan; ER untuk desain; NoSQL untuk kasus fleksibel |
| Bahasa DBMS | DDL (skema), DML (isi), DCL (akses), TCL (transaksi) |
| Perancangan | Requirement → ER → relasional → normalisasi → physical |
| Arsitektur | 3 level abstraksi (physical, logical, view) + 3-tier application |
| Skill inti | Melihat dunia nyata sebagai tabel yang saling terhubung |
13. Tugas Teori — Resume Video
| Item | Ketentuan |
|---|---|
| Jenis | Selfie video |
| Platform | YouTube Shorts / TikTok / Reels IG/FB (pilih satu) |
| Durasi | Maksimal 90 detik |
| Komentar | Jangan dimatikan |
Format pengumpulan (.txt atau .pdf):
Nama :
NIM :
Kelas :
Kode Dosen :
Link Video :Upload ke Pengumpulan Tugas Teori Pertemuan 1 di e-learning.
14. Tugas Praktikum — Analisis Software
Kerjakan sesuai instruksi di Modul Praktikum Pertemuan 1.
| Item | Ketentuan |
|---|---|
| Format | |
| Nama file | P1_NIM_Kelas_Pagi/Malam.pdf |
| Contoh | P1_4342611034_KelasA_Pagi.pdf |
| Deadline | 1 pekan sejak tugas diberikan |
| Tempat | E-learning → Pengumpulan Tugas Praktikum Pertemuan 1 |
Isi laporan:
- Software & fitur yang dipilih (berbeda dari teman sekelas).
- Daftar entitas yang terlibat.
- Atribut tiap entitas (minimal PK).
- Sketsa tabel & relasi (boleh diagram sederhana).
Presensi praktikum divalidasi bagi mahasiswa yang sudah mengumpulkan.
15. Checklist Sebelum Kumpul
- Video resume sudah direkam (durasi ≤ 90 detik).
- Komentar video tidak dimatikan.
- File
.txtatau.pdfmemuat Nama, NIM, Kelas, Kode Dosen, Link Video. - Task 3 sudah dipilih (software & fitur, bukan GoFood).
- Entitas sudah teridentifikasi (minimal 3).
- Setiap tabel punya PK.
- FK sudah dicatat di tabel yang tepat.
- Sketsa relasi sudah digambar.
- File laporan dinamai
P1_NIM_Kelas.pdf.
16. Referensi
- Silberschatz, Korth, Sudarshan. Database System Concepts (6th ed.). McGraw-Hill. Bab 1: Introduction.
- Connolly & Begg. Database Systems (6th ed.). Pearson, 2015. Bab 1–2.
- Elmasri & Navathe. Fundamentals of Database Systems (7th ed.). Pearson. Bab 1.
- Yanto, R. Manajemen Basis Data Menggunakan MySQL. Deepublish, 2016.
- Codd, E. F. (1970). A Relational Model of Data for Large Shared Data Banks. Communications of the ACM.
- Slide RPL106 Pertemuan 1 — Ahmadi Irmansyah Lubis.