Базе података

Повезивање табела

Поред табела, релациону базу података чине и везе између табела. Веза (релација) се успоставља између кључних поља табела (примарних и страних кључева).

Успостављање релација између табела у LibreOffice Base-у се врши тако што из менија Алатке изаберемо опцију Релацијe. Након задавања команде појављује се прозор као на слици 7.

Слика 7

Слика 7

Прозор Додај табеле садржи списак табела базе (појављује се аутоматски). У колико се деси да је овај прозор затворен могуће га је поново позвати кликом на алатку Додај табеле из линије са алаткама. Табеле се додају на радну површину тако што се обележе а затим кликне на дугме Додај или двоструким кликом на име табеле. Након што су табеле постављене на радну површину дијалошки прозор Додај табеле може се затворити (кликом на дугме Затвори).

Везу између две табеле најједноставније је успоставити превлачењем уз помоћ миша од поља једне табеле до поља друге табеле (нпр. притиснемо леви тастер миша на поље SifUc табеле Ucenik држимо притиснут тастер, превлачимо миш до поља SifUc табеле Ocene). Приликом повезивања поља одређује се и кардиналност везе (ово се врши по претпоставци да је веза типа примарни кључ – страни кључ веза типа 1:n). На слици 8 приказане су све релације у бази Skola.

Слика 8

Слика 8

Релације је могуће обрисати тако што десним кликом на линију која представља везу позовемо помоћни мени и изаберемо опцију Обриши.

Снимање успостављених релација: Датотека Сачувај, кликом на дугме Сачувај из линије са алаткама или комбинацијом тастера Ctrl+S.

Након снимања и затварања прозора за уређење релација потребно је у главном прозору сачувати новонастале измене.

Categories: Базе података | Поставите коментар

Креирање базе

Програм LibreOffice Base се користи за рад са базом података. Овај програмски пакет користи HSQL систем за управљање базама података. Програм захтева претходно инсталиран Java Developer Kit (JDK) који се може преузети са Oracle-овг сајта.

Приликом покретања програма LibreOffice Base појављује се помоћник за креирање саме базе (слика 1)

Слика 1

Слика 1

Потребно је одредити да ли се жели креирање нове базе (опција Направи нову базу), или пак желимо да учитамо постојећу базу података (опција Отвори постојећу датотеку базе) након чега је потребно кликом на дугме Отвори изабрати одговарајући фајл базе. Трећа опција нам омогућава да се повежемо на базу креирану у неком другом програму (dBase, MySQL, JDBC…). За креирање базе бира се опција Направи нову базу а затим кликом на дугме Напред.

Слика 2

Слика 2

У другом кораку помоћника (слика 2) потребно је одредити да ли регистрацију базе препустити помоћнику (опција Региструј базу уместо мене) или регистрацију одложити за касније. Регистровањем базе омогућује се приступ подацима и из других програма Libreoffice програмског пакета (Writer, Calc). Одређује се и шта након што је датотека базе сачувана. Опција Отворити базу за уређивање одмах након снимања датотеке отвара прозор за рад са базом (ову опцију потребно је оставити обележену), док се опцијом Покрени помоћник за израду табела покреће помоћник (wizard) за креирање табеле (ову опцију оставити непотврђену). Након завршетка кликом на дугме Заврши појављује се прозор за снимање саме датотеке базе где је потребно изабрати директоријум у коме се чува база и уписати име датотеке под којим ће база бити сачувана (за наш пример базу ћемо назвати Skola). Након што је завршен процес снимања појављује се главни прозор LO-Base (слика 3)

Слика 3

Слика 3

На левој страни прозора налазе се опције за рад са базом Табеле, Упити, Обрасци и Извештаји. Свака од ових опција садржи и одређене задатке које је могуће обавити и они се виде у десном делу прозора.

Први и оновни задатак је креирање табела као основних носиоца података у бази. Табелу је могуће креирати у графичком уређивачу, или преко помоћника за израду табела (wizard). Кликом на опцију Направи табелу у графичком уређивачу појављјује се прозор за креирање табеле (слика 4)

Слика 4

Слика 4

Овде је потребно одредити називе поља и њихове типове. У делу Име поља уписује се назив под којим ће се приказивати поље. За називе је потребно изабрати такво име које ће описати сврху поља (нпр за поље у које се уноси име и презиме ученика за име поља можемо изабрати Ime или Ime_Prezime или ImePrezime). У пољу Врста поља, потребно је из падајуће лисет изабрати одговарајући тип поља. За типове могуће је поставити целобројне вредности (Ситни цео, велики цео, Целобројни, Мали цео), реалне (Број, Децимално, Покретни зарез, Реални, Двострука прецизност), текст (Текст фиксни и два типа Текст поља Varchar текст у коме се прави разлика између малих и великих слова и VARCHAR_IGNORECASE текст у коме не постоји разлика између малих и великих слова), формати за датум и за време као и заједнички формат Датум и време, логички (Да/Не).

За свако од поља могуће је и прецизније одредити сам изглед поља. Тај део се обавља у доњем делу прозора.

У пољу Aутоматска вредност (слика 5), појављује се само код поља која су дефинисана као целобројна, избором опције Да вредност поља ће бити уписивана аутоматски тако што ће у сваком следећем реду поље бити увећано за 1. Ова опција се обично користи код кључних поља.

Поље Потребан је унос поставља се на Да када желимо да обезбедимо обавезан унос датог поља. Наиме, код овако обележених поља систем за управљање базом неће дозволити упис слога у колико је ово поље празно.

Дужина је поље које се користи за текстуална поља и њиме се одређује максимална дужина текста који је могуће уписати.

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

Сваки од типова поседује неке своје специфичности које се могу подешавати. Кликом на дугме са три тачкице поред прозора за едитовање Пример формата појавује се прозор за форматирање поља идентичан као и код форматирања ћелије у програму за рад са табелама где је могуће додатно дефинисати само поље (изабрати фонт којим ће се уписивати, број децимала за реалне бројеве, број водећих нула – нуле које се исписују испред целог дела броја нпр 002 има три водеће нуле…).

Како свака табела мора имати примарни кључ потребно га је дефинисати тако што се десним кликом на почетак реда из помоћног менија изабере опција Примарни кључ након чега се појављује мала иконица кључа како би се ово поље разликовало од других.

За наш пример креирамо табелу са пољима као из табеле

Име поља

Врста поља

Додатне опције

SifUc

Целобројни

Кључ, три водеће нуле

Ime

Текст

Дужина 60

God

Ситни цео

SifSmer

Ситни цео

након креирања требало би да добијете прозор као на слици 5

Слика 5

Слика 5

Након дефинисања поља табелу је потребно снимити. Снимање табеле се врши тако што из менија Датотека изаберемо опцију Сачувај, или преко тастатуре комбинацијом тастера Ctrl+S или кликом на алатку Сачувај у линији са алаткама. У дијалошком прозору који се појављује потребно је уписати име табеле (за наш пример уписати име Ucenik). Сада је могуће затворити прозор за креирање табеле.

У колико није дефинисан примарни кључ појавиће се одговарајућа порука и могућност аутоматског дефинисања кључа (ова опција се не препоручује).

У главном прозору Base-a сада се појављује табела. Десним кликом на име табеле могуће је изабрати једну од опција за брисање, преименовање или измену (структуре).

Избором опције Отвори или двоструким кликом на име табеле отвара се табела са дефинисаним пољима у које је могуће уписивати податке (слика 6).

Слика 6

Слика 6

Како се база обично састоји од више табела за наш пример потребно је конструисати и следеће табеле:

Табела: Smer

Име поља

Врста поља

Додатни опис

SifSmera

Ситни цео

Кључ, поље са 3 водеће нуле

NazSmer

Текст поље [VARCHAR]

Дужина 50

Табела: Ocene

Име поља

Врста поља

Додатни опис

SifOcene

Цео број

Кључ

SifUcenika

Цео број

SifPredmeta

Ситни цео

Ocena

Реални

Табела: Predmet

Име поља

Врста поља

Додатни опис

SifPred

Ситни цео

кључ

NazPred

текст

Categories: Базе података | Поставите коментар

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

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

Табела Ucenik

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

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

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

IndexTabela

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

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

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

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

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

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

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

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

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

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

Релационе базе података – везе

Како базу података чини више од једне табеле основу релационих база података чине и везе – релације између табела. Овај појам се уводи како би се објаснио однос две табеле.

VezeTabele

Поље sifSmer табеле Ucenik садржи податак о томе који смер је уписао одређени ученик али не и информацију о називу смера. Имена смерова су уписана у табели Smer. Да би смо дошли до информације о називу смера потребно је извршити повезивање ове две табеле. Повезивање се врши преко поља SifSmera табеле Smer и поља sifSmer табеле Ucenik. Овде је важно приметити да скуп вредности поља sifSmer табеле Ucenik мора бити подскуп скупа поља SifSmera табеле Smer (референцијални интегритет).

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

Треба нагласити да однос главни-потчињени зависи само од улоге табела у датој вези, једна табела може бити главна у односу на једну табелу а потчињена у односу на другу.

Постоје четири типа везе између табела релационе базе података:

  • један према један – сваком слогу једне табеле одговара само један слог друге табеле;

  • један према више – једном слогу главне табеле може одговарати више слогова потчињене табеле;

  • више према једном – више слогова главне табеле може одговарати један исти слог потчињене табеле;

  • више према више – један слог главне табеле повезан је са више слогова потчињене и један слог потчињене повезан је са више слогова главне табеле

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

Релационе базе података – Табела

Релациону базу података чини скуп логички повезаних табела.

У терминологији релационих база под појмом табела подразумева се дводимезиона табела која описује неки објекат (ученик, аутомобил …). Свака табела мора имати своје име на основу кога јој се корисник обраћа. Име мора бити једнозначно (у бази не могу постојати две табеле са истим именом). Мада не постоји стриктно правило за именовање табела, добра пракса је да се табеле именују у зависности од тога какав објекат треба да опишу. На пример, ако се у табели налазе подаци о ученицима једне школе табелу можемо назвати и „А”, табелу о њиховим оценама „В”, табелу са називима предмета „С” итд. Међутим, овако именовање табела може у каснијем раду довести до забуне, па је логичније табеле именовати са „Ucenik”, „Ocene” и „Predmet” или „TabelaUcenik”, „TabelaOcene” и „TabelaPredmet” (комбинација малих и великих слова је употребљена ради веће прегледности). Код именовања није дозвољено користити размаке приликом именовања табела.

Као што је већ речено, табела би требало да описује неки објекат. У зависности од намене базе тај опис може бити мање или више детаљан. У наредној дат је пример за табелу чува податке о ученицима:

Слика 1: Пример табеле

Слика 1: Пример табеле

Објекат је описан следећим пољима: RedBr, MaticnaKnjiga, Prezime, Ime, Staratelj, DatumRodjenja, MestoRodjenja, Fotografija. Ова поља су прикладна за ову врсту табеле, док би у неким другим случајевима исти овај објекат (ученик) могао бити описан и другим пољима. Избор поља којима ће бити описан неки објекат зависи од потреба корисника базе и детаља којима је потребно описати неки објекат. Свако од поља табеле мора бити дефинисано и то са:

  • име поља – служи да се именује дато поље. Приликом именовања препоручује се додела описних имена. Нпр у претходном примеру поља су могла бити именована и са „А”, „B”, „C”, „C”, „D”, „E”, „F”, „G”, „H” што представља коректно написана имена али је крајње непрегледно у каснијем раду.

  • тип поља – описује врсту садржаја (текст, број, датум, фајл-слика…)

  • скуп ограничења – одређује се скуп из ког се може узети вредност неког поља (нпр поље RedBr позитивне целобројне вредности или за име старатеља ограничење дужине стринга)

За свако поље придружује се одрећена вредност (конкретно име и презиме ученика, име старатеља, датум рођења…). Сваки ред табеле описује конкретно појављивање неког објекта (ученик Јовић, Радослав Марко рођен 26. јуна 2005 године у Београду).У терминологији базе података редови табеле зову се слогови. Слог се описује вредностима поља. Сви слогови табеле морају имати исти скуп поља (не може се за једног ученика тражити само место рођења, а за другог и место и општина рођења).

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

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

Интегритет базе података

Да би информације које се чувају у бази података биле једнозначне и непротивречне морају се установити нека ограничења. Ова ограничења дају логичку основу да би се обезбедила коректност самих података односно њихов интегритет.

Најважнија ограничења интегритета обезбеђују:

  • категоријални интегритет;

  • референцијални интегритет;

Ограничење категоријалног интегритета може се дефинисати на следећи начин: ни један слог табеле не може да има NULL вредност примарног кључа (поље не сме бити празно). Због тога СУБП не дозвољава да се унесе слог у базу све док се не додели одговарајућа вредност примарног кључа (различита од NULL и различита од вредности кључа било ког другог постојећег слога унутар табеле)

Референцијални интегритет поставља ограничења везана за спољашњи кључ. У изведеној табели спољашњи кључ може имати само вредности примарног кључа главне табеле.

Integritet

Табела стипендије садржи сложени кључ који се састоји од 2 поља: SifraUc и Davalac. SifraUc је уједно и секундарни кључ који служи да се табела STIPENDIJE (изведена табела) повеже са табелом UCENICI (главна табела). Према правилу референцијалног интегритета у табели STIPENDIJE у пољу SifraUc не може постојати вредност која се не појављује у табели UCENICI поље SifraUc.

Обезбеђивање референцијалног интегритета је веома сложено. При додавању или измени слогова изведене табеле мора се водити рачуна да се не појаве некоректне вредности секундарног кључа.

При брисању података главне табеле треба се применити једно од следећих правила:

  • забранити брисање слогова главне табеле који су повезани са неким слоговима изведене табеле све док се прво не избришу слогови изведене табеле.

  • у свим слоговима изведене табеле који су у вези са слоговима главне табеле доделити NULL вредности секундарним кључевима

  • применити каскадно брисање – приликом брисања слогова главне табеле брисати и све са њима повезане слогове изведене табеле.

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

Типови база података

За разне циљеве неопходно је користити различите моделе БП. Положај БП у значајној мери утиче на природу апликације која ће обрађивати податке који се налазе у бази. Апликација остварује приступ БП посредством СУБП (систем за управљање базама података). СУБП је скуп динамичких библиотека и драјвера који обезбеђују приступ подацима. Разни кориснички пакети користе различите СУБП (Microsoft Access; Borland – Database Engine…). Апликација предаје захтев бази и добија податке од базе посредством СУБП.

У употреби су следеће архитектуре система за управљање базама података:

Локална архитектура

LokalnaArhitektura

Слика 1: локална архитектура

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

Фајл – сервер архитектура

fajlServerArhitektura

Слика 2: фајл-сервер архитектура

БП се налази на удаљеном рачунару – серверу. Сама апликација се налази на корисничким рачунарима. СУБП се обраћа серверу и од њега добија податке на основу кога се прави копија БП на корисничким рачунарима. Прављење копија се одвија периодично као и ажурирање БП на серверу. Комуникација се одвија посредством локалне мреже.

Предност овакве архитектуре је што више корисника може да ради истовремено са једном базом. Недостатак се огледа у томе што се сва обрада врши на корисничким рачунарима тако да измене које се изврши један корисник за неко време нису доступне осталим корисницима. Ово ограничење је неопходно због смањења саобраћаја у мрежи.

Клијент – сервер архитектура

Слика 3: двослојна клијент-сервер архитектура

Слика 3: двослојна клијент-сервер архитектура

Код ове архитектуре на серверу се налазе и бара података и апликација која управља базом (сервер БП) извршавајући захтеве корисника који су у мрежи, враћајући им тражене резултате у облику скупа слогова. Овде апликација корисника не ради директно са базом. Комуникација између клијентске апликације и БП се одвија на следећи начин: Захтев за неки податак (или скуп података) форимара се на језику SQL (специјални језик за рад са БП). SQL захтев се прослеђује удаљеном SQL серверу (сервер БП) који представља специјалну апликацију која управља удаљеном БП и обезбеђује извршење захтева и прослеђивање резултата кориснику. Ово је тзв. „двослојна” архитектура – слој клијентске апликације и слој сервера БП.

Слика 4: трослојна клијент-сервер архитектура

Слика 4: трослојна клијент-сервер архитектура

Код „тослојне архитектуре апликација која треба да обезбеди приступ подацима и реализује њихову обраду заједнички за све апликације налазе се на серверу апликације и доступни су свим корисницима. Сервер апликација води рачуна о сигурности базе и контролише приступ баз

и, најчешће путем шифри (password-а). Ова архитектура дозволјава блокирање на нивоу слога, па чак и на нивоу поља.

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

Предности овакве организације су:

  • Растерећење сервера БП од извршавања дела операција к

    оје преноси на сервер апликација;

  • Смањење величине клијентских апликација за део програма који преноси на сервер апликација:

  • Једнообразно понашање клијената

Основни недостатак ове архитектуре је недостатак поузданости. Наиме „падом” сервера престаје да функционише и цео систем кога он опслужује.

Дистрибуирана архитектура

У мрежи ради неколико сервера, а табеле БП су распоређене између њих ради подизања ефикасности. Највећи недостатак ове архитектуре је компликовано администрирање и потреба за високим перформансама серверских рачунара.

Интернет архитектура

База података налази се на мрежи. Приступ се реализује посредством браузера по стандардном протоколу. У овој архитектури се приступ бази може реализовати и са рачунара стандардних перформанси. Стандардна екстензија табела у овој архитектури је xml.

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

Нормализација

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

Лоше пројектована логичка структура базе података може довести до тога да се појаве не само аномалије у њеном одржавању, већ се могу појавити и проблеми у креирању извештаја. Проблеме редудансе, одржавања и извештаја могу се представити следећом ненормализованом табелом:

Ucenik

SifUc

Ime

God

SifSmer

Smer

SifPred

NazPred

Ocena

21

Ajdacic Ivana

2

01

prirodni

002

Matematika

3

21

Ajdacic Ivana

2

01

prirodni

005

Informatika

4

21

Ajdacic Ivana

2

01

prirodni

012

Sociologija

4

77

Babic Milos

3

02

drustveni

012

Sociologija

2

77

Babic Milos

3

02

drustveni

002

Matematika

2

36

Gagic Ana

2

01

prirodni

005

Informatika

5

36

Gagic Ana

2

01

prirodni

008

Hemija

4

36

Gagic Ana

2

01

prirodni

009

Fizika

3

36

Gagic Ana

2

01

prirodni

012

Sociologija

5

Проблеме са понављањем података лако је уочити у оваквој табели. За сваког ученика понављају се следећи подаци Ime, God, SifSmer, Smer

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

Аномалија у уклањању неког слога – ако је за један предмет (физика) уписана оцена само за једног ученика и ако он напусти школу, губе се и све информације о том предмету. У табели Ucenik може се уочити исти проблем и са подацима о смеру.

Аномалије приликом измене података најуочљивије су у колонама Smer и NazPred. Ако се промене називи смера или предмета, у самој бази њихова измена мора се вршити на онолико места колико је ученика на датом смеру или за колико ученика је уписана оцена за дати предмет.

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

Први корак код нормализације је да се раздвоје групе са понављањем. Другим речима потребно је уочити табелу у табели и издвојити је у посебну табелу. У нашем примеру са табелом Ucenik уочавамо да за сваког ученика постоји табела са списком предмета за које су уписане оцена. Дакле, потребно је издвојити такву табелу и креирати нову:

Ucenik

Ocene

SifUc

Ime

God

SifSmer

Smer

SifUc

SifPred

NazPred

Ocena

21

Ajdacic Ivana

2

01

prirodni

21

002

Matematika

3

77

Babic Milos

3

02

drustveni

21

005

Informatika

4

36

Gagic Ana

2

01

prirodni

21

012

Sociologija

4

77

012

Sociologija

2

77

002

Matematika

2

36

005

Informatika

5

36

008

Hemija

4

36

009

Fizika

3

36

012

Sociologija

5

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

Посматрањем табеле Ocene могу се уочити следећи проблеми:

  • не могу се додати подаци о новом предмету ако није уписана оцена за бар једног ученика

  • ако се из табеле уклони податак о ученику за кога је једино уписана оцена за неки предмет (Fizika) губе се све информације о датом предмету

  • ако се мења назив предмета то се мора учинити на онолико места за колико је ученика уписана оцена (за предмет Sociologija измена би се вршила на три места)

Овакви проблеми решавају се на тај начин што се посматрају колоне које нису нити могу бити нека врста кључа (примарни, спољашњи) било да је реч о једноставном или сложеном кључу. Уочава се да ли постоји нека врста зависности таквих поља од примарног кључа и поља код којих постоји таква врста зависности остављају се у табели док се остала поља „пребацују” у нову табелу.

За наш пример поља која нису нити могу бити кључна поља у табели Ocene су поља NazPred и Ocena. Поставља се питање да ли поље Ocena у потпуности зависи од сложеног кључа SifUc и SifPred. Свакако да ће вредност поља Ocena зависити од ученика и предмета (потпуна функционална зависност). Поље NazPred зависи од поља SifPred који је део примарног кључа али не и од поља SifUc (оваква врста зависности зове се непотпуна функционална зависност). Дакле код овог поља не постоји потпуна зависност од примарног кључа и такво поље се „избацује” из табеле и креира се нова табела са подацима о предметима. Као последица овог „раздвајања” добијају се следеће табеле:

Ocene

Predmet

SifUc

SifPred

Ocena

SifPred

NazPred

21

002

3

002

Matematika

21

005

4

005

Informatika

21

012

4

012

Sociologija

77

012

2

008

Hemija

77

002

2

009

Fizika

36

005

5

36

008

4

36

009

3

36

012

5

Након избацивања поља код којих постоји непотпуна функционална зависност добили смо табеле за које се каже да се налазе у другој нормалној форми.

Вратимо се на табелу Ucenik. И овде је могуће уочити следеће проблеме:

  • подаци о називу смера се понављају

  • не могу се додати подаци о новом смеру у колико га није уписао ни један ученик,

  • ако се из табеле избрише податак о ученику који је једини уписао дати смер, губе се и информације о датом смеру

  • ако се промени назив смера, измена се мора реализовати на онолико места колико је ученика уписано на дати смер.

Уочимо следећу врсту зависности: Име смера, поље Smer, зависи од шифре смера, поље SifSmer (оваква зависност зове се функционална зависност), а вредност поља SifSmer зависи од поља SifUc. Оваква врста зависности зове се тразитивна зависност и њена појава доводи до горе поменутих проблема.

Оваква зависност се решава тако што се у једној табели оставе примарни кључ и сва поља која нису транзитивно зависна, а у другу табелу издвајају се све функционалне зависности које су довеле до транзитивне зависности.

Као резултат тога добијају се следеће табеле:

Ucenik

Smer

SifUc

Ime

God

SifSmer

SifSmera

NazSmer

21

Ajdacic Ivana

2

01

01

prirodni

77

Babic Milos

3

02

02

drustveni

36

Gagic Ana

2

01

За овакве табеле каже се да се налазе у трећој нормалној форми.

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

LibreOffice Base

Упутства за рад са овим програмом:

Књига: OpenOffice.org – Base – rad sa bazama podataka  аутора Игора Коса, ; издавач: HrOpen; ИСБН: 978-953-7560-02-7 на хрватском језику. Издата је по Creative Commons лиценци.

Књига: Base Handbook – Managing your data групе аутора; на енглеском језику. Услови коришћења су по Gnu/GPL лиценци или Creative Commons лиценци. У књизи су коришћени следећи примери: Media_without_macros.odb и Media_with_macros.odb

Питања можете постављати на форуму који је на српском језику

Видео туторијали на енглеском језику: овде

 

Categories: Базе података | Поставите коментар

Базе података и системи за управљање базама података

Базу података чини скуп логички повезаних података и представљају неке аспекте реалног света (нпр подаци о ученицима и наставницима неке школе).

Приликом креирања базе мора се водити рачуна о концепту „независности” података од конкретног програма. Наиме, корисници могу приступати бази података првенствено преко упитника, и то у зависности од самог корисника. Различитим корисницима се омогућавају различите врсте упита (ученике интересује распоред часова а наставнике распоред по одељењима).

За рад са базама података користи се скуп програма који се зову систем за управљање базама података -СУБП (DataBase Managament System – DBMS). Овакав скуп програма треба да обезбеди:

  • дефинисање и креирање базе;

  • чување базе на једном или више места;

  • унос, измену и брисање података;

  • приступање скупу података у односу на корисника.

Општа архитектура СУБП која омогућава извршење ових задатака реализована је кроз три нивоа

  • Физички ниво – дефинише се начин на који су подаци физички организовани на спољашњим јединицама меморије (дефиниције табела и типови поља унутар табела)

  • Концептуални ниво – дефинише се логичка структура података (кључеви, индекси…), везе између података и управљање подацима

  • Кориснички ниво – дефинише се логичка структура података погодна за специфичне захтеве (упити)

Код сложенијих база овакав систем теба да обезбеди и

  • Конкурентну обарду – у колико више програма истовремено захтева приступ истим подацима мора се обезбедити да се ови конфликтни захтеви успешно реше

  • Заштиту података – код неких база које садрже „осетљиве” податке (здравствени картони) неопходно је заштитити податке од неовлашћеног приступа.

  • Опоравак базе – пошто се у базама сваки податак чува само на једном месту неопходно је периодично копирање базе како не би дошло до трајног губитка података (нпр. банкарске трансакције).

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

Create a free website or blog at WordPress.com.