1.Mudah
Kunci asing (foreign key) ialah:
- AKunci yang sentiasa disulitkan
- BLajur yang nilainya mesti unik merentas semua baris jadual
- CKunci yang digunakan oleh pengguna asing
- DLajur yang merujuk kepada kunci utama jadual lain
2.Mudah
Apakah kunci calon (candidate key)?
- ASet lajur yang dikongsi antara dua jadual untuk memaut barisnya
- BSet minimum lajur yang mengenal pasti setiap baris secara unik
- CLajur yang sedang menunggu untuk menjadi kunci asing
- DSebarang lajur yang mengandungi nilai NULL
3.Mudah
Untuk apakah rajah hubungan-entiti (ER) digunakan?
- AMemodelkan entiti, atributnya dan hubungan semasa mereka bentuk pangkalan data
- BMenyenaraikan pengguna pangkalan data
- CMengukur prestasi pangkalan data
- DMenunjukkan bagaimana pertanyaan dilaksanakan
4.Sederhana
Apakah yang dilakukan oleh ROLLBACK TO SAVEPOINT s1?
- AMenamatkan transaksi dan mengkomit segala-galanya
- BMembuat asal seluruh transaksi dari awal
- CMembuat asal perubahan selepas savepoint s1, dengan transaksi kekal terbuka
- DMemadam savepoint dan semua jadual yang diubah sejak itu
5.Sederhana
Pertanyaan manakah yang menyenaraikan pelanggan yang tidak pernah membuat pesanan?
- ASELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
- DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
6.Sederhana
Bentuk normal ketiga (3NF) menghapuskan:
- AIndeks berlebihan pada lajur yang bukan sebahagian daripada kunci
- BNilai atomik
- CKunci gubahan
- DKebergantungan transitif antara atribut bukan kunci
7.Sukar
Selepas customers LEFT JOIN orders, mengapakah menggunakan COUNT(o.id) dan bukan COUNT(*) untuk mengira pesanan bagi setiap pelanggan?
- ACOUNT(*) tidak dibenarkan selepas cantuman
- BCOUNT(*) mengira baris berisi NULL sebagai 1 bagi pelanggan tanpa pesanan
- CCOUNT(*) mengabaikan baris dengan nilai NULL
- DCOUNT(o.id) hanya mengira pelanggan berbeza
8.Sukar
Jadual mempunyai sejuta baris dan lajur Boolean is_active yang TRUE untuk 95% daripadanya. Mengapakah pengoptimum mungkin mengabaikan indeks pada is_active untuk WHERE is_active = TRUE?
- APengoptimum tidak pernah menggunakan indeks dalam klausa WHERE
- BTRUE dianggap NULL oleh indeks
- CKebanyakan baris sepadan, maka imbasan jadual penuh lebih murah daripada banyak carian indeks
- DIndeks tidak boleh dicipta pada lajur Boolean
Kunci jawapan
- 1. D · Lajur yang merujuk kepada kunci utama jadual lain
- 2. B · Set minimum lajur yang mengenal pasti setiap baris secara unik
- 3. A · Memodelkan entiti, atributnya dan hubungan semasa mereka bentuk pangkalan data
- 4. C · Membuat asal perubahan selepas savepoint s1, dengan transaksi kekal terbuka
- 5. B · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
- 6. D · Kebergantungan transitif antara atribut bukan kunci
- 7. B · COUNT(*) mengira baris berisi NULL sebagai 1 bagi pelanggan tanpa pesanan
- 8. C · Kebanyakan baris sepadan, maka imbasan jadual penuh lebih murah daripada banyak carian indeks
Penyelesaian langkah demi langkah yang lengkap: berlatih topik ini di examproblems.com.