1. Bendra informacija Užduotis: sukurti duomenų bazę su formomis, kuriomis galutinis vartotojas galėtų lengvai naviguoti bei pamatyti atitinkamą informaciją iš duomenų bazės. Duomenų bazę, t.y. lenteles, kūriau su „Oracle 9i“ programa, o formas – su “Forms Designer 1966”. Tema: „Quake III Arena“ pasaulinis turnyras 2001. Į duomenų bazę yra įvesti visi žaidėjai, dalyvavę pasauliniame “Quake III Arena” žaidimo turnyre, kuris vyko 2001 metų pavasarį, Korėjoje. “Quake III Arena” – tai kompiuterinis trimatis veiksmo žaidimas, tęsiantis seną ir ypač populiarią – “Id Software” kompanijos sukurtą – “Quake” žaidimų seriją. Žaidimas pagrįstas greitu veiksmu, puikiai subalansuotais ginklais, šiuolaikiška grafika bei yra lengvai žaidžiamas per tinklą. Žaidėjai kaunasi žemėlapiuose, kur yra išdėstyti ginklai, amunicija, šarvai bei vaistinėlės. Kiekvienas žemėlapis yra savitas, todėl žaidimo eiga ir pabaiga ne tik priklauso nuo žaidėjų įgūdžių, bet ir nuo aplinkos, kurioje jie žaidžia: platesnės erdvės leis ilgiau apgalvoti pasirinktą puolimo strategiją, kai tuo tarpu siauruose koridoriuose viską nulems reakcija. Sudariau penkias lenteles: informacija apie žaidėjus (viso 60), informacija apie mėgstamiausius žaidėjų ginklus (viso 8), sąrašas valstybių , iš kurių atvyko žaidėjai (viso 24), informacija apie mėgstamiausius žaidėjų žemėlapius (4) bei pirmą ir antrą dieną surinktų taškų suvestinė. 2. Lentelės 2.1 Kūrimas Taigi, kaip minėjau yra 5ios lentelės: valstybes, zaidejai, zemelapiai, taskai ir ginklai. Žemiau pateikiu šių lentelių sukūrimo sintaksę: • create table VALSTYBES ("VALSTYBES_ID" number(2) PRIMARY KEY, "PAVADINIMAS" varchar2(16)); • create table ZEMELAPIAI("ZEMELAPIO_ID" number(2) PRIMARY KEY, "PAVADINIMAS" varchar2(15), "GINKLAI" number(1), "SARVAI" number(1), "ZAIDIMO_TEMPAS" varchar2(17)); • create table GINKLAI("GINKLO_ID" number(2) PRIMARY KEY, "PAVADINIMAS" varchar2(18), "NUOTOLIS" varchar2(9), "AMUNICIJOS_SPALVA" varchar2(19)); • create table ZAIDEJAI ("ZAIDEJO_ID" number(2) PRIMARY KEY, "VARDAS_PAVARDE" varchar2(20), "GIMIMAS" date, "PSEUDONIMAS" varchar2(20), "SURINKTI_TASKAI" number(3), "VALSTYBES_ID" number(2), "ZEMELAPIO_ID" number(2), "GINKLO_ID" number(2), constraint ZAIDEJAI_VALSTYBES_ID_fk FOREIGN KEY("VALSTYBES_ID") REFERENCES VALSTYBES("VALSTYBES_ID") ON DELETE CASCADE); • create table TASKAI("ZAIDEJO_ID" number(2), "PIRMA_DIENA" number(3), "ANTRA_DIENA" number(3)); • alter table zaidejai add constraint ZAIDEJAI_ZEMELAPIO_ID_fk FOREIGN KEY("ZEMELAPIO_ID") REFERENCES ZEMELAPIAI("ZEMELAPIO_ID") ON DELETE CASCADE; • alter table zaidejai add constraint ZAIDEJAI_GINKLO_ID_fk FOREIGN KEY("GINKLO_ID") REFERENCES GINKLAI("GINKLO_ID") ON DELETE CASCADE; • alter table zaidejai add constraint TASKAI_ZAIDEJO_ID_fk FOREIGN KEY("ZAIDEJO_ID") REFERENCES ZAIDEJAI("ZAIDEJO_ID") ON DELETE CASCADE; Sukurtos jos atrodo sekančiai: SQL> select table_name from user_tables; TABLE_NAME ------------------------------ GINKLAI TASKAI VALSTYBES ZAIDEJAI ZEMELAPIAI 2.2 Struktūra Įvedus komandą desc zaidejai į „Oracle 9i“ konsolę, galima pasižiūrėti lentelės struktūrą (šiuo atveju, įvedus jau minėtą komandą, matysime lentelės zaidejai struktūrą). Taigi, žemiau pateikiu visų lentelių struktūrą: 1 pav.Lentelių struktūra. Iš kairės į dešinę: a) kolonėlėje Name talpinama lentelės kolonėlių pavadinimai; b) kolonėle Null? nusako, ar gali toje kolonėlėje įrašo nebūti. Jeigu yra įrašyta Not Null, vadinasi įrašas yra privalomas; c) ir paskutinė kolonėlė Type parodo nustatytus lentelės kolonėlių duomenų tipus. Number(2) reiškia galimi tik skaitmeniniai duomenys, iki 99 (2 skaičiai). Varchar2(15) leidžia naudoti simbolius, kurių eilutės seka būtų sudaryti daugiausiai iš 15 simbolių (varchar2 nurodo, jog atmintyje bus išskirta tiek vietos, kiek realiai įrašas užims. Tarkim įrašas yra 13 raidžių žodis, tai priešingai nei varchar tipe, jis 13 baitų ir užims). Ir galiausiai Date nusako, jog tai bus datos tipo duomenys. 2.3 Apribojimai Toliau galime pasiūrėti lentelėse sukurtus apribojimus: SQL> select constraint_name, constraint_type, table_name from user_constraints; CONSTRAINT_NAME C TABLE_NAME ------------------------------ - ------------------------------ SYS_C0049359 P GINKLAI SYS_C0049357 P VALSTYBES SYS_C0049360 P ZAIDEJAI ZAIDEJAI_VALSTYBES_ID_FK R ZAIDEJAI ZAIDEJAI_ZEMELAPIO_ID_FK R ZAIDEJAI ZAIDEJAI_GINKLO_ID_FK R ZAIDEJAI TASKAI_ZAIDEJO_ID_FK R ZAIDEJAI SYS_C0049358 P ZEMELAPIAI SYS_C0047938 P GINKLAI SYS_C0047939 P TASKAI SYS_C0047934 P VALSTYBES SYS_C0047935 P ZAIDEJAI ZAIDEJAI_VALSTYBES_ID_FK R ZAIDEJAI SYS_C0047937 P ZEMELAPIAI Taigi, lentelėse zaidejai, ginklai, zemelapiai, taskai bei valstybes egzistuoja dviejų tipų apribojimai: 1. Lentelė ZAIDEJAI. Kolonėlės Valstybes_ID, Zemelapio_ID, Ginklo_ID turi Foreign Key apribojimą, ir taip yra susietos su lentelėmis VALSTYBES, ZEMELAPIAI bei GINKLAI ryšiu vienas-su-daug. Taip pat lentele ZAIDEJAI turi ir Primary Key apribojimą Zaidejo_ID kolonėlėje. Tiek PK, tiek ir FK apribojimai neleidžia įrašams kartotis ar būti neįvestiems. 2. Lentelė GINKLAI. Kolonėlė Ginklo_ID turi Primary Key apribojimą. 3. Lentelė VALSTYBES. Kolonėlė Valstybes_ID turi taip pat Primary Key apribojimą. 4. Lentelė ZEMELAPIAI. Kolonėlė Zemelapio_ID turi Primary Key apribojimą. 5. Lentelė Taskai. Kolonėlė Zaidejo_ID turi Foreign Key apribojimą. 2.4 Ryšiai 2 pav. Ryšiai tarp lentelių. Čia pavaizduoti ryšiai tarp esančių lentelių. 1 - ryšys (vienas-su-daug) nusako, jog tarkim lentelėje ZEMELAPIAI vieną žemėlapį iš lentelės ZAIDEJAI gali atitikti daug žaidėjų. Toks pat principas galioja ir lentelėms GINKLAI bei VALSTYBES. O lentelė TASKAI su ZAIDEJAI yra susieta vienas-su-vienu ryšiu – kiekvienas įrašas iš lentelės TASKAI atitinka vieną įrašą (šiuo atveju žaidėją) ZAIDEJAI lentelėje. 3. Formos Kad su sukurta duomenų baze butų dirbti patogiau bei suprantamiau eiliniam vartotojui, sukūriau 11 formų. Darbą galima pradėti paleidus pagrindinę formą – intro.fmb. Čia bus titulinis langas, kuriame matysite nuorodas į kitas formas: 3 pav. Pagrindinė forma. Čia matome darbo pavadinimą, autorių, logotipą bei mygtukus. Būtent pasinaudojus mygtukais, galima patekti į kitas formas. Taigi, apie mygtukų reikšmes: Perziura – atidarys formą, kurioje galima pasirinkti vieną iš keturių formų tik peržiūrėjimui. Ivedimas – atidarys formą, kurioje galima pasirinkti vieną iš trijų formų duomenų įvedimui. Plačiau apie jas kiek vėliau. Paieska – atidarius formą, leidžia ieškoti žaidėjų pagal jų vardus arba pseudonimus. Apie turnyra – trumpa informacija apie vykusį turnyrą bei „Quake III Arena“. Beje, verta paminėti, jog kiekvienoje formoje yra panaudotas automatiškas užklausos paleidimo mechanizmas, tik ją atidarius. Tai įgyvendinta trigerio WHEN_NEW_FORM_INSTACE pagalba, įvedus komandą: Execute_query; 3.1 Peržiūra Pasirinkus pagrindiniame meniu mygtuką Perziura, bus atidaryta forma su mygtukais. 4 pav. Peržiūros forma. Kaip matome, čia galima pasirinkti vieną iš keturių mygtukų, kuris atidarys atitinkamą formą. Beje, bet kuriuo metu galima grįžti į pradinį meniu, paspaudus mygtuką meniu. 3.1.1 Valstybės ir žaidėjai Ši forma yra master-detail tipo. Master blokas čia yra lentelė VALSTYBES, o detail – ZAIDEJAI. Šios lentelės yra susietos per Valstybes_ID kolonėlę. 5 pav. Forma „Valstybės ir žaidėjai“. Navigacija čia paprasta: mygtukais galite vaikščioti po Valstybes_ID įrašus ir matyti apatiniame bloke atitinkamus žaidėjus iš tam tikros valstybes. Kartu su šiais mygtukais panaudoti du WHEN-MOUSE-CLICK trigeriai: a) per vieną įrašą atgal: begin go_item('Valstybes_ID'); go_block('Valstybes'); previous_record; end; b) per vieną įrašą į priekį: begin go_block('Valstybes'); go_item('Valstybes_ID'); next_record; end; Mygtukas meniu veikia taip pat WHEN-MOUSE-CLICK trigerio pagalba: OPEN_FORM('C:\TEMP\intro.fmx'); P a s t a b a. Kurie mygtukai kartosis tolesnėse formose, jų neaptarinėsiu, kadangi veikimo principas išliks tas pats, skirsis tik parametrai. 3.1.2 Ginklai ir žaidėjai Ši forma taip pat yra master-detail tipo. Čia master blokas yra GINKLAI, o detail blokas – ZAIDEJAI. Sujungtos šios lentelės čia per Ginklo_ID kolonėlę. 6 pav. Forma „Ginklai ir žaidėjai“. 3.1.3 Žemėlapiai ir žaidėjai Dar viena master-detail tipo forma. Čia master blokas yra ZEMELAPIAI, o detail blokas – ZAIDEJAI. Sujungtos šios lentelės čia per Zemelapio_ID kolonėlę. 7 pav. Forma „Žemėlapiai ir žaidėjai“. 3.1.4 Žaidėjai ir taškai Paskutinioji master-detail tipo forma. Priešingai nei kitose formose, čia master blokas yra ZAIDEJAI, o detail blokas – TASKAI. Sujungtos šios lentelės čia per Zaidejo_ID kolonėlę. Taip pat šioje formoje įgyvendinti Radio mygtukai. Pažymėjus atitinkamai vieną iš jų, bus rodomi žaidėjai, tenkinantys pasirinktą kriterijų. Pvz., pasirinkus pirmąji Radio mygtuką, kairėje bus rodomi žaidėjai, kurie surinko mažiau nei 100 taškų. Taip pat su pele paspaudus ant norimo žaidėjo, būtų galima pamatyti detaliau pirmą ir antrą dienomis surinktus taškus bloke TASKAI. 8 pav. Forma „Žaidėjai ir taškai“. 3.2 Įvedimas Atsidarius šios formos langui, bus matomi trys mygtukai, kuriuos pasirinkus bus galima įvedinėti atskirai – arba žaidėjus, arba ginklus, arba valstybes. 3.2.1 Žaidėjai 9 pav. Forma „Žaidėjų įvedimas“. Be jau minėtu ir meniu mygtukų, ši forma dar papildyta keliais naujais: a) Trinti – šis mygtukas leis ištrinti įrašą. Vėlgi WHEN-MOUSE-CLICK trigeris: begin go_item('Valstybes_ID'); go_block('Valstybes'); delete_record; end; Taip pat paspaudus šį mygtuką pasirodys įspėjantysis pranešimas (ALERT), klausiantis ar tikrai norime ištrinti įrašą. Šis pranešimas sukurtas į ALERTS skiltį įdėjus DELETE_ALERT bei Program Unit skiltyje įrašius programos kodą: PROCEDURE Rodyti_delete_Alert IS return_alert NUMBER; BEGIN return_alert:=show_alert('DELETE_ALERT'); if return_alert=alert_button1 then commit; else rollback; end if; END; b)Naujas – leis įvedinėti naują įrašą: begin go_block('Zaidejai'); create_record; end; c)Paskutinis – rodys paskutinį įrašą: begin go_block('Zaidejai'); last_record; end; d)Issaugoti – išsaugos visus pakeitimus: commit_form; 3.2.2 Valstybės Analogiška forma prieš tai aptartai, tik vienintelis skirtumas – čia galima įvesti tik valstybes. 10 pav. Forma „Valstybių įvedimas“. 3.2.3 Ginklai Forma, skirta ginklų įvedimui. 11 pav. Forma „Ginklų įvedimas“. 3.3 Paieška 12 pav. Forma „Paieška“. Šioje formoje yra realizuotas „List Of Values“, arba trumpiau LOV. Būtent jo pagalba galime atlikti paiešką žaidėjų tiek pagal pseudonimą, tiek pagal vardą ar pavardę. Sukūrus LOV su vedliu, jis yra priskiriamas mygtukui paieska ir aktyvuojamas trigeriu WHEN-BUTTON-PRESSED: declare return_lov Boolean; begin return_lov:=Show_lov('LOV2'); end; Čia LOV2 yra pavadinimas. O paieškos forma paspaudus mygtuką atrodys sekančiai: 3.4 Pabaiga Galiausiai, iškilus neaiškumams ar norint labiau susipažinti su nagrinėjama tema, iš pagrindinio meniu galima pasirinkti apie turnyra mygtuką: 13 pav. Forma „Apie turnyrą“. Ir galiausiai, norint baigti darbą, pasirenkame mygtuką uzdaryti, iš pagrindinio meniu. Šis mygtukas yra įgyvendintas WHEN-MOUSE-CLICKED trigeryje įrašius kodą exit_form; 7. Išvados Sukūriau duomenų bazę su penkiomis lentelėmis, ryšiais bei vaizdingomis formomis įvairiai informacijai įvesti bei ja manipuliuoti. Didesnių problemų neturėtų kilti netgi nedaug įgudusiam vartotojui: mygtukai pakankamai suprantami, tekstas aiškus. Kuriant naudotas „Oracle 9i client edition“ bei „Forms Builder 1996“. 8. Literatūra 1. Introduction to Oracle9i – SQL; 2. Oracle9i – Develop PL/SQL Program Units; 3. Oracle9i DBA Fundamentals; 4. Prentice Programming Oracle Triggers And Stored Procedures 3rd Edition; 5. OraFaq.com forumai; 6. www.worldcybergames.com
Šį darbą sudaro 1582 žodžiai, tikrai rasi tai, ko ieškai!
★ Klientai rekomenduoja
Šį rašto darbą rekomenduoja mūsų klientai. Ką tai reiškia?
Mūsų svetainėje pateikiama dešimtys tūkstančių skirtingų rašto darbų, kuriuos įkėlė daugybė moksleivių ir studentų su skirtingais gabumais. Būtent šis rašto darbas yra patikrintas specialistų ir rekomenduojamas kitų klientų, kurie po atsisiuntimo įvertino šį mokslo darbą teigiamai. Todėl galite būti tikri, kad šis pasirinkimas geriausias!
Norint atsisiųsti šį darbą spausk ☞ Peržiūrėti darbą mygtuką!
Mūsų mokslo darbų bazėje yra daugybė įvairių mokslo darbų, todėl tikrai atrasi sau tinkamą!
Panašūs darbai
Atsisiuntei rašto darbą ir neradai jame reikalingos informacijos? Pakeisime jį kitu nemokamai.
Pirkdamas daugiau nei vieną darbą, nuo sekančių darbų gausi 25% nuolaidą.
Išsirink norimus rašto darbus ir gauk juos akimirksniu po sėkmingo apmokėjimo!