Ini mungkin tidak menjawab pertanyaan Anda secara langsung, tetapi jika Anda memiliki beberapa dimensi yang terkait erat dan sering digunakan bersama, Anda dapat menggabungkannya menjadi "dimensi mini " yang memiliki setiap kemungkinan kombinasi wilayah, distributor, dan pengecer (lihat jawaban saya untuk pertanyaan lain ):
create table dbo.DIM_TerritorySalesChannels (
TerritorySalesChannelID int not null primary key,
TerritoryName nvarchar(100) not null,
RetailerName nvarchar(100) not null,
DistributorName nvarchar(100) not null,
/* other attributes */
)
Ini mungkin awalnya tampak canggung, tetapi sebenarnya cukup mudah untuk diisi dan mengelola dan menghindari kerumitan hubungan antar dimensi, yang sering kali menjadi berantakan (seperti yang telah Anda temukan). Jelas Anda berakhir dengan satu dimensi yang sangat besar, bukan tiga yang lebih kecil, tetapi seperti yang saya sebutkan di jawaban lain, kami memiliki beberapa ratus ribu baris dalam satu dimensi dan itu tidak pernah menjadi masalah bagi kami.