Üliõpilaste ja õppeainete seoste haldus opilased (matriklinr, eesnimi, perekonnanimi) oppeained (ainekood, nimetus, eap) sooritused (id, matriklinr, ainekood, tulemus, aeg) CREATE TABLE opilased( matriklinr INT NOT NULL PRIMARY KEY, eesnimi VARCHAR(30), perekonnanimi VARCHAR(30) ); INSERT INTO opilased VALUES (99368, 'Siim', 'Tamm'); INSERT INTO opilased VALUES (99369, 'Jaanus', 'Tamm'); INSERT INTO opilased VALUES (99370, 'Kati', 'Kask'); CREATE TABLE oppeained( ainekood CHAR(6) PRIMARY KEY, nimetus VARCHAR(50), eap INT ); INSERT INTO oppeained VALUES ('MLB123', 'Bioloogia algkursus', 4); INSERT INTO oppeained VALUES ('MLK124', 'Keemia algkursus', 5); INSERT INTO oppeained VALUES ('MMM110', 'Matemaatika alused', 3); CREATE TABLE sooritused( id INT NOT NULL auto_increment PRIMARY KEY, matriklinr INT, ainekood CHAR(6), tulemus ENUM('A', 'B', 'C', 'D', 'E', 'F'), aeg DATETIME ); INSERT INTO sooritused VALUES (null, 99370, 'MLK124', 'A', NOW()); INSERT INTO sooritused VALUES (null, 99370, 'MMM110', 'A', NOW()); INSERT INTO sooritused VALUES (null, 99368, 'MLK124', 'B', NOW()); INSERT INTO sooritused VALUES (null, 99368, 'MMM110', 'C', NOW()); INSERT INTO sooritused VALUES (null, 99368, 'MLB123', 'C', NOW()); SELECT eesnimi, nimetus, tulemus FROM opilased, oppeained, sooritused WHERE sooritused.matriklinr=opilased.matriklinr AND sooritused.ainekood=oppeained.ainekood; -- proovi näide läbi SELECT nimetus, tulemus FROM opilased, oppeained, sooritused WHERE sooritused.matriklinr=opilased.matriklinr AND sooritused.ainekood=oppeained.ainekood AND eesnimi='Siim'; SELECT COUNT(*) FROM sooritused WHERE matriklinr=99368; --Koosta päring näitamaks, mitu õppeainet on tabelisse kantud SELECT eap FROM sooritused, oppeained WHERE sooritused.ainekood=oppeained.ainekood AND sooritused.matriklinr=99368; +------+ | eap | +------+ | 5 | | 3 | | 4 | +------+ SELECT SUM(eap) FROM sooritused, oppeained WHERE sooritused.ainekood=oppeained.ainekood AND sooritused.matriklinr=99368; +----------+ | SUM(eap) | +----------+ | 12 | +----------+ -- Leidke, mitme ainepunkti jagu aineid üldse tabelis on -- Leidke, mitme ainepunkti jagu aineid üldse sooritatud on -- Leidke, mitu ainet on sooritanud Kati. SELECT COUNT(*) FROM sooritused, opilased WHERE sooritused.matriklinr=opilased.matriklinr AND opilased.eesnimi='Kati'; SELECT nimetus FROM oppeained WHERE ainekood='MLB123'; +---------------------+ | nimetus | +---------------------+ | Bioloogia algkursus | +---------------------+ SELECT nimetus, (SELECT COUNT(*) FROM sooritused WHERE ainekood='MLB123') as kogus FROM oppeained WHERE ainekood='MLB123'; +---------------------+-------+ | nimetus | kogus | +---------------------+-------+ | Bioloogia algkursus | 1 | +---------------------+-------+ SELECT nimetus, ainekood FROM oppeained; +---------------------+----------+ | nimetus | ainekood | +---------------------+----------+ | Bioloogia algkursus | MLB123 | | Keemia algkursus | MLK124 | | Matemaatika alused | MMM110 | +---------------------+----------+ SELECT nimetus, (SELECT COUNT(*) FROM sooritused WHERE sooritused.ainekood=oppeained.ainekood) as kogus FROM oppeained; +---------------------+-------+ | nimetus | kogus | +---------------------+-------+ | Bioloogia algkursus | 1 | | Keemia algkursus | 2 | | Matemaatika alused | 2 | +---------------------+-------+ -- Leidke iga õpilase kohta, mitu ainet ta sooritanud on (eesnimi, kogus) SELECT eesnimi, (SELECT COUNT(*) FROM sooritused WHERE sooritused.matriklinr=opilased.matriklinr) as kogus FROM opilased; -- Lisage õpilase juurde, mitu ainepunkti tal koos on SELECT eesnimi, (SELECT COUNT(*) FROM sooritused WHERE sooritused.matriklinr=opilased.matriklinr) as ainetearv, (SELECT SUM(eap) FROM sooritused, oppeained WHERE sooritused.ainekood=oppeained.ainekood AND sooritused.matriklinr=opilased.matriklinr) as ainepunkte FROM opilased; ______________________________ Õpihaldussüsteemi veebiliides * Koosta veebileht, millel on näha olemasolevate õppeainete loetelu. * Võimaluse korral on aine nime ja koodi taga näha ka selle sooritanud õpilaste arv. * Arvul vajutades on näha aine sooritanud õpilaste loetelu koos tulemuste ja aegadega. ____ * Loo klass Oppeained õppeainete küsimiseks * Loo klass Oppeaine ühe aine andmete hoidmiseks Oppeained väljastab küsitud ained Oppeaine'te massiivina. * Loo klass Sooritused, lisa sinna funktsioon soorituste küsimiseks vastavalt etteantud ainekoodile ja matriklinumbrile. Nende puudumisel väljastatakse kõik sooritused. * Loo soorituste andmete hoidmiseks eraldi klass Sooritus. * Klassile Oppeaine lisa käsklus selle aine soorituste küsimiseks. Selle peale küsitakse Soorituste eksemplari abil masiivina välja vastava õppeaine sooritused. * Trüki lehele kõik baasis olevad õppeained ning neid sooritanud õppurite matriklinumbrid. * Loo juurde klass Opilased ja klass Opilane. Lisa klassile Opilased käsklus kõigi õpilaste küsimiseks Opilane-tüüpi massiivina ning ühe õpilase küsimiseks matriklinumbri järgi Opilane-objektina. * Loodud Opilaste eksemplari abil lisa Sooritus-klassile käsklus vastava soorituse teinud Opilase küsimiseks. Katseta funktsiooni tööd. Andmete kaitsmine parooliga CREATE TABLE kasutajad( kasutajanimi VARCHAR(30) NOT NULL PRIMARY KEY, paroolir2si CHAR(16) ); INSERT INTO kasutajad VALUES('juku', password('kala')); INSERT INTO kasutajad VALUES('kati', password('karu'));