Садржај
1 Релационе базе података
1.0 1 Релационе базе података
1.0 2 Релационе базе података - квиз
1.0 3 Веза један према више
1.0 4 Веза један према више - квиз
1.0 5 Веза више према више
1.0 6 Веза више према више - квиз
1.0 7 Алат за пројектовање
1.0 8 СУБП
1.0 9 Креирање базе на други начин
1.0 10 Још неке SQL команде
1.1 1 Упит SELECT
1.1 2 Упит SELECT - упит из једне табеле - задаци
1.1 3 Упит SELECT - упит из једне табеле - квиз
1.1 4 Упит SELECT - функције и подупити - задаци
1.1 5 Упит SELECT - функције и подупити - квиз
1.1 6 Упит SELECT - спајање - задаци
1.1 7 Упит SELECT - спајање - квиз
1.1 8 Упит SELECT - нерешени задаци
1.2 1 База података за библиотеку - креирање базе
1.2 2 БП Библиотека - Упит SELECT - упит из једне табеле - задаци
1.2 3 БП Библиотека - Упит SELECT - упит из једне табеле - нерешени задаци
1.2 4 БП Библиотека - Упит SELECT - спајање - задаци
1.2 5 БП Библиотека - Упит SELECT - спајање - нерешени задаци
1.2 6 БП Библиотека - Упит SELECT - функције и подупити - задаци
1.2 7 БП Библиотека - Упит SELECT - функције и подупити - нерешени задаци
1.3 1 База података за возачке дозволе - креирање базе
1.3 2 БП Возачке дозволе - Дијаграм и подаци - практичан рад
1.3 3 БП Возачке дозволе - Упит SELECT - задаци
1.3 4 БП Возачке дозволе - Упит SELECT - нерешени задаци
1.4 1 БП Филмови - Креирање базе - практични рад
1.4 2 БП Филмови - Дијаграм и подаци - практични рад
1.4 3 БП Филмови - Упит SELECT - задаци
1.4 4 БП Филмови - Упит SELECT - нерешени задаци
2 Писање програма унутар система за управљање базама података
2.0 1 Процедуре и команда INSERT
2.0 2 Процедуре и команде UPDATE и DELETE
2.0 3 Процедуре и команде INSERT, UPDATE, и DELETE - квиз
2.0 4 Процедуре и тестирање програма
2.0 5 Процедуре и упит SELECT
2.0 6 Процедуре и курсор за упит SELECT
2.1 1 Функције и упит SELECT
2.1 2 Процедуре и функције са упитом SELECT - квиз
2.1 3 Процедуре и функције са упитом SELECT из једне табеле - задаци
2.1 4 Процедуре и функције са упитом и групним функцијама - задаци
2.1 5 Процедуре и функције са упитом SELECT са спајањем табела - задаци
2.1 6 Процедуре и функције са упитом - нерешени задаци
2.1 7 Формат XML
2.2 1 База података за библиотеку - Процедуре, функције и поређење различитих решења
2.2 2 Процедуре, функције и поређење различитих решења
2.2 3 Процедуре и функције са упитом SELECT из једне табеле - вежбање
2.2 4 Процедуре и функције са упитом SELECT са спајањем табела - вежбање
2.2 5 Процедуре и функције са упитом и групним функцијама и подупитима - вежбање
2.2 6 Процедуре и функције са упитом SELECT - нерешени задаци
2.3 1 База података за возачке дозволе - процедуре и функције са упитом SELECT - вежбање
2.3 2 База података за возачке дозволе - процедуре и функције - нерешени задаци
2.4 1 База података за филмове - процедуре и функције са упитом SELECT - вежбање
2.4 2 База података за филмове - процедуре и функције - нерешени задаци
3 Писање програма у програмским језицима вишег нивоа
3.0 1 Писање програма у развојном окружењу Visual Studio
3.0 2 Писање програма у развојном окружењу Visual Studio - практичан рад
3.0 3 Писање програма у развојном окружењу Visual Studio - процедуре
3.0 4 Писање програма у развојном окружењу Visual Studio - квиз
3.1 1 Угнежђени упит SELECT унутар програма
3.1 2 Угнежђени упит SELECT унутар програма - задаци
3.1 3 Позив процедуре унутар програма
3.1 4 Позив креиране функције унутар програма
3.1 5 Програм са угнежђеним командама у развојном окружењу Visual Studio - квиз
3.1 6 Програм са угнежђеним упитом SELECT из једне табеле - вежбање
3.1 7 Програм са угњежђеним упитом и групним фунцкијама - вежбање
3.1 8 Програм са угнежђеним упитом SELECT са спајањем табела - вежбање
3.1 9 Програм са класом
3.1 10 Програм са угнежђеним упитом - нерешени задаци
3.1 11 Програм са угнежђеним командама INSERT, UPDATE, и DELETE
3.2 1 База података за библиотеку - програм са угнежђеним упитом SELECT из једне табеле - задаци
3.2 2 База података за библиотеку - програм са угнежђеним упитом SELECT - вежбање
3.2 3 База података за библиотеку - програм са угнежђеним упитом - нерешени задаци
3.3 1 База података за возачке дозволе - програм са угнежђеним упитом SELECT - вежбање
3.3 2 База података за возачке дозволе - програм са угнежђеним упитом - нерешени задаци
3.4 1 База података за филмове - програм са угнежђеним упитом SELECT - вежбање
3.4 2 База података за филмове - програм са угнежђеним упитом - нерешени задаци
4 Друга софтверска решења - СУБП Oracle
4.0 1 Oracle Apex и језик PL/SQL
4.0 2 Језик PL/SQL - задаци
4.0 3 Језик PL/SQL - квиз
4.0 4 Језик PL/SQL – нерешени задаци
4.0 5 Наредбе гранања
4.0 6 Наредбе гранања - нерешени задаци
4.0 7 Наредбе циклуса
4.0 8 Наредбе циклуса - нерешени задаци
4.1 1 База података за библиотеку - практичан рад
4.1 2 Наредба SELECT INTO
4.1 3 Наредба SELECT INTO - zadaci
4.1 4 Наредба SELECT INTO - квиз
4.1 5 Наредба SELECT INTO - вежбање
4.1 6 Наредба SELECT INTO - нерешени задаци
4.2 1 Курсори - Узимање података из више редова
4.2 2 Курсори - задаци
4.2 3 Различити начини да се реши проблем
4.2 4 Курсори - нерешени задаци
4.2 5 Курсор са параметром
4.2 6 Курсор са параметром - задаци
4.2 7 Курсор са параметром - нерешени задаци
4.2 8 Курсори - квиз
4.2 9 Курсори и гранање - задаци
4.2 10 Курсори - вежбање
4.2 11 Тренутне позајмице члана - пример
4.2 12 Спискови књига - пример
4.3 1 Процедуре и функције у СУБП-у Oracle Apex
4.3 2 Процедуре и функције - задаци
4.3 3 Процедуре и функције - нерешени задаци
4.3 4 Позајмице једне књиге - пример
4.3 5 Тренутне позајмице - пример
4.3 6 Процедуре и друге SQL команде
4.3 7 Тригери
4.3 8 Списак свих објеката у бази података
4.4 1 Креирање апликације помоћу алата App Builder
4.4 2 Додатне опције App Builder алата
4.4 3 Покретање апликације
4.4 4 Креирање нових страница у апликацији
4.4 5 Покретање раније креиране процедуре
4.4 6 Алат App Builder и XML
4.5 1 База података за салон аутомобила у СУБП-у Oracle Apex - 1. део
4.5 2 База података за салон аутомобила у СУБП-у Oracle Apex - 2. део
4.5 3 База података за салон аутомобила у СУБП-у Oracle Apex - 3. део
4.5 4 База података за продавницу - нерешени пројектни рад

Веза више према више

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

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

../_images/slika_105a.jpg

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

../_images/slika_105b.jpg

Кратке цртице којима су везе прецртане имају значење да везе учествују у примарном јединственом идентификатору новог ентитета. Тако је примарни јединствени идентификатор новог ентитета који је дошао на место везе типа М:М, ентитета АUTOR-KNJIGA, заправо сложен и представља комбинацију примарних јединствених идентификатора ентитета АUTOR и KNJIGA: (id_knjige, id_autora).

Описани део модела се у релационој бази приказује како је илустровано на следећој слици. Сетимо се да књига има издавача, па се у табели knjige налази и страни кључ id_izdavaca.

../_images/slika_105c.jpg

Већ смо креирали табеле knjige и autori следећим командама.

CREATE TABLE knjige
( id_knjige INT PRIMARY KEY,
naziv VARCHAR(50) NOT NULL,
id_izdavaca INT NOT NULL REFERENCES izdavaci(id) )

CREATE TABLE autori
( id_autora INT PRIMARY KEY,
ime VARCHAR(15) NOT NULL,
prezime VARCHAR(15) NOT NULL )

Следи програмски код за креирање табеле autori_knjige. У овој табели је потребно да имамо две колоне. Свака од њих је страни кључ, а заједно чине сложен примарни кључ. Колона id_autora је страни кључ, који показује на примарни кључ, колону id_autora, табеле autori. Колона id_knjige је страни кључ, који показује на примарни кључ, колону id_knjige, табеле knjige. Није довољно само предвидети ову додатну колону која представља везу ка другој табели, већ је изузетно важно уз њу дефинисати и да је та колона страни кључ тако што се наведе реч REFERENCES и одговарајућа референца. На тај начин се обезбеђују додатне провере приликом рада са подацима у бази. Тако, на пример, неће бити могуће да се унесе ред са идентификационим бројевима који не постоје у одговарајућим табелама са подацима о књигама и ауторима – непостојећи идентификациони број аутора или непостојећи идентификациони број књиге.

Када табела има сложен примарни кључ, он мора посебно да се дефинише након списка свих колона.

CREATE TABLE autori_knjige
(id_autora INT REFERENCES autori(id_autora),
id_knjige INT REFERENCES knjige(id_knjige),
PRIMARY KEY (id_autora, id_knjige) )

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

../_images/slika_105d.jpg

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

INSERT INTO autori
VALUES (101, 'Stanka', 'Matkovic')

INSERT INTO autori
VALUES (102, 'Mijodrag', 'Djurisic')

INSERT INTO autori
VALUES (103, 'Dusa', 'Vukovic')

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

INSERT INTO knjige
VALUES (111, 'Racunarstvo i informatika za 4. razred gimnazije', 1)

Како књига има три аутора, потребно је додати три реда у табелу autori_knjige, сваки ред представља једну комбинацију аутора и књиге.

Један од аутора је Станка Матковић, чији је идентификациони број у бази 101, па се податак о томе да је она један од аутора књиге коју посматрамо уноси као комбинација њеног идентификационог броја и идентификационог броја књиге.

INSERT INTO autori_knjige
VALUES (101, 111)

Исто је потребно урадити и за преостала два аутора, чији су идентификациони бројеви 102 и 103.

INSERT INTO autori_knjige
VALUES (102, 111)

INSERT INTO autori_knjige
VALUES (103, 111)

Уколико је један од ових аутора написао још неку књигу, додаће се још један ред са одговарајућим паром идентификационих бројева у табелу. На пример, Мијодраг Ђуришић, чији је идентификациони број 102, један је од аутора књиге „Основи програмирања, програмски језик с#“ са идентификационим бројем 321, па се следећом командом уноси тај податак у базу.

INSERT INTO autori_knjige
VALUES (102, 321)

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

../_images/slika_105e.jpg

Напомена: Овај модел је исправан уколико се узме у обзир претпоставка да библиотека чува уџбенике. Уколико се у библиотеци налазе само романи, онда је веза ентитета AUTOR и KNJIGA могла да буде један-према-више (роман има тачно једног аутора).

На свим илустрацијама до сада се користе другачији скупови вредности за примарне кључеве у различитим табелама да би се илустрације лакше пратиле и разумеле. Међутим, чест је случај да се вредности у колонама које су примарни кључеви попуњавају бројевима редом 1, 2, 3, 4, и тако даље, па би приказана ситуација са претходне слике могла да изгледа и другачије, а са истим значењем. Важно је и у том случају да посматрамо и повезујемо вредности одговарајућих колона.

../_images/slika_105f.jpg

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

../_images/slika_105g.jpg

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

На слици су различитим бојама означени неки примери веза међу подацима који се налазе у различитим табелама да би се илустровало како то повезивање функционише. Плавом бојом су обележене три књиге истог издавача са идентификационим бројем 1. Љубичастом бојом су приказана два примерка књиге са идентификационим бројем 111. А зеленом и наранџастом је обележено како је у бази сачуван податак о томе да је Мијодраг Ђуришић један од аутора књиге „Основи програмирања, програмски језик с#“.

../_images/slika_105h.jpg
(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+