fact and dimension table

Anar Məmmədov
2 min readApr 1, 2024

--

Yəqin ki, hər birimiz SQL də fact dimension cədvəllərinin nə olduğunu bilirik. Bəs yaxşı bu iki elmi anlayış biz backend proqramçıların nəyinə gərəkdir və bilməyimizdə nə kimi faydası vardır olduğunu bu məqalədə müzakirə edirik.

Fact cədvəl dediyimiz özündə əsasən foreign key sütunu daşıyan cədvəllərə deyilir, dimension cədvəl isə həmən foreign key-ə xas məlumatları saxlıyan cədvələ deyilir. Bunu anlamaq üçün təbiiki şəkillər üzərində nümunəyə baxaraq daha yaxşı anlıya bilərik.

Nümunələrə Oracle bazasında HR scheması üzərindən baxacayıq. Fərz eləyin aşağıdakı şəkildə olan countries adında cədvəlimiz vardır.

COUNTRIES TABLE

və bu cədvəl bizdə adlanır fact table. Ona görəki bu cədvəl içərisində region_id adında sütun daşıyır və o bir foreign key constraintinə sahibdir və regions cədvəlinə bağlı olduğunu göstərməkdədir. İndi isə istəyirəmki beyninizdə simulyasiya edəsiniz ki, sizdən tələb edirlər ki, client-a elə response qaytarmalısınız ki, orada həm ölkə adı və həmçinin də bu ölkənin hansı regiona aid olduğu məlumatı göstərəsiniz. Bunu json formatında göstərmiş olsaq bizdən tələb olunan response structure belə olacaqdır.

json response structure

countries cədvəlinə baxdığımızda bizdə region_name dəyərlərini saxlıyan sütun yoxdur, sadəcə region_id adında sütun var və o regions cədvəlinin primary key sütununa bağlıdır. Belə olduğu halda biz fact dimension elmi terminlərindən yola çıxaraq bilməli olduğumuz şey budur ki, məhz həmən fact cədvəlində olan foreign key sütunun hansı cədvələ bağlı olduğunu göstərən ya skriptə baxmalıyıq yadakı cədvəl içərisində comments yazılıbsa oradan tapa bilərik. Fərz eləyin ki, tapdıq və bizdə həmən cədvəl aşağıdakı şəkildə olduğu kimidir.

REGIONS TABLE

Gördüyümüz kimi regions cədvəli bizdə dimension cədvəldir, yəni özündə bir öncə baxdığımız fact cədvəlində olan foreign key sütununda mənası olmuyan dəyərlərin ətraflı məlumatlarını saxlıyan. Artıq fact dimension cədvəllərimizi tapdığımıza görə rahat bir şəkildə sorğumuzu yazıb onu proqramlaşdırılma tərəfində kodlaşdırmasını həyata keçirdə bilərik. Bu artıq sizin istifadə etdiyiniz proqramlaşdırılma dili tərəfinə qalıb.

SQL query
Java record file named ResponseStructureDto example

--

--

Anar Məmmədov
Anar Məmmədov

Written by Anar Məmmədov

Java Backend Developer wondering RDBMS and processing of structure any technology that is related backend.

No responses yet