ddl sql obe | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: ddl sql obe

Saturday, May 2, 2026

ddl sql obe

📚 Artikel 18 dari 20 · Seri OBE From Zero to Zorro
#DDL SQL OBE #CREATE TABLE OBE #Skema Database SIAKAD #Foreign Key OBE #Fase 4 Digitalisasi

Skema Tabel Database OBE: DDL SQL Siap Pakai untuk SIAKAD

Dari ERD yang sudah kamu rancang, kini saatnya "diterjemahkan" ke dalam kode SQL nyata. Artikel ini menyajikan DDL SQL OBE yang siap kamu eksekusi langsung di database SIAKAD-mu.

⏱️
Estimasi Baca
12 Menit
🎯
Level
Pemula–Menengah
🗓️
Tahun
2025–2026
🏗️
Fase
Fase 4 — Digitalisasi

Sudah punya ERD yang keren, tapi bingung cara "menuangkannya" ke dalam database sungguhan? Kamu tidak sendirian. Banyak dosen dan staf IT kampus yang mahir menggambar diagram — tapi begitu harus menulis DDL SQL OBE, tiba-tiba mendadak blank. Padahal, inilah momen krusial di Fase 4 Digitalisasi kurikulum OBE: saat konsep berubah menjadi kode yang bisa langsung dieksekusi di SIAKAD. Artikel ke-18 dari seri OBE From Zero to Zorro ini akan membantumu memahami skema database SIAKAD OBE lengkap dengan skrip CREATE TABLE, foreign key, dan relasi antar entitas — semuanya siap pakai, tinggal sesuaikan nama institusimu.

📐 Konsep Utama

DDL SQL OBE (Data Definition Language) adalah sekumpulan perintah SQL — utamanya CREATE TABLE, ALTER TABLE, dan DROP TABLE — yang digunakan untuk mendefinisikan struktur tabel database kurikulum OBE, termasuk atribut, tipe data, primary key, dan foreign key yang menghubungkan CPL, CPMK, mata kuliah, mahasiswa, hingga nilai evaluasi.

🧱 Kenapa DDL SQL OBE Itu Penting dan Tidak Bisa Asal Dibuat?

Bayangkan kamu mau membangun rumah. ERD adalah denah arsitektur-nya — gambar di atas kertas yang menunjukkan berapa kamar, di mana dapur, dan bagaimana alirannya. Tapi DDL SQL adalah perintah ke tukang bangunan: "Bangun dinding di sini, pasang pintu di sana, sambungkan dengan koridor itu." Tanpa DDL yang benar, rumah kamu bisa roboh — atau lebih tepatnya, data OBE kamu bisa kacau balau.

Dalam konteks SIAKAD berbasis OBE, DDL SQL yang buruk bisa menyebabkan:

⚠️ DDL Asal-asalan ✅ DDL yang Terstruktur
Data CPL dan CPMK tidak terhubung → attainment tidak bisa dihitung Foreign key memastikan relasi CPL–CPMK selalu valid
Duplikasi data mahasiswa dan nilai di banyak tabel Normalisasi tabel menjamin data efisien dan konsisten
Query lambat karena tidak ada indeks pada kolom kritis INDEX pada FK mempercepat join query laporan akreditasi
Kolom varchar terlalu pendek → data terpotong saat input Tipe data presisi menghindari overflow dan error input
🔥 Fakta Menarik

Berdasarkan pengalaman implementasi SIAKAD OBE di beberapa PTS Indonesia, lebih dari 60% bug pada sistem pelaporan CPL bersumber dari skema database yang tidak menerapkan foreign key constraint. Akibatnya, data nilai ada tapi tidak bisa di-trace ke CPL mana — laporan akreditasi pun jadi manual kembali.

🗺️ Peta Tabel Skema Database SIAKAD OBE: Siapa Berhubungan dengan Siapa?

Sebelum menulis satu baris DDL SQL OBE pun, kamu perlu memahami peta besar tabel-tabelnya. Ibarat navigasi Google Maps — kalau kamu tahu semua persimpangannya, kamu tidak akan nyasar saat coding. Skema database OBE minimal terdiri dari 8 tabel inti yang saling terhubung:

┌──────────────────────────────────────────────────────────────┐ PETA RELASI TABEL SIAKAD OBE └──────────────────────────────────────────────────────────────┘ [prodi] ──────────── memiliki ────────────── [cpl] │ │ │ dipetakan ke │ │ memiliki [cpmk] │ │ ▼ dimiliki oleh [mata_kuliah] ──── memiliki ──────────── [penilaian] │ │ diikuti oleh mengukur │ │ [mahasiswa] [nilai_mahasiswa] │ │ └─────────── mempunyai ───────────────────── ┘
⚡ Daftar 8 Tabel Inti Database OBE
prodi
Program studi
cpl
Capaian Pembelajaran Lulusan
cpmk
Capaian Per Mata Kuliah
mata_kuliah
Mata kuliah prodi
mahasiswa
Data mahasiswa
penilaian
Komponen & bobot penilaian
nilai_mahasiswa
Nilai per penilaian per mahasiswa
pemetaan_cpl_cpmk
Tabel pivot relasi CPL–CPMK

💻 DDL SQL OBE Lengkap: Skrip CREATE TABLE Siap Pakai

Berikut adalah skrip DDL SQL OBE yang bisa langsung kamu eksekusi. Skrip ini ditulis dengan MySQL/MariaDB (paling umum dipakai SIAKAD Indonesia), namun logikanya berlaku di PostgreSQL dengan penyesuaian kecil. Mari kita bangun satu per satu!

1

Tabel prodi dan cpl — Fondasi Kurikulum OBE

-- ================================================ -- TABEL 1: prodi (Program Studi) -- ================================================ CREATE TABLE prodi ( id_prodi INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, kode_prodi VARCHAR(20) NOT NULL UNIQUE, nama_prodi VARCHAR(150) NOT NULL, jenjang ENUM('D3','S1','S2','S3') NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ================================================ -- TABEL 2: cpl (Capaian Pembelajaran Lulusan) -- ================================================ CREATE TABLE cpl ( id_cpl INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_prodi INT UNSIGNED NOT NULL, kode_cpl VARCHAR(20) NOT NULL, deskripsi_cpl TEXT NOT NULL, kategori ENUM('Sikap','Pengetahuan','Keterampilan Umum','Keterampilan Khusus') NOT NULL, CONSTRAINT fk_cpl_prodi FOREIGN KEY (id_prodi) REFERENCES prodi(id_prodi) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE KEY uq_kode_cpl_prodi (id_prodi, kode_cpl) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
💡 Tips DDL SQL OBE

Gunakan UNSIGNED pada kolom ID integer agar kapasitas penyimpanan dua kali lipat (0 s/d ~4 miliar). Ini penting untuk SIAKAD dengan data mahasiswa puluhan ribu. Jangan lupa tambahkan ENGINE=InnoDB agar foreign key constraint aktif — MyISAM tidak mendukung FK!

2

Tabel mata_kuliah, cpmk, dan Tabel Pivot pemetaan_cpl_cpmk

-- ================================================ -- TABEL 3: mata_kuliah -- ================================================ CREATE TABLE mata_kuliah ( id_mk INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_prodi INT UNSIGNED NOT NULL, kode_mk VARCHAR(20) NOT NULL UNIQUE, nama_mk VARCHAR(200) NOT NULL, sks TINYINT UNSIGNED NOT NULL DEFAULT 3, semester TINYINT UNSIGNED NOT NULL, CONSTRAINT fk_mk_prodi FOREIGN KEY (id_prodi) REFERENCES prodi(id_prodi) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ================================================ -- TABEL 4: cpmk (Capaian Per Mata Kuliah) -- ================================================ CREATE TABLE cpmk ( id_cpmk INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_mk INT UNSIGNED NOT NULL, kode_cpmk VARCHAR(20) NOT NULL, deskripsi_cpmk TEXT NOT NULL, bobot_cpmk DECIMAL(5,2) NOT NULL DEFAULT 100.00, CONSTRAINT fk_cpmk_mk FOREIGN KEY (id_mk) REFERENCES mata_kuliah(id_mk) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ================================================ -- TABEL 5: pemetaan_cpl_cpmk (Tabel Pivot) -- ================================================ CREATE TABLE pemetaan_cpl_cpmk ( id_pemetaan INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_cpl INT UNSIGNED NOT NULL, id_cpmk INT UNSIGNED NOT NULL, CONSTRAINT fk_pemetaan_cpl FOREIGN KEY (id_cpl) REFERENCES cpl(id_cpl) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT fk_pemetaan_cpmk FOREIGN KEY (id_cpmk) REFERENCES cpmk(id_cpmk) ON DELETE CASCADE ON UPDATE CASCADE, UNIQUE KEY uq_cpl_cpmk (id_cpl, id_cpmk) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
3

Tabel mahasiswa, penilaian, dan nilai_mahasiswa

-- ================================================ -- TABEL 6: mahasiswa -- ================================================ CREATE TABLE mahasiswa ( id_mahasiswa INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_prodi INT UNSIGNED NOT NULL, nim VARCHAR(20) NOT NULL UNIQUE, nama VARCHAR(200) NOT NULL, angkatan YEAR NOT NULL, email VARCHAR(150) NULL, CONSTRAINT fk_mhs_prodi FOREIGN KEY (id_prodi) REFERENCES prodi(id_prodi) ON DELETE RESTRICT ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ================================================ -- TABEL 7: penilaian (Komponen Evaluasi) -- ================================================ CREATE TABLE penilaian ( id_penilaian INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_cpmk INT UNSIGNED NOT NULL, nama_penilaian VARCHAR(150) NOT NULL, jenis ENUM('UTS','UAS','Tugas','Proyek','Quiz','Praktikum') NOT NULL, bobot_penilaian DECIMAL(5,2) NOT NULL, tahun_akademik VARCHAR(12) NOT NULL, CONSTRAINT fk_penilaian_cpmk FOREIGN KEY (id_cpmk) REFERENCES cpmk(id_cpmk) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ================================================ -- TABEL 8: nilai_mahasiswa (Tabel Transaksi Utama) -- ================================================ CREATE TABLE nilai_mahasiswa ( id_nilai INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, id_mahasiswa INT UNSIGNED NOT NULL, id_penilaian INT UNSIGNED NOT NULL, nilai DECIMAL(5,2) NOT NULL, catatan VARCHAR(255) NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT fk_nilai_mhs FOREIGN KEY (id_mahasiswa) REFERENCES mahasiswa(id_mahasiswa) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT fk_nilai_penilaian FOREIGN KEY (id_penilaian) REFERENCES penilaian(id_penilaian) ON DELETE RESTRICT ON UPDATE CASCADE, UNIQUE KEY uq_nilai_mhs_penilaian (id_mahasiswa, id_penilaian) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
⚠️ Perhatian Penting

Urutan eksekusi CREATE TABLE sangat penting! Tabel yang dirujuk oleh foreign key harus dibuat lebih dulu. Urutan yang benar: prodicplmata_kuliahcpmkpemetaan_cpl_cpmkmahasiswapenilaiannilai_mahasiswa. Salah urutan = error FK constraint.

🔗 Best Practice Foreign Key OBE: ON DELETE dan ON UPDATE

Salah satu keputusan terpenting dalam skema database SIAKAD OBE adalah menentukan strategi ON DELETE dan ON UPDATE untuk setiap foreign key. Ini seperti aturan "kalau bapaknya pindah rumah, anak-anaknya ikut atau tidak?"

Aksi FK Penjelasan Kapan Digunakan di OBE
CASCADE Data anak ikut terhapus/diupdate CPL dihapus → CPMK & pemetaannya ikut terhapus
RESTRICT Error jika ada data anak → tidak bisa dihapus Nilai mahasiswa tidak bisa dihapus selama mahasiswa aktif
SET NULL FK di anak di-set NULL saat parent dihapus Jarang dipakai di OBE karena data nilai tidak boleh NULL
NO ACTION Default — mirip RESTRICT di MySQL Gunakan hanya jika yakin tidak ada cascade yang dibutuhkan
⚡ Insight Penting

Dalam DDL SQL OBE untuk SIAKAD, gunakan CASCADE untuk data kurikulum (CPL, CPMK, pemetaan) karena bersifat hierarkis — jika prodi dihapus, wajar semua data turunannya ikut terhapus. Tapi gunakan RESTRICT untuk data transaksi (nilai mahasiswa) — kamu tidak mau data nilai terhapus hanya karena ada kesalahan penghapusan komponen penilaian.

⚙️ Optimasi Indeks: Agar Query Laporan CPL Tidak Lemot

Skema database SIAKAD OBE yang baik tidak cukup hanya dengan foreign key. Kamu juga perlu indeks yang tepat agar query laporan attainment CPL — yang biasanya melibatkan JOIN 4–5 tabel sekaligus — bisa berjalan dalam hitungan milidetik, bukan menit.

-- ================================================ -- TAMBAHKAN INDEX SETELAH CREATE TABLE -- ================================================ -- Percepat pencarian nilai berdasarkan tahun akademik CREATE INDEX idx_penilaian_tahun ON penilaian (tahun_akademik); -- Percepat JOIN nilai per mahasiswa CREATE INDEX idx_nilai_mahasiswa ON nilai_mahasiswa (id_mahasiswa); -- Percepat JOIN nilai per komponen penilaian CREATE INDEX idx_nilai_penilaian ON nilai_mahasiswa (id_penilaian); -- Percepat filter mahasiswa per angkatan CREATE INDEX idx_mahasiswa_angkatan ON mahasiswa (angkatan);
💡 Tips Pro

MySQL otomatis membuat indeks pada kolom PRIMARY KEY dan UNIQUE KEY. Tapi kolom foreign key tidak otomatis diindeks — kamu harus menambahkannya manual dengan CREATE INDEX. Ini sangat berpengaruh saat query JOIN antara nilai_mahasiswa dan penilaian untuk laporan CPL ribuan mahasiswa.

📚 Bagian dari Seri

Seri Kurikulum OBE: OBE from Zero to Zorro

20 Artikel komprehensif dari konsep dasar hingga digitalisasi penuh SIAKAD OBE

✅ Kesimpulan

DDL SQL OBE Bukan Sekadar Kode — Ini Fondasi Digital Kurikulum Kamu

Kita sudah membahas tuntas bagaimana membangun skema database SIAKAD OBE yang solid dari nol. Mulai dari memahami mengapa DDL SQL OBE tidak boleh asal dibuat, memetakan 8 tabel inti dan relasinya, hingga skrip CREATE TABLE lengkap dengan foreign key yang siap dieksekusi.

Poin-poin krusial yang wajib kamu ingat: gunakan InnoDB agar FK aktif, perhatikan urutan eksekusi tabel, pilih strategi CASCADE vs RESTRICT dengan bijak, dan jangan lupa tambahkan indeks pada kolom FK untuk performa query. Dengan skema yang benar, laporan attainment CPL yang selama ini menjadi momok bisa dihitung otomatis oleh sistem.

Artikel ini adalah bagian ke-18 dari seri OBE From Zero to Zorro — dan perjalanan kita belum selesai. Di artikel selanjutnya, kita akan menulis query SQL untuk menghitung attainment CPL secara otomatis menggunakan data dari skema yang baru saja kita bangun ini. Stay tuned!

💬 Diskusi yuk! Apakah SIAKAD di kampusmu sudah menggunakan skema yang mirip ini? Atau kamu masih stuck di fase mana? Ceritakan pengalamanmu di kolom komentar di bawah — mungkin masalahmu sudah dialami orang lain dan ada solusinya!

Jika artikel ini bermanfaat, bagikan ke rekan dosen atau staf IT kampusmu yang sedang berjuang mengimplementasikan OBE. Satu share darimu bisa menghemat berminggu-minggu riset bagi orang lain! 🙏

🏷️ Tag Artikel
#KurikulumOBE #KKNI #OBE #DDLSQLOBe #CREATETABLEOBe #SiakadOBE #ForeignKeyOBE #DigitalisasiKampus #Akreditasi

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux