Materi
Basis data operasional dirancang untuk mencatat transaksi satu per satu, dan kelas Desain Basis Data membahas cara menormalkannya. Gudang data punya tugas lain: menjawab pertanyaan analisis seperti berapa penjualan per bulan per wilayah. Microsoft Learn menjelaskan bahwa skema bintang, cara penyusunan yang matang dan dipakai luas di gudang data relasional, mewajibkan setiap tabel dikelompokkan sebagai tabel fakta atau tabel dimensi.
Tabel fakta menyimpan peristiwa atau pengukuran: pesanan, saldo stok, kurs, suhu. Isinya kolom kunci dimensi yang merujuk tabel dimensi dan kolom ukuran berupa angka yang akan diringkas. Kolom kunci menentukan dimensionalitas, sedangkan nilai kuncinya menentukan grain, yaitu tingkat paling rinci yang diwakili satu baris. Kimball dan Ross menempatkan penetapan grain sebagai langkah kedua dari empat langkah desain, sesudah memilih proses bisnis dan sebelum memilih dimensi dan fakta.
| Tabel fakta bengkel | Grain satu baris | Kunci dimensi | Ukuran |
|---|---|---|---|
| fakta_servis | satu jenis pekerjaan di satu nota servis | tanggal_key, mekanik_key, layanan_key | jam_kerja, biaya |
| fakta_target_bengkel | satu cabang dalam satu bulan | tanggal_key (tanggal 1), cabang_key | target_biaya |
Fakta juga bisa memuat atribut yang bukan kunci dan bukan ukuran, misalnya nomor nota. Microsoft menyebut kolom seperti itu dimensi degenerasi: dipakai untuk menyaring atau mengelompokkan, tetapi tidak layak dibuatkan tabel sendiri karena hanya satu kolom. Tabel fakta umumnya tanpa kunci primer; kunci yang tersirat adalah gabungan kunci dimensi dan atributnya. Grain diuji dengan membandingkan banyak baris dengan banyak kombinasi kolom yang seharusnya unik.
-- Grain fakta_servis: satu baris per (no_nota, pekerjaan_ke)
SELECT COUNT(*) AS baris,
(SELECT COUNT(*) FROM (SELECT DISTINCT no_nota, pekerjaan_ke FROM fakta_servis)) AS kombinasi
FROM fakta_servis;