Ini untuk menjawab bagian:
Saya mencoba untuk memahami apakah tabel dimensi dapat menjadi tabel fakta atau tidak?
Jawaban singkatnya (INMO) adalah Tidak. Itu karena 2 tipe tabel dibuat untuk alasan yang berbeda. Namun, dari perspektif desain database, tabel dimensi dapat memiliki tabel induk seperti halnya tabel fakta yang selalu memiliki tabel dimensi (atau lebih) sebagai induk. Selain itu, tabel fakta dapat digabungkan, sedangkan tabel Dimensi tidak digabungkan. Alasan lain adalah bahwa tabel fakta tidak seharusnya diperbarui pada tempatnya sedangkan tabel Dimensi dapat diperbarui dalam beberapa kasus.
Keterangan lebih lanjut:
Tabel fakta dan dimensi muncul dalam apa yang umumnya dikenal sebagai Skema Bintang. Tujuan utama skema bintang adalah untuk menyederhanakan kumpulan tabel kompleks yang dinormalisasi dan mengonsolidasi data (mungkin dari sistem yang berbeda) ke dalam satu struktur database yang dapat di-query dengan cara yang sangat efisien.
Pada bentuk yang paling sederhana, ini berisi tabel fakta (Contoh: StoreSales) dan satu atau beberapa tabel dimensi. Setiap entri Dimensi memiliki 0,1 atau lebih tabel fakta yang terkait dengannya (Contoh tabel dimensi: Geografi, Item, Pemasok, Pelanggan, Waktu, dll.). Ini juga berlaku untuk dimensi yang memiliki induk, dalam hal ini modelnya berjenis "Snow Flake". Namun, desainer berusaha untuk menghindari desain semacam ini karena menyebabkan lebih banyak sambungan yang memperlambat kinerja. Dalam contoh StoreSales, dimensi Geografi dapat terdiri dari kolom (GeoID, ContenentName, CountryName, StateProvName, CityName, StartDate, EndDate)
Dalam model Snow Flakes, Anda dapat memiliki 2 tabel yang dinormalisasi untuk informasi Geo, yaitu: Tabel Isi, Tabel Negara.
Anda dapat menemukan banyak contoh di Star Schema. Selain itu, lihat ini untuk melihat tampilan alternatif pada model skema bintang Inmon vs. Kimball . Kimbal memiliki forum yang bagus, Anda mungkin juga ingin melihat di sini: Forum Kimball .
Edit: Untuk menjawab komentar tentang contoh untuk 4NF:
- Contoh tabel fakta yang melanggar 4NF:
Fakta Penjualan (ID, BranchID, SalesPersonID, ItemID, Amount, TimeID)
- Contoh tabel fakta yang tidak melanggar 4NF:
AggregatedSales (BranchID, TotalAmount)
Di sini relasinya ada di 4NF
Contoh terakhir agak jarang terjadi.