Duomenų bazių projektinio darbo ataskaita

1.    ĮVADAS.
DB aktualijos ir taikymas.
DB aktualijos:
Duomenų bazė – tai kartu saugomų ir susijusių duomenų, skirtų apdoroti kompiuteriu visuma. DB yra saugomų algoritminių kalbų išplėtimas patogiam darbui su failais. Taip pat DB yra duomenų saugyklos, kur duomenys saugojami ilgesniam laikui ir iš kur juos greitai galima paimti.Duomenys atitinka realaus pasaulio,tam tikros – skirtos automatizuoti – dalies modelį. Fizinis ir loginis duomenų organizavimas. Fizinis  nurodo duomenų fizinio išdėstymo būdus kompiuterio atmintyje,o loginis – duomenų struktūros vaizdavimą – modelį, reikalingą vartotojams.
DB – kartu saugomų ir susijusių duomenų visuma, kuriai būdingos šios pagrindinės savybės: integruotumas, nepertekliskumas, nepriklausomumas.
DB – tai programų rinkinys, kuris atlieka duomenų apdorojimo operacijas, vadinamas DBVS. DBVS yra programinės priemonės, kurios skirtos duomenų struktūrai aprašyti, įdiegti, vartoti ir palaikyti(adminidtruoti).
DB – tai informacinių, matematinių, kalbinių, programinių, techninių ir organizacinių priemonių sistema, apimanti saugomus duomenis ir taip pat technologiniame procese užimtą personalą, skirtą centralizuotam duomenų kaupimui, siekiant gauti tuo metu reikalingą infor- maciją.
DB taikymas:
DB skirtos dideliems struktūrizuotų duomenų kiekiams kaupti, saugoti ir apdoroti pa- gal vartotojo pateikiamus reikalavimus. Dažnai atlieka tik elementarias apskaitos funkcijas, tačiau atliekant šiuos darbus be kompiuterio pagalbos, tektų sugaišti žymiai daugiau laiko, nukentėtų atliekamos apskaitos tikslumas bei savalaikiškumas. Svarbu yra tai, kad  suteikia galimybę tais pačiais duomenimis vienu metu naudotis daugeliui vartotojų.
DB savybės:
Duomenų integruotumas – reiškia, kad visi duomenys kaupiami ir saugomi kartu, nustačius jų tarpusavio ryšius.
Duomenų nepertekliškumas – nusako, jog saugomi duomenys, kurie nesikartoja(nesi- dubliuoja)
Duomenų nepriklausomumas – reiškia, kad duomenys saugomi taip, kad duomenų apdorojimo taikomosios programos nesikeičia, modifikuojant duomenų saugojimo ir organi – zavimo būdą.

DBVS aktualijos ir taikymas.
DBVS aktualijos:
DBVS – tai programų kompleksas, skirtas duomenų mainams tarp fizinės duomenų bazės (FDB), saugojamos išorinėje atmintyje ir pagrindinės (operatyviosios) atminties realiza- cijos, sudaro duomenų bazių valdymo sistemą (žr. 1 pav.).

1 pav. DBVS  pavyzdys
DBVS – tai programinė įranga, skirta DB kurti, jas saugoti ir įvairiais būdais apdoroti.
DBVS taikymas:
DBVS panaudojimas: supaprastina vartotojų programas; paspartina jų sudarymą; su – mažina duomenų perteklių fizinėje duomenų bazėje.
Įvairūs loginiai failai, kuriais operuoja vartotojų programos, gali būti gautos iš tų pačių fizinių failų, kurie organizuojami naudojant įvairius fizinės organizacijos metodus.
Konkreti DBVS yra orientuota į tam tikrą vieną ar kelis fizinės organizacijos metodus.
Klasifikuojant DBVS, žiūrima, kokio tipo duomenų struktūras  palaiko viena ar kita DBVS loginiame (programuotojo) lygyje. Todėl yra skiriamos reliacinės, hierarchinės ir tink- linės DBVS.
1.1 Kompiuterizuojamos veiklos aprašymas.
Kuriama individuali firma, pavadinimu UAB “Kanaris”. Kurioje planuojama prekiauti raštinės reikmenimis. Prekiaujama bus trijomis prekėmis: įvairiais sąsiuviniais, popieriumi ir rašikliais. Prekyba sutelkta dviejuose filialuose, esančiuose skirtinguose šalies miestuose. Šiuose dviejuose filialuose bus užsiimama tiek didmenine, tiek mažmenine prekyba. Planuo- jami keli stambūs tiekėjai iš kurių bus gaunamos prekės. Taigi, pagrindinis tikslas yra kaupti raštinės reikmenų apskaitos duomenų bazę ir gauti ekonominį arba nulinį (normalųjį) pelną.
1.2 Pasirinktos DBVS pagrindimas.
Pasirinkta Visual FoxPro duomenų bazių valdymo sistema. Ši DBVS vartotojui sutei – kia lanksčias galimybes lengvai surasti ir atrinkti reikalingus duomenis pagal vieną ar kelis kriterijus, tuos duomenis rūšiuoti, grupuoti, atvaizduoti juos pageidaujama forma.Leidžia vyk- dyti apibendrinančius matematinius, statistinius skaičiavimus ir kurti įvairių formatų ataskai – tas.Taip pat suteikiama galimybė rašyti bei derinti nuosavas taikomąsias programas,skirtas konkretiems, specifiniams poreikiams patenkinti. Šioje DBVS (Visual FoxPro) atliekamos tokios funkcijos: DB struktūros projektavimas; DB pildymas, kaupimas, redagavimas; duomenų atvaizdavimas ir peržiūra; navigacija duomenų bazėje; duomenų paieška, rūšiavi – mas, grupavimas ir kitas tvarkymas; ataskaitų generavimas; taikomųjų vartotojo programų kū- rimas. Beto DBVS Visual FoxPro, be šių pagrindinių funkcijų, turi ir kitų, pagalbinių, ne mažiau svarbių funkcijų: užtikrina duomenų korektiškumo, neprieštaringumo ir pilnumo kon- trolę; leidžia įslaptinti tam tikrus duomenis, uždrausti nesankcionuotą priėjimą prie jų.
2.    KOMPIUTERIZUOJAMOS VEIKLOS MODELIAI.
2.1 Aukščiausiojo lygmens DFD:
Visa analizuojama organizacija (t.y. visa veiklos sritis) žymima kaip vienintelis proce- sas, modeliuojamos išorinės organizacijos sąveikos su aplinka (žr. 2 pav.).

2 pav. Aukščiausiojo lygmens DFD
2.2 Nulinio lygmens DFD:
Nurodo pagrindinius analizuojamos veiklos (organizacijos) procesus ir juos siejančius srautus. Nulinio lygmens modelis identifikuoja pagrindinius veiklos dalyvius (organizacijos padalinius, išorines organizacijas), procesus, informacinius ir technologinius srautus,organiza- cijos sąveikas su aplinkos objektais (kitomis organizacijomis). Duomenų srautų ir procesų detalės turi būti aiškiai apibrėžti: kiekvienam srautui ir procesui suteikiamas vardas (identifi- katorius), jie trumpai aprašomi.Duomenų srautai yra vienas iš modelio elementų,kuris parodo, kokie duomenys naudojami procesuose, iš kur jie imami ir kur saugomi. Duomenų srautų šal- tiniai ir vartotojai yra veiklos dalyviai (išoriniai objektai) arba duomenų saugyklos. Kitas, pa- grindinis diagramos  elementas yra procesas, kuris modeliuoja duomenų apdorojimo operaci- jas (žr. 3 pav.).

3 pav. Nulinio lygmens DFD

Procesas
Procesas transformuoja, perdirba duomenis.
Duomenų saugykla
Tai pasyvus duomenų saugotojas, neatliekantis jokių
duomenų transformacijų.
Išorinis objektas
Išoriniai objektai tiekia sistemai reikiamą informaciją ir naudoja ją.
Duomenų srautas
Tai duomenys, perduodami tarp procesų arba tarp procesų ir duomenų saugyklų.
Materialus srautas
Materialus srautas (medžiagų, žaliavų, energijos ar kitoks).

3.    NORMALIZAVIMAS.
3.1 Lentelės laukų aprašymas.
3.1.1   1 NF:
Į  DB sudėtį įtraukiami šie vienareikšmiai laukai:
„TIEKĖJO_PAVADINIMAS“ – „TP“ ;
„TIEKĖJO_ADRESAS“ – „TA“ ;
„TIEKĖJO_TELEFONAS“ – „TKT“ ;
„TIEKĖJO_KODAS“ – „TK“ ;
„TIEKIMO_KAINA“ – „TIK“ ;
„PREKĖS_PAVADINIMAS“ – „PRP“ ;
„PREKĖS_KODAS“ – „PK“ ;
„PREKĖS_KAINA“ – „PRK“ ;
„PREKĖS_RŪŠIS“ – „PR“ ;
„PIRKĖJO_KODAS“ – „PIK“ ;
„PIRKĖJO_PAVADINIMAS“ – „PIP“ ;
„PIRKĖJO_ADRESAS“ – „PA“ ;
„PIRKĖJO_TELEFONAS“ – „PT“ ;
„UŽSAKYMO_DATA“ – „UD“ ;
„UŽSAKYTAS_KIEKIS“ – „UK“ ;
„UŽSAKYTA_RŪŠIS“ – „UR“ ;
„UŽSAKYMO_NUMERIS“ – „UN“ ;

Laukai  „TIEKĖJO_PAVADINIMAS“ ir  „PIRKĖJO_KODAS“ dentifikuo- ja visus likusius laukus ir turi vienintelį galimą sudėtinį raktą TP + PIK . Funkcinės priklau-  somybės, egzistuojančios tarp lentelės, kurią pavadinsime „TIEKĖJAI_IR_PREKĖS“, laukų, atvaizduotos (žr. 4 pav.) :

4 pav. Tiekėjai_ir prekės

Aprašoma lentelės schema:
TIEKĖJAI_IR_PREKĖS ( TIEKĖJO_PAVADINIMAS (TP) ,TIEKĖJO_ADRESAS (TA), TIEKĖJO_TELEFONAS (TKT), TIEKĖJO_KODAS (TK), TIEKIMO_KAINA (TIK),  PREKĖS_PAVADINIMAS (PRP), PREKĖS_KODAS (PK), PREKĖS_KAINA (PRK), PREKĖS_RŪŠIS (PR), PIRKĖJO_KODAS (PIK) , PIRKĖJO_PAVADINIMAS (PIP), PIRKĖJO_ADRESAS (PA), PIRKĖJO_TELEFONAS (PT), UŽSAKYMO_DATA (UD), UŽSAKYTAS_KIEKIS (UK), UŽSAKYTA_RŪŠIS (UR), UŽSAKYMO_NUMERIS (UN)).

1 NF :
PREKĖS ( TIEKĖJO_PAVADINIMAS (TP), TIEKĖJO_ADRESAS (TA), TIEKĖJO_TELEFONAS (TKT), TIEKEJO_KODAS (TK), TIEKIMO_KAINA (TIK), PREKĖS_PAVADINIMAS (PRP), PREKĖS_KODAS (PK), PREKĖS_KAINA (PRK), PREKĖS_RŪŠIS (PR), UŽSAKYMO_DATA (UD), UŽSAKYTAS_KIEKIS (UK), UŽSAKYTA_RŪŠIS (UR), UŽSAKYMO_NUMERIS (UN ) ).
Pirmoje normalinėje formoje yra vienintelis galimas raktas „TP “, nuo kurio funkcio- naliai priklauso visi kiti neraktiniai laukai.
3.1.2   2 NF:
Gaunama 2NF, jeigu yra ir kartu 1NF ir kiekvienas iš 2NF neraktinių laukų yra pilnos funkcinės priklausomybės nuo bet kokio lentelės galimo rakto.Lentelė „ PREKĖS „ gali būti išskaidyta į tris lenteles, kurios atitinka 2NF :
TIEKĖJAI ( TIEKĖJO_PAVADINIMAS (TP), TIEKĖJO_ADRESAS (TA), TIEKĖ- JO_TELEFONAS (TKT), TIEKĖJO_KODAS (TK), TIEKIMO_KAINA (TIK) ).
PIRKĖJAI ( PIRKĖJO_KODAS (PIK), PIRKĖJO_PAVADINIMAS (PIP), PIRKĖ- JO_ADRESAS (PA), PIRKĖJO_TELEFONAS (PT), UŽSAKYMO_DATA (UD),UŽSAKY- TAS_KIEKIS (UK), UŽSAKYTA_RŪŠIS (UR), UŽSAKYMO_NUMERIS (UN) ).
PREKĖS ( TIEKĖJO_PAVADINIMAS (TP), PIRKĖJO_KODAS (PIK), PREKĖS_ PAVADINIMAS (PRP), PREKĖS_KODAS (PK), PREKĖS_KAINA (PRK), PREKĖS_RŪ- ŠIS (PR) ).
3.1.3   3 NF:
Gaunama 3NF, kai kartu yra 2NF ir joje nėra nė vienos neraktinių laukų tranzityvios funkcinės priklausomybės nuo bet kokio tos lentelės galimo rakto.
TIEKIMAS ( TIEKĖJO_PAVADINIMAS (TP), TIEKIMO_KAINA (TIK) ).
TIEKĖJAI ( TIEKĖJO_PAVADINIMAS (TP), TIEKĖJO_ADRESAS (TA), TIEKĖ- JO_TELEFONAS (TKT), TIEKĖJO_KODAS (TK), TIEKIMO_KAINA (TIK) ).
PIRKĖJAI ( PIRKĖJO_KODAS (PIK), PIRKĖJO_PAVADINIMAS (PIP), PIRKĖ- JO_ADRESAS (PA), PIRKĖJO_TELEFONAS (PT), UŽSAKYMO_DATA (UD),UŽSAKY- TAS_KIEKIS (UK), UŽSAKYTA_RŪŠIS (UR), UŽSAKYMO_NUMERIS (UN) ).
PREKĖS ( TIEKĖJO_PAVADINIMAS (TP), PIRKĖJO_KODAS (PIK), PREKĖS_ PAVADINIMAS (PRP), PREKĖS_KODAS (PK), PREKĖS_KAINA (PRK), PREKĖS_RŪ- ŠIS (PR) ).
UŽSAKYMAI ( PIRKĖJO_KODAS (PIK), UŽSAKYMO_DATA (UD), UŽSAKY- TAS_KIEKIS (UK), UŽSAKYTA_RŪŠIS (UR), UŽSAKYMO_NUMERIS (UN) ).
3.2 Lentelių laukų savybės.
3.2.1 Lentelės :
Sudarytos 5 lentelės: tiekėjai, tiekimas, prekės, užsakymai, pirkėjai. Kiekvienoje lente- lėje yra po 6 įrašus. Kiekvienai iš jų yra parinktos atitinkamos savybės.
1 lentelė. Tiekėjai

2 lentelė. Tiekimas

3 lentelė. Prekės

4 lentelė. Užsakymai

5 lentelė. Pirkėjai

Šiose visose 5 lentelėse yra panaudotos tokios laukų savybės:
•    Panaudoti laukų tipai: character (žr.5 pav.), integer (žr.7 pav), date (žr. 5 pav.), date time (žr. 7 pav), float (6 pav).
Character tipo laukas,tai bet kokie tekstiniai duomenys, kurie neperkoduojami. Šio lauko ilgis 1-254, 1 ženklui – 1 baitas. Šiame lauke galima rašyti bet kokius ženklus, pvz.: skaitmenis, raides ir pan.
Integer – tai sveiki skaičiai,kurių ilgis 4 baitai.Reikšmių diapazonas nuo -2147483647 iki 2147483647.
Date – tai data (mėnuo, diena, metai). Lauko ilgis 8 baitai. Reikšmių diapazonas nuo {^0001-01-01} iki {^9999-12-31}.
Date Time – mėnuo, data, metai ir laikas. Lauko ilgis 8 baitai. Reikšmių diapazo- nas nuo {^0001-01-01} iki {^9999-12-31} plius laikas nuo 00:00:00 a.m. iki 11:59:59 p.m.
Float – skaičiai su fiksuotu tašku. Lauko ilgis 8 baitai atmintyje; 1-20 baitų lente- lėje. Reikšmių diapazonas nuo – .9999999999E+19 iki .9999999999E+20 .

5 pav. Character ir Date tipo laukai                                     6 pav. Character ir Float tipo laukai

7 pav. Character, integer ir Date time tipo laukai
•    Indeksuoti visi galimi laukai lentelėje pirkėjai (žr. 8 pav.).
Index – paieškos rakto požymis (indeksas REGULAR).

8 pav. Index rakto požymis
•    Nutylėtos dviejų laukų reikšmės: tiekimo data lentelėje tiekimas (žr. 9 pav.) ir užsakymo data lent.užsakymai (žr. 10 pav.).
Lentelėje „tiekimas“ nutylėta yra data ( Default Value ( Date( ) ) ), t.y. į lentelę išveda dabartinę datą (žr. 9 pav.).

9 pav. Date ( ) nutylėjimas

Lentelėje „užsakymai“ nutylėta yra data ir laikas ( Default Value ( DateTime( ) ) ), t.y. į lentelę išveda dabartinę datą (žr. 10 pav.).

10 pav. DateTime ( ) nutylėjimas
•    Sudaryta 11 įvesties kaukių:
Tiekėjo pav.(žr. 11 pav.), tiekėjo tel.(žr. 12 pav.), tiekimo data (žr. 13 pav.), prekės pav.(žr. 14 pav.), prekės rūšis (žr. 15 pav.), užsakymo data (žr. 16 pav.), užsakytas kiekis vienetais (žr. 17 pav.), užsakyta prekė (žr. 18 pav.), pirkėjo pav.(žr. 19 pav.), pirkėjo tel.(žr. 20 pav.), užsakymo kiekis vienetais (žr. 21 pav.).

11 pav.  „ Tiek_pav “ įvesties kaukė

12 pav.  „ Tiek_tel “ įvesties kaukė

13 pav.  „ Tiek_dt “ įvesties kaukė

14 pav.  „ Pr_pav “ įvesties kaukė

15 pav.  „ Pr_r “ įvesties kaukė

16 pav.  „ Uz_dt “ įvesties kaukė

17 pav.  „ Uz_kiek “ įvesties kaukė

18 pav.  „ Uz_pr “ įvesties kaukė

19 pav.  „ Pir_pav “ įvesties kaukė

20 pav.  „ Pir_tel “ įvesties kaukė

21 pav.  „ Uz_kiek “ įvesties kaukė
Pradžioje rašomas simbolis „ ! “ reiškia, jog lauke įvesta reikšmė bus  būtinai pradėta rašyti didžiąja raide, poto bus rašomos mažosios arba didžiosios raidės. „ aaaaaaaa… “ – reiškia, jog lauke galima naudoti tik raides (tiek didžiąsias, tiek mažąsias). Simboliai „9999999…“ rodo jog į lauka bus galima įvesti reikšmes,kurios bus tik skaitmenys nuo 0 iki 9. Caption savybėje užrašoma lauko antraštė. NULL – tai tuščios reikšmės įgijimo galimybės požymis. Width – nurodo lauko ilgį, kiek bus galima įvesti išviso simbolių.
•    Parinkti filtrai dviejom lentelėm:užsakymai(UZ_KIEK, žr. 22 pav.) ir pirkėjai
(UZ_KIEK, žr. 23 pav.).
Lentelėje „ užsakymai “ filtras yra uždėtas užsakytam prekių kiekiui (uz_kiek). Filtras aprašytas tokia logine išraiška: uz_kiek =>50. Tai reiškia, jog šio lauko įrašai „ praeina pro filtrą “ ir dalyvauja apdorojant duomenis, o likusieji įrašai tampa pasyvus („nematomi“). Todėl duomenų apdorojime dalyvaus tik tie įrašai, kurių užsakytas prekių kiekis bus lygus arba didesnis nei 50. Jei bus užsakyta prekių mažiau nei 50, tai su šiais duomenimis nebus atlikami jokie veiksmai, jie tiesiog bus „nematomi“ (žr. 22 pav.).

22 pav.  „ UZ_KIEK  “ filtras užsakymų lentelei
Analogiškas filtro atvejis pritaikytas ir lentelei „ pirkėjai “. Tik skirtumas toks, kad užsakytas prekių kiekis vienetais turi viršyti 20, tada įrašai bus aktyvūs ir dalyvaus apdorojant duomenis (žr. 23 pav.).                         23 pav.  „ UZ_KIEK  “ filtras pirkėjų lentelei

3.3 Lentelių ryšių schema.
Sudaryti ryšiai tarp lentelių (žr. 24 pav.):

24 pav.  Ryšiai tarp lentelių
3.4 Formos.
3.4.1 Forma :
Forma – tai tam tikras langas, skirtas vaizduoti, redaguoti laukų reikšmes iš vienos ar kelių DB lentelių. Tai būdas peržiūrėti DB įrašus naudojant įvairius navigacijos įrankius. Jų funkcijos: peržiūrėti, redaguoti, užpildyti duomenis.
3.4.2 Sukurtos formos :
Iš viso sukurtos penkios formos: 3 formos su vedliu (tiekėjai, tiekimas ir prekės, 25 pav., 26 pav., 27 pav. ); 1  subforma su vedliu (TIEKIMAS ir PREKĖS, 28 pav ); 1 forma su konstruktoriumi (užsakymai, 29 pav. ).

25 pav.  Forma su vedliu „ TIEKĖJAI “

26 pav.  Forma su vedliu „ TIEKIMAS “

27 pav.  Forma su vedliu „ PREKĖS “

28 pav.  Subforma su vedliu „ TIEKIMAS IR PREKĖS “

29 pav.  Forma su konstruktoriumi „ UŽSAKYMAI “
3.4.3 Su konstruktorium sukurtos formos parinktos savybės :
Aprašyti penki mygtukai (30 pav):
1 Mygtukas. „Sekantis įrašas“ ir jo aprašymas:
IF !EOF()                && Jei NE,tai lenteles pabaiga
SKIP 1               && Pereiti prie sekancio iraso
IF EOF()            && Jei uz lenteles ribu
SKIP -1      && Gristi atgal
ENDIF
ENDIF
_screen.ActiveForm.Refresh()  && Atstatyti
2 Mygtukas. „Ankstesnis įrašas“ ir jo aprašymas:
IF !BOF()          && Jei NE,tai lenteles pradzia
SKIP -1        && Gristi i ankstesni irasa
ENDIF
_screen.ActiveForm.Refresh()  && Atstatyti
3 Mygtukas. „Pradinis įrašas“ , su pranešimu ar norime grįžti į pradinį įrašą:
IF MESSAGEBOX(“Ar tikrai norite grizti prie pirmojo iraso ?”, 68, “Grizti”)=6
IF !BOF()                               && Jei NE,tai lenteles pradzia
GO TOP                            && Pereiti prie pirmojo iraso
ENDIF
_screen.ActiveForm.Refresh( )  && Atstatyti
ENDIF
4 Mygtukas. „Paskutinis įrašas“ ir jo aprašymas:
IF !EOF()                  && Jei NE,tai lenteles pabaiga
GO BOTTOM     && Pereiti prie paskutinio iraso
ENDIF
_screen.ActiveForm.Refresh() && Atstatyti
5 Mygtukas. „Baigti“ , su pranešimu ar norime pabaigti darbą:
IF MESSAGEBOX(“Ar tikrai norite baigti darba ?”, 36, “Baigti”)=6
_screen.ActiveForm.Release()
ELSE
_screen.ActiveForm.Refresh()
ENDIF
Panaudotas TextBox su įvedimo kontrole (30 pav.):
TextBox duomenų kontrolėje numatyta,kad užsakytų prekių kiekis vnt. nebūtų mažesnis nei 20 vnt.,kitaip išmetamas įspėjimas,jog yra per mažai užsakytų prekių ir dėl šios priežasties ne- galima     koreguoti visų kitų įrašų. TextBox aprašymas rašomas VALID savybėje:
IF uz_kiek<20
WAIT “Per mazai uzsakyta prekiu!” window
RETURN 0
ELSE
RETURN 1
ENDIF
Panaudotas ListBox kartu su TextBox. Per TextBox vykdomas pildymas, kai Value=1 (30 pav.). TextBox aprašomas taip (31 pav.):             31 pav.  TextBox aprašymas

30 pav.  Forma su konstruktoriumi „ UŽSAKYMAI “ savybės
Panaudotas Option Group, kuriuo naudojantis galima pasižiūrėti ir redaguoti kitų formų įrašus (30 pav.).
Option Group aprašytas taip (32 pav.):

32 pav.  Option Group aprašymas
3.5 Užklausos.
3.5.1 Užklausa :
Užklausa – tai interaktyvi priemonė duomenų atrankos (paieškos) projektavimui ir rūšiavimui.Vykdant atranką t.y. užklausą gali būti imami duomenys iš kelių lentelių ar kitų užklausų. Užklausos skirtos duomenims atrinkti pagal vartotojo pateiktas atrinkimo sąlygas. Užklausos sudaromos ne tik duomenims atrinkti, bet ir modifikuoti, šalinti ar papildyti, o taip pat išsaugoti atrinktus duomenis naujos lentelės formatu.
3.5.2 Sukurtos užklausos duomenų atrinkimui :
Paprasta (33 pav.), atrenkanti (34 pav.), skaičiuojamoji (35 a, b, c pav.), suvestinė (36 pav.), kryžminė (37 pav.) užklausos.
Paprasta – tai užklausa surenkanti duomenis iš vienos arkelių lentelių.
Atrenkanti – ima duomenis iš kelių lentelių pagal suformuotą atrankos kriterijų.
Skaičiuojamoji – joje formuojami laukai su apskaičiuotomis reikšmėmis.
Suvestinė – galimas duomenų grupavimas,duomenų grupių charakteristikų skaičiav.
Kryžminė – joje duomenys turi formatą, panašų į tą , kuris naudojamos elektroninėse lentelėse (skaičiuoklėse).

33 pav.  Paprasta užklausa

34 pav.  Atrenkanti užklausa

35 b pav.  Skaičiuojamoji užklausa
35 a pav.  Skaičiuojamoji užklausa

35 c pav.  Skaičiuojamoji užklausa

36 pav.  Suvestinė užklausa

37 pav.  Kryžminė užklausa
3.5.3 Sukurtų užklausų savybių aprašymas :
Paprasta užklausa išrenka laukus iš lentelės “Pirkėjai” (5 lentelė) ir surikiuoja jos įrašus pagal uz_kiek (užsakymo kiekis vienetais) mažėjimo tvarka (33 pav.).
Atrenkanti užklausa išrenka laukus iš lentelių “Tiekėjai” (1 lentelė), “Užsakymai” (4 lentelė) ir “Pirkėjai” (5 lentelė), ir į ekraną išveda tik tuos įrašus, kur tiek_pav  yra “Kasatis” (tiekėjo pavadinimas) ir uz_pr yra “Sasiuvinys” (užsakytos prekės). Taip pat surikiuoja įrašus pagal uz_kiek (užsakymo kiekį vienetais) didėjimo tvarka (34 pav.).
Skaičiuojamoji užklausa :
a)  Užklausa sudeda visų laukų esančių lentelėje „Prekės“ (3 lentelė) prekių kainas pr_k („Prekės kaina“ t.y. vieno vieneto kaina) ir yra gaunama bendra visų prekių vieneto kaina Sum_pr_k (35 a pav.).
b) Užklausa iš lentelių „Prekės“ (3 lentelė) ir „Užsakymai“ (4 lentelė) apskaičiuoja prekės bendrą kainą, priklausomai nuo jos užsakyto kiekio.Pvz.: jei uz_kiek(užsakymo kiekis vnt.) yra lygus 23 ir tos prekės pr_k(prekės kaina) 0,15 cnt, tai už  šį prekės kiekį reikės sumokėti 3,45 Lt (parodo laukas bendra_uzsakyta_kiekio_kaina, 35 c pav.).
c) Užklausa iš lentelės „Užsakymai“ (4 lentelė) suskaičiuoja užsakytų prekių kiekio vnt. vidurkį. Kaip matome, užsakytų prekių vidurkis: uz_kiek_vidurkis yra 55 (35 b pav).Užklausa yra išsaugota kaip lentelė (Free table,  6 lentelė) ir kaip txt (38 pav.) failas :
6 lentelė. Skaičiuojamosios užklausos vidurkis lentelėje

38 pav.  Skaičiuojamosios užklausos vidurkis TXT faile
Suvestinė užklausa išrenka laukus iš lentelių “Tiekėjai” (1 lentelė) ir “Tiekimas” (2 lentelė), ir sugrupuoja pagal tiek_dt (tiekimo data), taip pat išrenka, kad tiekimo data būtų ne vėlesnė, kaip 2004.10.03, kaip matome lentelėje „Tiekimas“ (2 lentelė) lauke tiekimo data yra 6 įrašai iš kurių ir atrinkta data yra ne vėlesnė, kaip 2004.10.03 (36 pav.).
Kryžminė užklausa padaryta su WIZARDU. Ji išrenka keturis laukus iš lentelės “Užsakymai” (4 lentelė) ir sudėlioja juos taip, kad trijų laukų susikirtime būtų ketvirtojo lauko reikšmė. Taip pat Total stulpelyje parodoma,kiek buvo užsakyta kiekvienos prekės atskirai (37 pav).
3.6 Ataskaitos.
3.6.1 Ataskaita :
Ataskaita – skirta foruotam duomenų išvedimui į ekraną, popierių arba tekstinį failą. Ataskaitos paskirtis yra pateikti duomenis, kuriuos būtų galima lengvai analizuoti, apibendrin- ti ir daryti išvadas. Joje atvaizduojamos DB turinio dalys.
3.6.2 Sukurtos trys lentelinės attaskaitos ir  parinktos atitinkamos savybės :
Viena iš vienos lentelės, antra – iš kelių, o trečia – pagal poreikį.
Viena iš vienos lentelė. Ataskaita kurta su WIZARDU. Panaudotas grupavimas pagal mėne- sius.Suskaičiuota  kiekvieno mėnesio užsakytų prekių kiekis vnt. vidurkis ir suma (39 pav.).

39 pav.  Ataskaita iš vienos lentelės
Antra – iš kelių lentelių. Įrašai paimti iš lentelių tiekimas (2 lentelė) ir prekės ((3 lentelė) 40 pav.).

40 pav. Ataskaita iš kelių lentelių
Pagal poreikį
a) PANAUDOTAS GRUPAVIMAS. Įrašai paimti iš lentelių „Prekės“ (3 lentelė) ir „Užsakymai“ (4 lentelė). Grupuojama pagal uz_kiek (užsakytų prekių kiekis vnt.).Taip pat pasirinkti du grupavimo pasirinkimai: 1) grupuojama į naują puslapį; 2) spausdinama grupės antraštė kiekviename psl. (41, 42, 43, 44 pav.).
1 puslapis

41 pav.  Ataskaita pagal poreikį
2 puslapis

42 pav. Ataskaita pagal poreikį

3 puslapis

43 pav. Ataskaita pagal poreikį

4 puslapis

44 pav. Ataskaita pagal poreikį

b) PANAUDOTI 2 SKIRTINGO TIPO SKAIČIUOJAMIEJI LAUKAI:
Išvedamas puslapio numeris:                                                                             (45 pav.)

45 pav. Ataskaitos puslapio numerio išvedimas

Išvedamas užsakytas mažiausias prekių kiekis vnt. ir kartu apačioje komentaras:   . Jei užsakytų prekių kiekis yra >19vnt., tai prekes galima užsakinėti, jei mažiau nei 20, tai prekių negalima užsakinėti, nes pagal reikalavimus prekių kiekis vienetais turi būti didesnis negu 19 vnt, kitaip užsakymas negalimas (46, 47, 48  pav):

46 pav. Ataskaitos sąlygos sakinys IIF

47 pav. Ataskaita, kurioje negalima užsakyti prekių
48 pav. Ataskaita, kurioje galima užsakyti prekes

c) PANAUDOTOS 3 LAUKŲ FORMATAVIMO GALIMYBĖS.
Grafoje „Prekės“ prekės pavadinimas yra perverstas iš mažųjų raidžių į didžiąsias, taip pat išvedamos reikšmės išlyginamos į kairę  pusę (49, 50 pav.).

49 pav. Ataskaitos formatavimo prekės pavadinimo character savybės

50 pav. Ataskaitos formatavimas 1
Prekės kainoje spausdinami nereikšminiai nuliai (51, 53 pav.):

51 pav. Ataskaitos formatavimo  prekės kainos numeric savybės
Grafoje „ Užsakymai “, kai užsakytų prekių kiekis yra lygus 0, tai nulinės reikšmės yra išvis nespausdinamos, o tik paliekama  tuščia vieta (52, 53 pav.). Matome, kad nebuvo išvis užsakytos šios prekės: trintukas, pieštukas, rašalas. Užtat grafoje užsakymai yra tuščia vieta.

52 pav. Ataskaitos formatavimo užsakytų prekių kiekio numeric savybės

53 pav. Ataskaitos formatavimas 2
d) PANAUDOTOS 3 SPAUSDINIMO SĄLYGOS:
1) Grafoje „Užsakymai“ nespausdina užsakytų prekių kiekio pasikartojančių reikš- mių. Laukus spausdina pirmoje naujo puslapio ar stulpelio eilutėje, jei jis nepratęstas iš kito puslapio ar stulpelio. (54 pav).

54 pav. Ataskaitos spausdinimo sąlyga 1
2) Išveda pasikartojančias laukų reikšmes (uzsakymai.uz_kiek). Nespausdina eilutės,  jei objektas nespausdinams ir nėra kito objekto,kuris toje eilutėje turi būti išvedamas (55 pav.)

55 pav. Ataskaitos spausdinimo sąlyga 2
3) Uzsakymai.uz_kiek lauko reikšmės yra spausdinamos, jei tenkinama tokia sąlyga:
uzsakymai.uz_kiek > 19 (56 pav.).

56 pav. Ataskaitos spausdinimo sąlyga 3
4.    DUOMENŲ KONTROLĖ.
4.1 Sudarytos duomenų kontrolės lentelėms:
Sudarytos trys įvedimo kontrolės: „pr_k“ lentelėje prekės (57 pav.), „uz_kiek“ lentelėje užsakymai: (58 pav.), „uz¬_kiek“ lentelėje pirkėjai (59pav.).
Lentelėje „ prekės “ nustatyta prekės kainos įvedimo kontrolė (pr_k>0), t.y. turi būti užsakyta bent viena prekė, kad būtų galima užsakinėti. Jei prekės kaina lygi 0, tai išmetama pranešimas (Message), jog „ Kaina negali būti lygi 0 “ (57 pav.).

57 pav.  „ Pr_k “ įvedimo kontrolė
Lentelėje „ užsakymai “ nustatyta įvedimo kontrolė užsakytam prekių kiekiui vienetais. Prekių turi būti užsakyta nemažiau 20 vienetų (uz_kiek =>20). Priešingu atveju, jei prekių bus užsakyta mažiau nei 20 vienetų, bus išmetamas toks pranešimas: „Per mažai užsakyta prekių !“. Todėl, jei pirkėjas norės pirkti mažiau nei 20 prekių, papraščiausiai jam bus neparduodamos išvis jokios prekės.Būtina sąlyga pirkėjui,kad prekių kiekis vienetais turi būti nemažiau 20 (58 pav.) .

58 pav.  „ Uz_kiek  “ įvedimo kontrolė
Lentelėje „ pirkėjai “ sudaryta įvedimo kontrolė yra analogiška lentelei „ užsakymai “ sudarytai įvedimo kontrolei (59 pav.).

59 pav.  „ Uz_kiek  “ įvedimo kontrolė
5.    PAGRINDINIAI VARTOTOJO SĄSAJOS LANGAI.
5.1 Meniu kūrimas.
5.1.1 Meniu  fromų ,užklausų , ataskaitų iškvietimas .
Sukurtas meniu (su submeniu) į kurį įtrauktos: formos, užklausos, ataskaitos.
1. Formų iškvietimas. Formos kurtos su submeniu,t.y. atidarant submeniu (60,61 pav.)

60 pav. Forma su submeniu 1

61 pav. Forma su submeniu 2

Kiekvienai formai aprašyta startavimo procedura:
„užsakymai“ (62 pav) :

62 pav. Formos užsakymai stratavimo procedūra

„tiekėjai“ (priskirta klavišų kombinacija iškvietimui CTRL+Q; 63, 64 pav.):

63 pav. Formos tiekėjai stratavimo procedūra

64 pav. Formos tiekėjai greita klavišų kombinacija

„tiekimas“ (priskirta klavišų kombinacija iškvietimui CTRL+W; 65,66 pav.) :

65 pav. Formos tiekimas startavimo procedūra

66 pav. Formos tiekimas greita klavišų kombinacija

„prekės“ (priskirta klavišų kombinacija iškviestimui CTRL+E; 67, 68 pav.):

67 pav. Formos prekės startavimo procedūra

68 pav. Formos prekės greita klavišų kombinacija
„pirkėjai“ (priskirta klavišų kombinacija iškviestimui CTRL+R; 69 pav.) :

69 pav. Formos pirkėjai startavimo procedūra

„tiekimas ir prekės“ (70 pav.):

70 pav. Formos tiekimas ir prekės startavimo procedūra

Formos iškvietimas meniu atrodytų taip (71 pav.):

71 pav. Formos iškvietimas meniu
2. Užklausų iškvietimas. Kiekvienai užklausai panaudota komanda DO, kuri paleidžia pasirinktą užklausą iš katalogo query. Taip pat kiekvienai užklausai priskirta klavišų kombinacija, su kuria galima greitai iškviesti užklausą (72 pav.).

72 pav. Užklausų iškvietimas su komanda DO
Paprastai užklausai :              CTRL+V ;    Suvestinei užklausai :                  CTRL+N
Atrenkančiai užklausai :          CTRL+B ;    Skaičiuojamajai užklausai :      CTRL+M
Kryžminei užklausai :                CTRL+K ;
Užklausų iškvietimas meniu atrodytų taip (73 pav.):

73 pav. Užklausų iškvietimas meniu
3. Ataskaitų iškvietimas.
Kiekvienai ataskaitai aprašyta startavimo procedūra:
„grupavimas“ (priskirta klavišų kombinacija iškviestimui CTRL+P ; 74 pav.) :

74 pav. Ataskaitos grupavimo startavimo procedūra
„konstruktorius“ (priskirta klavišų kombinacija iškviestimui CTRL+O; 75 pav.) :

75 pav. Ataskaitos konstruktoriaus startavimo procedūra
„is kelių“ (priskirta klavišų kombinacija iškviestimui CTRL+I ; 76 pav.) :

76 pav. Ataskaitos is kelių  lentelių startavimo procedūra

Ataskaitų iškvietimas meniu atrodytų taip (77 pav.):

77 pav. Ataskaitų iškvietimas meniu
5.1.2 Meniu  išvalymas .
Meniu galima pasirinkti „išvalyti“, bus išvaloma iškviesta užklausa, ataskaita ar forma. Ši išvalymo funkcija aprašoma taip (galima išvalyti nuspaudus CTRL+U) 78 pav.:

78 pav. Meniu išvalymas
5.1.3 Meniu  programos pabaigimas .
Meniu pasirinkus „Pabaiga“ išmetamas pranešimas ar norime baigti darbą (79 pav.).

79 pav. Meniu pabaigimas dirbti
Pabaigos pranešimas aprašomas taip (greita klavišų kombinacija CTRL+Y) 80 pav.:

80 pav. „Pabaiga“ meniu punkto aprašymas
5.2 Taikomosios sistemos kūrimas.
Sukurta taikomoji sistema.Taikomajai sistemai sukurta programa „prisijungimas.prg“, ši programa aprašoma taip (81 pav.) :

81 pav. Programos paleidimo aprašymas
Paleidus pagrindinį failą „dainius.exe“ pagal programos „prisijungimo“ turinį bus iškviestas meniu, bet pirmiausiai bus paprašyta įvesti „vartotojo vardą“ ir „slpatažodį“ blogai įvedus nors vieną iš šių duomenų „dainius.exe“ failas nebus užkrautas (82 pav).

82 pav. Prisijungimas prie meniu

„OK“ patvirtinimo mygtukas aprašomas taip (83 pav.):

83 pav. OK mygtuko aprašymas

6.    IŠVADOS.
1. Išvada. Sukurta duomenų bazė „raštinės reikmenų prekyba“, kuriai realizuoti pasi- rinkta Visual FoxPro duomenų bazių valdymo sistema.
2. Išvada. Sukurti kompiuterizuojamos veiklos modeliai. Tai aukščiausiojo ir nulinio lygmens DFD. Šie du modeliai detalizuoja DB veiklos procesus ir jų tarpusavio mainus.
3. Išvada. Atliktas normalizavimas, išvengiant nepageidaujamų funkcinių priklauso- mybių tarp lentelių laukų, kartu sumažinamas duomenų pertekliškumas ir supaprastinamas duomenų apdorojimas.
4. Išvada. Naudojant Visual FoxPro DBVS sukurti šie komponentai: formos, užklau- sos, ataskaitos. Formos skirtos duomenims įvesti, o užklausos ir ataskaitos užtikrina duomenų išrinkimą iš DB ir pateikimą vartotojui.
5. Išvada. Atlikta DB duomenų kontrolė, t.y. apribojimai pirkėjams, kai jie turi pirkti nemažesnį nurodytą prekių kiekį, kitaip prekės išvis bus jiems neparduodamos.
6. išvada. Sukurtas pagrindinis vartotojo sąsajos langas (meniu ir taikomoji sistema) duomenims peržiūrėti. Pagrindiniame lange pateikta: formos, užklausos ir ataskaitos.

7.    LITERATŪRA.
Naudota literatūra:
1.Misevičius A., Riškus A. Duomenų bazių valdymo sistema Visual FoxPro : darbas interaktyviuoju režimu ir objektinio programavimo elementai : mokomoji knyga. – Kaunas : Technologija, 2003.
2. V.Sekliuckis, G.Garšva, S.Gudas Duomenų bazės, Kaunas, Naujasis lankas, 2001.
3. Paskaitų medžiaga.

8.    PRIEDAI.
8.1 Lentelių pavyzdžiai.

1 lentelė. Tiekėjai

2 lentelė. Tiekimas

3 lentelė. Prekės

4 lentelė. Užsakymai

5 lentelė. Pirkėjai

8.2 Formų pavyzdžiai.

24 pav. Forma su vedliu „ PIRKĖJAI “

25 pav. Forma su vedliu „ TIEKĖJAI “

26 pav. Forma su vedliu „ TIEKIMAS “

27 pav. Forma su vedliu „ PREKĖS “

28 pav. Subforma su vedliu „ TEIKIMAS IR PREKĖS “

8.3 Užklausų pavyzdžiai.

33 pav.  Paprasta užklausa

34 pav.  Atrenkanti užklausa

35 b pav.  Skaičiuojamoji užklausa
35 a pav.  Skaičiuojamoji užklausa

35 c pav.  Skaičiuojamoji užklausa

36 pav.  Suvestinė užklausa

37 pav.  Kryžminė užklausa

8.4 Ataskaitų pavyzdžiai.

39 pav.  Ataskaita iš vienos lentelės

40 pav. Ataskaita iš kelių lentelių

1 puslapis

41 pav.  Ataskaita pagal poreikį

2 puslapis

42 pav. Ataskaita pagal poreikį
3 puslapis

43 pav. Ataskaita pagal poreikį
4 puslapis

44 pav. Ataskaita pagal poreikį
8.5 Pagrindinė forma.

29 pav.  Pagrindinė forma su konstruktoriumi „ UŽSAKYMAI “