Panduan kursus

SQL Berjalan Tanpa Error, Apakah Jawabannya Benar? Menyelami Mata Kuliah Prinsip Basis Data DSAI2202 PolyU

Daftar yang dihasilkan dengan mulus bisa saja justru melewatkan orang yang paling perlu terlihat. Dari relasi antar tabel hingga batas saat mengubah data, DSAI2202 menawarkan jalur belajar untuk memahami dan memverifikasi SQL, sekaligus memberi ruang pertanyaan lanjutan atas "minta AI menuliskan kueri untuk saya".

EvoClass Waktu baca 5 menit
Ilustrasi konseptual: seorang pembelajar memeriksa dua tabel catatan siswa yang dihubungkan dengan garis, mencekram satu baris yang hilang dari hasil dengan pena merah, sementara di sampingnya tersisa kartu siswa yang tidak cocok.

Bayangkan sebuah situasi pembelajaran: Anda ingin menemukan siswa yang belum mengumpulkan tugas, lalu meminta AI menuliskan sepotong SQL. Program berjalan lancar, dan di layar muncul sebuah daftar yang rapi.

Tidak ada pesan error, dan nama kolomnya pun cocok. Anda bersiap mengirim pengingat, tetapi tiba-tiba menyadari bahwa seorang siswa yang sama sekali belum memiliki catatan pengumpulan tidak muncul dalam hasil.

Masalahnya mungkin tersembunyi pada cara penggabungan tabel. Kueri hanya mempertahankan catatan yang dapat dicocokkan dari kedua tabel, sehingga "orang yang belum memiliki catatan" sejak awal sudah tersisih.

Kesalahan semacam ini berjalan senyap. Basis data menyelesaikan operasi yang Anda tuliskan; yang benar-benar perlu diperiksa adalah apakah operasi tersebut mengungkapkan maksud Anda yang sebenarnya.

Mata kuliah DSAI2202《Database Principles》(Prinsip Basis Data) di Hong Kong Polytechnic University mencakup pemodelan data, SQL, manajemen transaksi, dan keamanan basis data. Ketika masuk ke kuliah dengan pertanyaan seperti "mengapa hasilnya kurang satu orang", konsep-konsep yang abstrak pun memiliki jejak yang bisa ditelusuri.Penjelasan resmi mata kuliah PolyU

Dia tidak ada di daftar: karena tidak ada catatan, atau karena memang bukan orangnya?

Mari kita perkecil contoh di awal tadi.

Tabel siswa berisi tiga orang: Ah Ming, Xiao Xin, dan Ah Jie. Tabel pengumpulan hanya berisi catatan Ah Ming dan Xiao Xin; Ah Jie belum mengumpulkan.

Jika kedua tabel digabungkan lebih dulu dengan inner join, lalu dicari siswa yang "belum mengumpulkan", Ah Jie sudah tidak ada dalam hasil antara. Penyaringan berikutnya, seberapa pun telitinya, tidak akan bisa menemukan kembali orang yang sudah tersisih sebelumnya.

Salah satu pendekatan adalah berangkat dari daftar siswa yang lengkap, mempertahankan setiap siswa, lalu memeriksa apakah ada catatan pengumpulan yang bersesuaian. Left join dapat membantu mengungkapkan relasi semacam ini, tetapi cakupan tugas, kolom pencocokan, dan kondisi penyaringan berikutnya masih perlu diperiksa lagi. Mengganti kata sambung join tidak otomatis menjamin jawaban yang benar.Tutorial join resmi PostgreSQL

Dalam Lab 7: Penalaran lintas relasi di EvoClass, peserta memeriksa daftar registrasi siswa dan daftar platform pembelajaran, serta mengamati bagaimana cara penggabungan yang berbeda mempertahankan atau menyisihkan catatan.

Yang layak dilatih di sini adalah menjelaskan dengan gamblang sebelum menulis kueri: satu baris dalam hasil mewakili siapa? Siapa yang wajib dipertahankan? Apa maknanya jika catatan yang cocok tidak ditemukan?

Dengan beberapa kalimat ini, SQL memiliki sasaran yang bisa dibandingkan.

Sebelum membuat kueri, putuskan dahulu bagaimana dunia dicatat

Mari lanjutkan melihat daftar ini. Seorang siswa bisa mengambil beberapa mata kuliah, satu mata kuliah bisa memiliki beberapa tugas, dan setiap tugas bisa mengizinkan beberapa kali pengumpulan.

Jika semuanya dimasukkan ke dalam satu tabel besar, nama, nama mata kuliah, dan informasi pengajar bisa muncul berulang kali. Ketika satu bagian diubah, bagian lain masih menyimpan nilai lama; saat menghitung jumlah siswa, orang yang sama bisa terhitung berulang.

Di titik ini, masalahnya sudah terjadi sebelum kueri dibuat: sebenarnya setiap baris dalam tabel mencatat apa?

Lab 2: Dari dunia nyata ke tabel data PostgreSQL berangkat dari masalah redundansi dan pembaruan pada tabel datar menuju perancangan basis data relasional, sedangkan Lab 9: Normalisasi formulir pendaftaran lebih lanjut membahas normalisasi.

Anda bisa mencoba latihan kecil dengan kertas dan pena: tuliskan "siswa", "mata kuliah", dan "relasi pengambilan mata kuliah" masing-masing di tiga lembar kertas, lalu jelaskan bagaimana ketiganya terhubung. Jika seorang siswa berpindah jurusan, bagian mana yang perlu diubah? Jika sebuah mata kuliah baru belum dipilih siapa pun, apakah bisa dicatat lebih dulu?

Pertanyaan-pertanyaan ini membuat struktur data diuji oleh perubahan sehari-hari. Apakah pemecahan tabel sudah tepat bergantung pada apakah tabel tersebut dapat mengungkapkan relasi dengan jelas dan tetap konsisten saat dilakukan perubahan.

Kembali ke kueri di awal, Anda juga akan lebih mudah menilai: beberapa baris tambahan yang muncul di depan mata itu mewakili beberapa siswa berbeda, atau beberapa kali pengumpulan dari siswa yang sama?

Satu pernyataan benar, tetapi keseluruhan operasi bisa baru selesai separuh

Setelah hasil ditemukan, sistem sering kali masih perlu mengubah data.

Sebagai contoh, seorang siswa mengajukan pindah kelas, sehingga perlu dikeluarkan dari kelas asal dan dimasukkan ke kelas baru. Jika langkah pertama sudah tersimpan tetapi langkah kedua gagal karena suatu hal, siswa tersebut bisa untuk sementara tidak termasuk dalam kelas mana pun. Dilihat terpisah, kedua pernyataan mungkin sama-sama ditulis dengan benar; dilihat bersama, sistem meninggalkan keadaan yang tidak utuh.

Transaksi menyediakan alat dasar untuk masalah semacam ini: mengelompokkan langkah-langkah yang harus diselesaikan bersama, sehingga semuanya disimpan sebagai satu kesatuan, atau dibatalkan jika gagal. Bagaimana batas "kesatuan" ini ditetapkan tetap memerlukan pemahaman atas tugas yang spesifik.Tutorial transaksi resmi PostgreSQL

Percobaan transaksi dan konkurensi di Lab 10 membawa topik ini ke batas transaksi dan pengendalian konkurensi, dengan latar penanganan kuota di meja pendaftaran mata kuliah, untuk mengamati apa yang terjadi ketika dua sesi beroperasi secara bersamaan.

Saat berlatih, Anda dapat sengaja menciptakan kegagalan di antara dua langkah operasi, lalu memeriksa apa yang sebenarnya ditinggalkan oleh basis data. Selanjutnya, biarkan dua sesi beroperasi pada data yang sama secara bersamaan, dan amati apakah langkah-langkah yang tadinya lancar masih berlaku.

Satu percobaan pun memperoleh makna tambahan: selain melihat bagaimana sesuatu berhasil, kita juga perlu tahu bagaimana sesuatu bisa gagal.

Setelah meminta AI menulis SQL, apa yang menjadi tanggung jawab Anda untuk memverifikasi?

Dengan pengalaman sebelumnya, perhatian Anda terhadap kueri yang diberikan AI akan berubah.

Daftar yang kehilangan orang di awal tadi dapat diperiksa dengan tiga catatan siswa fiktif; masalah penghitungan ganda dapat diperiksa dengan menambahkan seorang siswa yang memiliki dua kali pengumpulan; sedangkan operasi pindah kelas dapat diperiksa keadaan datanya ketika gagal di tengah jalan.

Contoh-contoh kecil ini memberikan dasar untuk menilai. Penjelasan yang mengalir lancar tidak dapat menggantikan pemeriksaan atas hasil.

Lab 12: Memverifikasi SQL yang dihasilkan AI memasukkan penelaahan ke dalam latihan: apakah bisa berjalan? Apakah menjawab pertanyaan? Apa yang mungkin dirusak? Siapa yang berwenang menjalankannya?

Peserta dapat menelusuri sebuah tugas konkret dengan pertanyaan berlapis: catatan mana yang dipertahankan oleh kueri ini? Berapa baris yang akan terpengaruh oleh perubahan? Jika diperkirakan hanya satu orang yang diubah, bagaimana menemukan kesalahan cakupan sebelum eksekusi? Jika alat memiliki izin mengubah, apakah itu berarti tugas saat ini mengizinkannya melakukannya?

Bagi mereka yang sedang mempelajari basis data relasional, atau sudah mulai memanfaatkan AI untuk menulis kueri, gerbang masuk mata kuliah DSAI2202 di EvoClass menyediakan jalur untuk melanjutkan lebih dalam dari operasi dasar. Anda dapat menyiapkan lebih dulu sekumpulan data kecil yang bisa Anda periksa secara manual, lalu masuk ke latihan dengan membawa hasil yang diharapkan.

Saat berikutnya sebuah daftar yang rapi muncul di layar, carilah lebih dulu orang yang paling mudah terlewat.

Jika Anda mampu menjelaskan mengapa dia muncul, dan mengapa dia absen, barulah Anda mulai tahu apakah jawaban ini layak dipercaya.


Penentuan posisi mata kuliah mengacu pada penjelasan resmi mata kuliah PolyU, sedangkan pengantar percobaan mengacu pada materi kuliah EvoClass saat ini. Tautan sesi kuliah dalam artikel mengarah ke materi pembelajaran berbahasa Mandarin Sederhana. Daftar, pengumpulan tugas, dan situasi pindah kelas merupakan contoh pembelajaran yang dirancang untuk membantu memahami konsep, bukan catatan kasus siswa atau catatan hasil penggunaan.