Fokus HL yang didukung. Target penilaian pertama 2027; PDF resmi mengembalikan 403; brief perolehan lama adalah penilaian akhir 2026. Panduan, persyaratan penilaian, dan praktis lainnya tetap mempertahankan catatan yang tercatat.
Prasyarat: baca kuantitas dan satuan yang disebutkan, gunakan aritmatika, dan kondisi model di bawah ini. Setiap pelajaran mengembangkan metodenya sendiri sebelum transfer mandiri.
Ini adalah contoh pengajaran asli atau fiksi eksplisit, bukan pengukuran aktual atau penyelidikan pembelajaran yang selesai dan dinilai.
3.2
Basis data relasional: kunci dan hubungan
Apa yang akan menjelaskan observasi ini?
Menyalin alamat pengguna dalam setiap pesanan dapat menghasilkan catatan yang bertentangan ketika alamat berubah.
Mulailah dengan prediksi. Nyatakan besaran atau fitur apa yang akan Anda bandingkan, lalu tentukan bukti apa yang dapat membedakan dua penjelasan.
Bangun modelnya
Tabel relasional berisi baris dan atribut. Kunci utama mengidentifikasi baris; kunci asing menghubungkan ke kunci rujukan di tabel lain. Normalisasi dapat mengurangi duplikasi yang dapat dihindari dan anomali pembaruan sambil mempertahankan hubungan yang bermakna.
primary key: himpunan atribut yang secara unik mengidentifikasi baris tabel; foreign key: himpunan atribut yang merujuk pada kunci di tabel lain.
Pilih bukti yang dapat mengujinya
Gabungan (join) menggabungkan baris berdasarkan kondisi tertentu. Jumlah hasil bergantung pada kardinalitas hubungan dan filter. Batasan kunci asing menerapkan aturan hubungan; itu tidak secara otomatis mengenkripsi data pribadi.
Rancang dataset sintetis pengguna-pesanan kecil tanpa informasi pribadi nyata. Deklarasikan kunci, uji penyisipan duplikat dan rujukan hilang, lalu periksa hasil query terhadap tabel harapan yang dihitung manual.
Bekerja dari kuantitas yang diketahui
Nyatakan nilai yang diketahui dan unitnya. Pilih hubungan kerana asumsinya sesuai dengan kes ini, kemudian susun semula sebelum menggantikan.
Diketahui: empat pelanggan masing-masing memiliki 2, 0, 3 dan 1 pesanan. Inner join pelanggan ke pesanan mengembalikan 2+0+3+1 = 6 baris. Left join juga mempertahankan pelanggan tanpa pesanan sebagai satu baris cocok null, memberikan 7 di sini.
Contoh:
Tiga pelanggan memiliki 1, 3 dan 2 pesanan. Berapa banyak baris yang dikembalikan oleh gabungan dalam pelanggan-pesanan? Gunakan urutan yang sama: kuantitas diketahui → model → relasi → substitusi → unit dan interpretasi.
Periksa kesimpulan dan batasannya
Kunci utama tidak perlu berupa nama orang. Gabungan bukan penggabungan sederhana tabel. Gunakan query terparameter untuk input yang tidak tepercaya alih-alih membangun SQL dari string mentah.
Kembali ke pengamatan awal. Jelaskan apa hasil tersebut mendukung, kondisi apa yang diasumsikannya, dan satu cara untuk menguji penjelasan saingan.
Peringatan:
Kunci asing secara otomatis mengenkripsi setiap baris. Klaim ini salah: Kunci utama tidak perlu berupa nama orang. Gabungan bukan penggabungan sederhana tabel. Gunakan query terparameter untuk input yang tidak tepercaya alih-alih membangun SQL dari string mentah.
Kunci:
Database relasional: kunci dan hubungan: Gabungan menggabungkan baris berdasarkan kondisi tertentu. Jumlah hasil bergantung pada kardinalitas hubungan dan filter. Batasan kunci asing menerapkan aturan hubungan; itu tidak secara otomatis mengenkripsi data pribadi.
Jejak dan batas dapat dijalankan
import sqlite3
db = sqlite3.connect(":memory:")
db.executescript("""CREATE TABLE c(id INTEGER PRIMARY KEY);
CREATE TABLE o(id INTEGER PRIMARY KEY, cid INTEGER);
INSERT INTO c VALUES(1),(2),(3);
INSERT INTO o VALUES(10,1),(11,1),(12,3);""")
for kind in ["INNER", "LEFT"]:
sql = f"SELECT COUNT(*),COUNT(o.id) FROM c {kind} JOIN o ON c.id=o.cid"
print(kind, db.execute(sql).fetchone())
db.close()
Output yang diharapkan:
INNER (3, 3)
LEFT (4, 3)
Join kiri mempertahankan pelanggan 2 dengan bidang pesanan null. COUNT(*) mencakup baris tersebut, sementara COUNT(o.id) mengecualikan nilai null. Kunci utama membedakan rekaman; jumlah pelanggan bukan jumlah pesanan. Kata kunci join interpolasi berasal dari daftar internal tetap, bukan input pengguna.