Индексирање табеле

Слогови табеле чувају се на диску без унапред задатог редоследа, односно онако како се уносе. Овако уређена табела је непрегледна и тешка за претрагу.

Табела Ucenik

Код оваквих табела претрага неког конкретног податка своди се на претраживање целе табеле. Нпр, у колико тражимо ученика Максимовић Катарину, потребно је поћи од првог слога, упоредити презиме датог ученика са задатом вредношћу и у колико је услов претраге задовољен зауставља се претрага и курсор (показивач на тренутно активном слогу) остаје на датом слогу, у супротном курсор се помера на следећи слог и поново се врши упоређивање. Овај поступак се понавља све док се не пронађе слог који задовољава дате услове (у нашем примеру курсор би се зауставио на предпоследњем слогу).

Код табела са малим бројем слогова овакав начин претраге не представља проблем. Повећањем броја уписаних података (слогова) повећава се и време претраге што може довести до успоравања које није прихватљиво. Зато се уводе индекси и индексиране табеле. Индекс се поставља на неко од поља што као последицу производи индексирану табелу која је уређена по датом пољу. Индексирана табела се састоји од уређених поља основне табеле по коме је постављен индекс и поља са позицијама слогова у оригиналној табели.

Индекс се може поставити и по више поља. Тада се уређење врши по првом пољу индекса а у колико постоји више идентичних вредности по другом итд. Приликом претраге курсор се налази у индексираној табели. Како сваки слог индексиране табеле садржи и позицију траженог слога оригиналне табеле он постаје доступан за рад.

IndexTabela

Ако сада тражимо ученика Максимовић Катарину претрага се пребацује на индексирану табелу. Курсор се поставља на прво место и упоређује се поље Prezime индексиране табеле са траженим условом претраге. Како није задовољен курсор се поставља на следећи слог и тако све док се не дође до првог ученика са траженим презименом. Тада се очитава позиција датог слога у главној табели и активни курсор главне табеле се поставља на позицију 4 где се проверава име ученика. Како овај услов није задовољен курсор индексиране табеле се помера на следећи слог итд, све док се не пронађе тражени податак.

Још једну од предности индексирања најбоље можемо уочити на следећем примеру: пронађи ученика Максимовић Немању. Ако претражујемо оригиналну табелу курсор ће поћи од првог до последњег слога а затим исписати поруку да дати ученик не постоји. Претрага индексиране табеле зауставиће се на након последњег слога са презименом Максимовић и исписати поруку да дати слог не постоји.

Како постоје различити системи за претрагу табела (индексираних) време претраге могуће је додатно смањити. Нпр, постави курсор на средину табеле па упореди да ли се тражени слог налази изнад или испод текућег слога. Овај поступак се понавља све док се не задовољи услов претраге. Други начин је померање курсора за одређену вредност, нпр помери курсор за 5 места, провери да ли се тражени слог налази изнад или испод текућег слога, у колико је испод помери курсор за наредних 5 места, у колико је изнад помери курсор за 3 места итд., све док не пронађе слог који задовољава услов претраге

Индексирана табела се обично учитава у радну меморију рачунара (RAM).

У зависности од тога како је дефинисан, индекс може бити:

  • прости – поставља се на једно поље оригиналне табеле и не мора бити јединствен

  • сложени – поставља се на више поља и не мора бити јединствен

  • прости јединствен – поставља се на једно поље и мора бити јединствен. То значи да не могу постојати два слога са истом вредношћу индексираног поља.

  • сложени јединствен – поставља се на више поља и мора бити јединствен. То значи да не могу постојати два слога са истом комбинацијом поља (могу постојати два ученика са презименом Максимовић, али не и два ученика Максимовић Новак – у колико је индекс постављен по пољима Prezime Ime).

Categories: Базе података | 1 коментар

Кретање чланака

1 thoughts on “Индексирање табеле

  1. Повратни пинг: Рад са базама података – Рачунари и програмирање

Постави коментар

Блог на WordPress.com.