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

Из Википедије, слободне енциклопедије

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

Управљање оваквим базама података се реализује преко система за управљање релационим базама података. Међу најпопуларнијим таквим системима данас су: Microsoft SQL Server, Oracle Database, MySQL и други. Већина тих система користи упитни језик SQL за манипулацију подацима.

Кратак историјат[уреди]

Појам релационог модела почиње да се јавља седамдесетих година прошлог века, а за његовог оснивача се сматра Едгар Код. Он је био руководилац у једном од сектора IBM-а, задуженог за производњу рачунарских хард дискова. У то време, базе података су се заснивале на навигационом моделу, којег је Едгар Код сматрао неефикасним, пре свега због слабих могућности претраживања података у њима. Стога је, 1970. године, објавио велики број кратких дела о релационом моделу организације података, која су представљала увод у његово прво велико дело те тематике „Релациони модел за организацију велике количине података“. У том делу је представио модел, по којем би се подаци складиштили у табеле уместо у повезане листе, које су представљале основу навигационог модела. Навигациони модел је био неефикасан и приликом чувања података у којима би неки слог морао бити остављен празан. Релациони модел би то решавао смештањем података у одређени број нормализованих табела, с ‘тим да би се ти опциони подаци који не морају имати вредност смештали ван главне табеле. Такође, Код је у свом делу навео и велике предности релационог модела у односу на навигациони, које се односе на смештање, брисање и читање података из базе, јер не би постојала потреба за константним преправљањем лнкова и показивача у чворовима навигационог модела. За манипулацију подацима у оваквим базама, Код је предложио језик који се касније развио у SQL. IBM је касније, на основу Кодове књиге, развио прве системе за управљање релационим базама података, PRTV и IBM Business Systems 12.

Релација[уреди]

Свака релација може без икаквих проблема да се представи у табеларном облику, али и поред тога, релација и табела нису исто. То је из разлога што је код табела битан редослед редова и колона, док код релација није битан редослед атрибута и н-торки. На пример, табела 1 има колоне са редоследом: име, презиме, јмбг. Табела 2 има колоне са редоследом: јмбг, презиме, име. Те две табеле се не сматрају истим, без обзира што имају исте називе колона. И поред тога што релација и табела нису синоними, данас се углавном свака релација назива табелом, тј. њени елементи се поистовећују са елементима који чине једну табелу. Из тог разлога су у следећој табели дати појмови из релационог и табеларног модела који се односе на исто.

Табела Релација
Ред табеле Н-торка
Колона, назив колоне, вредност колоне Атрибут, назив атрибута, вредност атрибута
Табела Базна релација
Скуп назива колона Релациона шема
Поглед, резултат упита Изведена релација

Основни појмови[уреди]

 (4,3,6,2,1)
  • Атрибут представља име којим се у релационом моделу, идентификује сваки од елемената једне н-торке. У доњем примеру атрибути су "студент", "статус" и "просек" а елементи н-торке су "Марко", "Буџет" и "8.2".
 (Студент: "Марко" , Статус: "Буџет" , Просек: 8.2)
  • Релација се дефинише као скуп н-торки који имају исте атрибуте којима су идентификовани њихови елементи, и који узимају вредности из истих домена. Пример релације:
 (Студент: "Марко" , Статус: "Буџет" , Просек: 8.2)
 (Студент: "Јован" , Статус: "Буџет" , Просек: 9.1)
 (Студент: "Бојан" , Статус: "Самоф" , Просек: 7.8)

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

  • Домен представља скуп вредности које може да има конкретни елемент н-торке. Домени могу бити семантички и предефинисани. Предефинисани домени већ постоје у језику базе података и неки примери тих домена су Integer који представља скуп целих бројева, Float који представља скуп реалних бројева, DateTime за представљање датума и времена у различитим форматима, и други. Семантичке домене дефинише сам корисник.

Примарни кључ[уреди]

У свакој релацији мора да постоји један или више атрибута заједно, чије вредности јединствено идентификују сваку н-торку у тој релацији. Тај атрибут, или група атрибута се назива примарним кључем релације. У случају када један атрибут јединствено идентификује сваку н-торку у релацији имамо прост примарни кључ, а ако је идентификују два или више атрибута, онда је у питању сложени примарни кључ. Примарни кључ је дакле скуп од К елемената неке релације, који морају да задовољавају следећа два услова: особину јединствености и особину нередудантности. Особина јединствености подразумева да не могу да постоје било које две н-торке са истом вредношћу атрибута „К“. Особина нередудантности подразумева да ако се изостави било који атрибут из К, губи се особина јединствености. У доњем примеру, атрибут "Шифра" представља прост примарни кључ релације.

 (Шифра: 432 , Студент: "Марко" , Статус: "Буџет" , Просек: 8.2)
 (Шифра: 436 , Студент: "Јован" , Статус: "Буџет" , Просек: 9.1)
 (Шифра: 527 , Студент: "Бојан" , Статус: "Самоф" , Просек: 7.8)

Спољни кључ[уреди]

Спољни кључ представља атрибут (или групу атрибута) неке релације Р1, који у њој није примарни кључ, али јесте у некој другој релацији Р2. С тим у вези, релација Р1 се повезује са релацијом Р2 преко спољног кључа. Да би веза између те две релације била исправна, морају се задовољити правила референцијалног интегритета. Укратко, под референцијалним интегритетом се подразумева да све вредности које узима атрибут који представља спољни кључ, морају да постоје и у релацији у којој је тај атрибут примарни кључ. У примеру који следи, атрибут "ШифраСмера" представља спољни кључ у првој релацији, и у овом случају су задовољена правила референцијалног интегритета.

SpoljniKljuc.PNG


Манипулисање над подацима у релационом моделу[уреди]

Формализми за манипулисање подацима, који су саставни део релационог модела су : релациона алгебра и релациони рачун. Упитни језици који су у саставу конкретног система за управљање релационим базама података се заснивају на једном од ова два формализма, или на њиховој комбинацији.

Релациона алгебра[уреди]

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

Пројекција[уреди]

Узмимо на пример неку релацију R са њеним атрибутима {A1, A2, … , An}. Нека X представља подскуп скупа атрибута {A1, A2, … , An}, a Y разлику између скупа X и скупа {A1, A2, … , An}. Тада се релација R може представити као R(X,Y). Дакле, резултат пројекције релације R на скуп атрибута X је релација која укључује само атрибуте из скупа X.

R[X]=\{x \vert x \in X \and \exists y \in Y, (x,y) \in R(X,Y)\}

Рестрикција[уреди]

Операцијом рестрикције се бирају н-торке у целости које задовољавају логички израз наведен у ознаци операције. Аргументи логичког израза могу бити: поређење вредности два атрибута задате релације и поређење вредности једног атрибута задате релације са неком константом. Операције логичког израза су логичке операције: AND, OR, NOT. Нека је, на пример, θ релацијска операција из скупа {<,>,≤,≥,≠}, и нека су {Ai, Aj} атрибути неке релације R који су дефинисани над истим доменом. Рестрикција се тада представља следећим изразом:

R[A_i\;\ominus\;A_j]=\{x \vert x \in R \and x[A_i]\;\ominus\;x[A_j]\}

Релациона унија, пресек, разлика и Декартов производ[уреди]

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

R \cup S=\{x \vert x \in R \text{ ili } x \in S\}

Под истим условима се реализују и пресек и разлика.
Декартов производ релација R1 и R2 које имају n1 и n2 атрибута се дефинише као релација R1xR2 са n1+n2 атрибута, што практично значи да су само на атрибуте прве релације дописани атрибути друге релације.

Слободно спајање[уреди]

Операција слободног спајања која се примењује на две релације R и S које имају m и n атрибута, даје као резултат релацију са m+n атрибута. Нека је θ релацијска операција из скупа {<,>,≤,≥,≠}. Тада се операција слободног спајања релација R и S по атрибутима Ai и Bj реализује по следећој формули:

R[A_i \ominus B_j]S=\{(r,s) \vert r \in R \and s \in S \and r[A_i] \ominus s[B_j]\}

Природно спајање[уреди]

Под природним спајањем се подразумева спајање по једнакости, и може се извести по једнакости појединачних атрибута две релације, или по једнакости подскупова одређених атрибута. Нека имамо релације R и S са скуповима атрибута {A1, A2, … , An} и {B1, B2, … , Bm}. Нека је X подскуп атрибута релације R, а Y подскуп атрибута релације S. Нека је Z разлика између X и скупа атрибута прве релације R, а W разлика између Y и скупа атрибута друге релације S. Релације R и S се тада могу представити као R[X,Z] и S[Y,W]. Тада се операција спајања релација R и S по скуповима атрибута X,Y дефинише на следећи начин:

R[X*Y]S=\{(z,x,w)\vert(z,x) \in R \and (y,w) \in S \and x=y\}

Релационо дељење[уреди]

Операција дељења релације R(X; Y) по задатом скупу атрибута Y другом релацијом Т даје резултат који се састоји од пројекција н-торки релације R на атрибуте X и то само оних пројекција н-торке које се декартовски помножене са сваком врстом релације Т садрже у релацији R. Нека је R релација са атрибутима {A1, A2, … , An}, Y подскуп скупа {A1, A2, … , An}, а X = {A1, A2, …, An} \ Y. Нека релација T(Z1, Z2, ... , Zk) има исти број атрибута као скуп Y при чему су парови одговарајућих атрибута дефинисани над истим доменима. Операција дељења релације R по скупу атрибута Y са релацијом T дефинише као:

R[Y \div Z]T=\{x \vert x \in R[X] \and \{x\} \times T(Z) \subseteq R(X,Y)\}

Релациони рачун[уреди]

Релациони рачун је други формализам за манипулисање подацима. Релациона алгебра даје скуп операција за изградњу релације резултата, а релациони рачун пружа нотацију за описивање својстава те релације резултата. Релациони рачун се базира на предикатском рачуну првог реда. Едгар Код је дао две варијанте: релациони рачун н-торки и релациони рачун домена.

Релациони рачун н-торки[уреди]

Релациони рачун н-торки представља формализам за израду израза релационог рачуна. Најважније његово својство је н-торна променљива. То је променљива која је везана за одређену релацију, и као вредности узима само њене н-торке. Релација за коју је везана н-торна променљива се назива дијапазон н-торне промељиве.

Израз релационог рачуна н-торки је облика { (t1,t2,…,tk) : f } , при чему важи следеће:

  1. t1,t2,…,tk су н-торне променљиве, и њихов скуп се назива „циљна листа“.
  2. f је формула, односно квалификациони израз који се гради од „атома“ и операција на сл. начин:
    1. Слободне променљиве у формули f су оне које се налазе у циљној листи.
    2. Ако је R релација а s н-торна променљива везана за њу, то везивање се означава са R(S)
    3. Ако су S и U н-торне променљиве, а константа, θ операција поређења {<,>,≤,≥,≠} онда ознака „S[i] θ U[j]“ означава поређење и-те променљиве компоненте S са ј-том променљивом компоненте U, и назива се атом поређења.
    4. Сваки атом је формула. Све н-торне променљиве атома су слободне променљиве у тој формули.
    5. Ако су f и g формуле, онда су формуле и: f AND g, f OR g и NOT f, (Еs)(f) i (Еs)(f). Појављивање променљиве је везано у (Еs)(f) и (Еs)(f).


Пример: Имамо релације: P koja представља песму, I која представља извођача и KI која дефинише који извођач изводи коју песму. Нека су r, s, t имена н-торних променљивих, и P(r), I(t), KI(s) атоми њихових припадности релацијама. Означимо са r[i] i-ти атрибут променљиве r. Тада су примери израза релационог рачуна:

fr[2] : K(r)g (називи свих песама)

fr[2] : K(r) AND r[3] =’ROCK’g (наслови свих рок песама)

Релациони рачун домена[уреди]

Код релационог рачуна домена, променљива је дефинисана над доменом атрибута(доменска променљива), а не над релацијом. Израз релационог рачуна домена има следећи облик:
{X1, X2, …, XK | f}


При чему важи:

  1. x1, x2, … , xk су доменске променљиве.
  2. F је формула релационог рачуна домена чије су слободне променљиве x1, x2, … ,xk. Та формула се дефинише на исти начин као и код релационог рачуна н-торки, са мало модификованим обликом.
    1. Ако је R релација степена n, а y1, y2, … , yn константе или доменске променљиве над доменима атрибута релације, онда је R(y1, y2, … ,yn) атом. Вредности yi морају бити изабране тако да y1, y2, …, yn представља н-торку релације R.
    2. Ако су x, y доменске променљиве, „a“ константа, а θ операција поређења, онда су x θ a, x θ y атоми. Њихово значење је да пар вредности x,y мора бити изабран тако да је поређење θ тачно.


Упитни језици[уреди]

Упитни језици су намењени за комуникацију са релационом базом података, тј. за креирање релационих шема и ажурирање и читање података из релација. Могу се најопштије класификовати на: језике добијене надградњом процедуралних програмских језика, језике засноване на релационом рачуну домена или н-торки, језике засноване на релационој алгебри и језике који се заснивају на комбинацији релационе алгебре и релационог рачуна. Најзаступљенији упитни језик данас је SQL(Structured Query Language), развијен 80-их година прошлог века од стране истраживачке IBM лабораторије у Сан Хозеу у Калифорнији. Подржавају га готово сви системи за управљање релационим базама података. И поред његове велике распрострањености, велики значај се придаје и упитном језику QUEL(QUEry Language), који је развијен такође у Калифорнији, на универзитету у Берклију.

Structured Query Language (SQL)[уреди]

SQL представља последњу фазу развоја упитних језика од стране истраживачке IBM лабораторије. Његови претходници развијени од стране те IBM лабораторије су били упитни језици SQUARE и SEQUEL. SQL стандард је објављен 1989. године и одмах је био широко прихваћен на тржишту. Неки од битних својстава су му: језик за дефинисање података(Data Definition Language), језик за манипулацију подацима(Data Manipulation Language), спољашње и унутрашње спајање, каскадно ажурирање и брисање, скуповне операције (унија, пресек и разлика) спајање итд. Приказаћемо неке најосновније појмове везане за овај упитни језик.

Језик за дефинисање података (Data Definition Language)[уреди]

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

Генерички DDL упит за креирање базне релације(табеле):

    CREATE TABLE <naziv tabele> 
(<naziv kolone1> <tip podataka> [not null],
<naziv kolone2> <tip podataka> [not null],
... )

Генерички DDL упит за креирање семантичког домена:

    CREATE DOMAIN <naziv domena> [AS] <predefinisani tip>
    [DEFAULT <vrednost>]
    [[CONSTRAINT <naziv ogranicenja>] CHECK (<ogranicenje>)]
     ...

Генерички DDL упит за измену дефиниције релације(табеле):

    ALTER TABLE <naziv tabele>
    ADD [COLUMN] <definicija kolone>

Језик за манипулацију подацима (Data Manipulation Language)[уреди]

Овај део упитног језика служи за манипулацију подацима у бази, тј. за приказивање, брисање, убацивање и ажурирање података. С тим у вези, састоји се од четири основне команде: SELECT, INSERT, UPDATE, DELETE.

Генерички упит за читање података из базе, који се ослања на операције рестрикције и пројекције из релационе алгебре.

    SELECT < lista atributa >
    FROM < lista relacija >
    WHERE < kvalifikacioni izraz >

Генерички упит за убацивање података у базу:

    INSERT INTO naziv_tabele
    VALUES (vrednost_atr1, vrednost_atr2,. .. )

Генерички упит за брисање података из базе:

    DELETE FROM naziv_tabele
    WHERE [kriterijum selekcije n-torki]

Генерички упит за ажурирање података у бази:

    UPDATE naziv_tabele
    SET(atribut1, atribut2, ...)=(nove vrednosti)
    WHERE [kriterijum selekcije n-torki]

Оператори уније, пресека и разлике Ове операције се ослањају на истоимене операције у релационој алгебри. Пример пресека:

    SELECT atribut_1
    FROM tabela_1
    EXCEPT 
    SELECT atribut_2 
    FROM tabela_2;

Системи за управљање релационим базама података[уреди]

Према подацима америчке компаније за истраживање Гартнер, пет водећих произвођача система за управљање релационим базама података у 2011. години по приходу су били: Oracle, IBM, Microsoft, SAP и Teradata. Тренутно, три најзаступљенија бесплатна система за управљање релационим базама података су: MySQL, PostgreSQL, и SQLite. По истраживању исте компаније у 2008. години је проценат коришћења система за управљање релационим базама на веб-сајтова био следећи[1]:

Удео на тржишту произвођача система за управљање релационим базама података 2012. године је био[2]:

Reference[уреди]

Литература[уреди]

Види још[уреди]