Iako mi je vrlo privlacna pomisao da uradim tabele i serviram ti gotovo rjesenje (a vjerujem i tebi

), necu to uraditi iz prostog razloga sto zelim da ispratim minimum korektnosti koji odrzavamo na ovom forumu. Prema tome, sledi lagana lekcija iz teorija o bazama podataka:
Osnovni cilj koriscenja BP (baza podataka) je da se izbjegne ponavljanje istih podataka na vise mjesta. Ti, iz nekog razloga zelis da imas podatke o imenu i prezimenu ucenika i u tabeli UCENIK i u tabli OPOMENE ili kao vec... Osim sto krsi sva pravila projektovanja BP, ovo predstavlja i nepotreban posao.
Zasto da u tabelu OPOMENE upisujemo ime i prezime kad jednostavno mozemo ove podatke procitati iz tabele UCENIK? Kako?
Nisi bez razloga u tabelu UCENIK stavio i polje Sifra_ucenika. Mozemo pretpostaviti da je vrijednost ovog polja jedinstvena za svakog ucenika u bazi, odnosno da ne postoje dva ucenika sa istom sifrom. Logicno, sledi zakljucak da mi svakog ucenika mozemo identifikovati pomocu samo jednog polja - Sifra_ucenika. Ovo polje se strucno naziva "kljuc".
Da bi ti bilo jasnije o cemu govorim, otvori primjer koji sam ja zakacio i klikni na Tools/Relationships.
Sada cu ti predloziti kako ja mislim da tabela OPOMENE treba da izgleda:
Sifra_ucenika - govori nam ko je dobio opomenu;
Datum_opomene - logicno je pretpostaviti da je i ovo potrebna informacija;
Vrsta_opomene - koju opomenu je ucenik dobio?
Naravno, mogu se dodati i ostala polja, po potrebi.
Kako mozemo znati koje je opomene ima ucenik Scekic Slavko, sa sifrom 123456?
Pa, postavimo jednostavno pitanje: "Koje opomene postoje u tabeli OPOMENE gdje je Sifra_ucenika=123456?"
Odnosno, formalni SQL upit bi izgledao ovako:
SELECT * FROM 'OPOMENE' WHERE Sifra_ucenika=123456;
Objasnjenja djelova komande:
SELECT - izaberi, izvuci
* - na mjestu gdje je zvjezdica navode se polja koja zelimo da prikazemo. Zvjezdica znaci "sva polja" i rezultat bi izgledao ovako:
******************************************
Sifra_u |
Datum_op |
Vrsta_opomene
******************************************
123456 | 01.01.2008 | Opomena
------------------------------------------------------
123456 | 15.05.2008 | Strogi ukor
------------------------------------------------------
123456 | 30.06.2008 | Ukor pred iskljucenje
******************************************
Da smo umjesto * stavili
Datum_opomene, Vrsta_opomene, dobili bi sledeci reultat:
*******************************
Datum_op |
Vrsta_opomene
*******************************
01.01.2008 | Opomena
----------------------------------------
15.05.2008 | Strogi ukor
----------------------------------------
30.06.2008 | Ukor pred iskljucenje
*******************************
Primjecujes da sada nema polja Sifra_ucenika. Ovako mozemo da se igramo do sjutra. Idemo dalje sa objasnjenjem komande:
FROM - na engleskom, kao sto znas, znazi "IZ". Nakon ovoga navodimo ime tabele iz koje zelimo da izvucemo podatke.
WHERE - (engl. GDJE JE) sluzi da ogranicimo pretragu na samo odredjene zapise. U ovom slucaju, ovo znaci: "Gdje je Sifra_ucenika=123456".
Da smo stavili
WHERE Vrsta_opomene='Strogi ukor' dobili bi smo u odgovoru sve ucenike koji su ikada dobili strogi ukor.
Ako se izostavi WHERE klauzula (uslov), kao rezultat cemo imati sve zapise iz tabele koju smo naveli nakon FROM.
Da vidimo koliko me pratis...
Pretpostavimo da u tabeli OPOMENE imamo sledeci zapis:
******************************************
Sifra_u |
Datum_op |
Vrsta_opomene
******************************************
123456 | 01.01.2008 | Opomena
------------------------------------------------------
Kako mozemo saznati ime i prezime ucenika koji ima sifru 123456? Hint: ove podatke mozemo procitati iz tabele UCENIK.
Naravno, uvijek mozes i prweskociti sve ove zavrzlame, ali ja zelim da iz ovoga nesto i naucis. Pozdrav...
[Ovu poruku je menjao Scelle dana 19.05.2008. u 11:12 GMT+1]
[Ovu poruku je menjao Scelle dana 19.05.2008. u 11:26 GMT+1]
"Takozvani praktični ljudi bili bi korisni i zasluživali bi svaku pohvalu i poštovanje kad od te svoje praktičnosti ne bi hteli da naprave smisao života i razlog svoga opstanka, opravdanje za podjarmljivanje i terorisanje svih onih koji su lišeni toga praktičnog smisla, ali zato stvoreni za druge, možda više i bolje podvige."
Ivo Andric