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

if( pred( *first ) ) { /* ... */ }

Како што можете да видите од овој пример, pred треба да врати вредност што може да се тестира како вистина. Имајте на ум дека предикатот е дозволено да користи const функции само преку dereferenced iterator. Некои предикати се бинарни, односно, тие се два предмети (често dereferenced iterators) како аргументи. Ова значи дека бинарен предикатната bpred треба да работи правилно кога се користи како што следува:

if( bpred( *first1, *first2 ) ) { /* ... */ }

имплементација find_if од стандардниот алгоритам (стандардната библиотека на алгоритми)

template<typename Iter, typename Pred> inline Iter find_if( Iter first, Iter last, Pred pred ) { while( first != last && !pred(*first) ) { ++first; } return first; }

Find_if е функција која прима на влез два итератори, и предикат односно функција предикат која ќе прави некоја проверка и ќе враќа вредност во зависност од проверката.

Покажувач на функција bool GreaterThanFive( int i ) { return i > 5; } bool IsAnyElementGreaterThanFive( vector<int>& v ) { return find_if( v.begin(), v.end(), GreaterThanFive ) != v.end(); }

Објект на функција

class GreaterThanFive public std::unary_function<int, bool> { public: bool operator()( int i ) const { return i > 5;

bool IsAnyElementGreaterThanFive( vector<int>& v ) { return find_if( v.begin(), v.end(), GreaterThanFive() ) != v.end(); }

Воопштена функција

class GreaterThan public std::unary_function<int, bool> { public: GreaterThan( int value ) : value_( value ) { } bool operator()( int i ) const { return i > value_; } private: const int value_; }; bool IsAnyElementGreaterThanFive( vector<int>& v ) { return find_if( v.begin(), v.end(), GreaterThan(5) ) != v.end(); }

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

Вектор Со користење на вектор е полесно и побезбедно отколку на низа, бидејќи веткрот може да се намалува и зголемува за разлика од низата. вектор е тип на секвенца која треба да се користи по дифолт. ... Deque е податочна структура на избор кога сакаме вметнување и бришење на почетокот или на крајот на низата. вектор и deque понуди речиси идентични интерфејси и обично се менливи. deque исто така, нуди push_front () и pop_front (),векторот не. (Точно, вектор нуди capacyti() и reserve (), кaј deque не, но тоа е без загуби. Главните структурни разликата помеѓу вектор и deque лежи во начинот на кој два контејнери ги организираат своите внатрешна меморија. deque неговото складирање го прави во страници, или "делови", со фиксен број на содржани елементи во секоја страница. нејзиното име првично дојде од "double-ended queue" поради неговата способност да се вметне елементи ефикасно на едниот крај на низата. Од друга страна, еден вектор доделува соседни блокови од меморија, и може само да се вметне елементи ефикасно на крајот на низата. Вовед

Релациноите бази на подаотоци се темелат на математичката теорија на релации

Релација е подмножество од Декартовиот прозивод D1xD2,D3,...Dn каде D1, D2, D3,...Dn се домени, а n е степен.

А Декартовиот производ на овие н множества е множеството на сите можни подредени n-торки (d1,d2,dn) тш d1e D1, dn e Dn.

Релациите наједноставносе претставуваат во облик на табела, каде редиците се нарекуваат торки, а колоните атрибути.

Релациониот модел на подаотоци може да се разгледува од три аспекти структура на подаотоци Интегритет на подаотоци Манипулација со податоци

Клучеви на релација

Најпрвин клучевите може да се поделат на прост и сложен Прост е кога стануува збор за еден атрибут а сложен ако станув збор за груша на атрибути. Клучот на релацијата R е колекција на атрибути кој ги задоволува условите за единственост и минималност. Единственост е кога не постојат две редици со иста вредност на клучот Минималност нема атрибут што може да се отстрани од клучот, а да не се наруши неговата единственост

Кај релациноте БП разликуваме неколку видови на клучеви и тоа: - Кандидат клуч или примарен клуч кој ги вклучува особините на единственост и минималност - Алтернативен клуч е секој кандидат клуч кој не е примарен - Надворешен клуч е атрибут во релацијата чии вредности мора да се софпаќаат со вредностите на примарниот клуч од некоја релација Р1 Уште неколку прави за клучевите колоната во која се внесуваат примарните клучеви не смее да има нулта вредност Ако релацита р2 содржи надворешниот клуч тогаш вредноста на надворешниот клуч во р1 мора да биде иста или со вредноста од некој од примарните клучеви од р2 илид а биде нула.

РЕалциони прашални јазици

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

Производ на две множества A и B се дефинира со:

A×B={(a,b)∣a∈A,b∈B}.

Овој производ се нарекува уште и Декартов производ и неговите елементи се подредени парови на елементи во кои првиот елемент од парот припаѓа на првото, а вториот елемент на второто множество од производот.

Пример 5 .

За множествата A={a,b,c},B={a,1,2} производот е:

A×B={(a,a),(a,1),(a,2),(b,a),(b,1),(b,2),(c,a),(c,1),(c,2)}.

Пример 6 .

Ако A={x∣1≤x≤4}, B={y∣2≤y≤6}, тогаш:

A×B={(x,y)∣(1≤x≤4)∧(2≤y≤6)}

и геометриски претставува множество на внатрешни и грани­чни точки од правоаголникот ограничен со правите: x=1,x=4,y=2,y=6.

Примери на релациони јазици

ISBL(iformation System Base language) се заснова на релациона алгебра и е развиен од IBM Quel се заснова на релационо сметање со торки а е проектиран во околина на UNIX QBE (Query by example) се заснова на релационо сметање SQUARE и SEQUEL се заснова на релационо сметање и на алгебра SEQUEL од него кон крајот на 70 тите години се развива SQL(Structured Query Language)

Релациона алгебра

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

Бинарни операции - (унија, пресек, разликата) овозможуваат да произлезе нова табела врз основа на две релации кои имаат ист степен и домен.

Бинар операции - (Декартов производ, спојување) - овозможуваат да произлезе нова релација врз основа на две или повеќе постоечки релации.

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

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

Пр.

СЕЛЕКТИРАЈ Ime,Prezime,Godini

ОД Podatoci

СЕЛЕКТИРАЈ Ime,Godini

ОД Podatoci

Селекција Од дадена релација се селектираан оние н-торки што ги исполнуваат условот.

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

КАДЕ ШТО <услов>

Пр.

СЕЛЕКТИРАЈ Ime,Prezime,Godini

ОД Podatoci

КАДЕ ШТО Godini=22

СЕЛЕКТИРАЈ Ime,Prezime,Godini

ОД Podatoci

КАДЕ ШТО Ime='Vlatko'

Пр.2

СЕЛЕКТИРАЈ ID, X, Y, Z

ОД Broj

КАДЕ ШТО Y=4

Унија

Резултат на унија на две релации е нова релација R која ја има истата шема како и релациите од кои е направена. Ако две релации имаат исти торки ти нема да се повторат во новата релација.

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

УНИЈА

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

Корисник

Вработен

СЕЛЕКТИРАЈ Ime,Prezime

ОД Vraboten

УНИЈА

СЕЛЕКТИРАЈ Ime,Prezime

ОД Korisnik

Пресек Кога правиме пресек ќе ги покаже заедницките торки до двете табели

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

ПРЕСЕК

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

СЕЛЕКТИРАЈ Ime,Prezime

ОД Vraboten

ПРЕСЕК

СЕЛЕКТИРАЈ Ime,Prezime

ОД Korisnik

Разлика

Кога правиме разлика ги покажува сите торки што ги има во релацијата R1 што не припаќаат на релација Р2 Р1-Р2

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

РАЗЛИКА

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата>

СЕЛЕКТИРАЈ Ime,Prezime

ОД Vraboten

РАЗЛИКА

СЕЛЕКТИРАЈ Ime,Prezime

ОД Korisnik

Декартов прозивод

Спојување За прикажување на подаотоци од повеќе табели неопходно е да се изврши спојување на табели.

ВРабоден

ЕМБГ

СЕЛЕКТИРАЈ <Име на колоната>

ОД <Име на табелата1>

ВНАТРЕШНО СПОЈУВАЊЕ <Име на табелата2>

НА <услов>

Пр. СЕЛЕКТИРАЈ Ime,Prezime,EMBG

ОД Podatoci

ВНАТРЕШНО СПОЈУВАЊЕ EMBG

НА ID_Podatoci=ID_Vraboten Do you have access to a computer with rdmbs installed on it, like oracle, mssql. Or one that you can install mysql, or other rdbms on Do you prefer stimulating dinner partry conversiation to dry, dull, academic lectures Don’t you just hate losing things? Whether its your car keys, that 25 off coupon for urban outfitters, or your applications data, theres nothing worse than not being able to keep up with what you need. When you need it. And when it comes to your applications, theres no better place to store yoyur important information than in a table. So turn the page, come on in, and take a walk through the world of relational database.

Не само мразам губи работи? Дали нејзиниот вашиот клучевите од колата, дека 25 исклучување талон за урбана Outfitters, или вашите апликации податоци, theres ништо полошо отколку да не биде во можност да остане во чекор со она што ви треба. Кога ви треба. И кога станува збор за вашите апликации, таму е нема подобро место да ги чувате вашите важни информации отколку во табелата. Па сврти нова страница, ајде во, и прошетај низ светот на релациона база на податоци.

Defining your data Greg knows many lonely single people. He likes keeping track of what his friends are up to, and enjoys introducing them to each other. He has lots of information aboyut them scrawled on sticky notes like this Дефинирање на вашите податоци Грег знае многу осамени луѓе. Тој сака да ги следи неговите пријатели и тоа што тие прават, и сака да ги запознава едни со други. Тој има многу информации и тој ги запишува на лепливи белешки вака:

Greg’s been using his for a very long time. Last week be expanded his connections to include people who are seeking new jobs, so his listings are growing quickly. Very quickly... Тој за да ги прошири своите врски вклучил луѓе кои бараат нови работни места, така што неговата листа растела брзо и тоа изгледало вака

Is there a better way to organizer this information? What would you do. Е сега се поставува прашањето како може грег да се осрганизира подобро. Whell how about a database? That is what this book is about, right. Exactly right.a database is just what we need. Па како за базата на податоци? Тоа е она што оваа книга е за, нели. Се разбира со база на податоци ова може да се реши подобро. But before you can into creating databases, you re going to need to have a better idea of what kinds of data you re going to want to store and some ways of categorizing

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

Here are some od greg notes.look for similar informationthat greg collected about each prson. Give each common bit of data a label that describes the category of information it is, then write those labels in the space below. Е сега ако да ги организираме белешките на грег во база на податоци. Најпрво ги бараме сличните информации за секоја личност Look at your data in categories