Kurssipalautetietokanta
Aihe
Tietokantasovelluksella on tarkoitus pystyä helposti laatimaan kurssipalautekyselyjä. Tietokantaan kerätään kysymyspankkia, josta voi aina valita kurssille sopivat kysymykset tai luoda uusia kysymyksiä. Varsinainen vastausten kerääminen suoritetaan WWW-lomakkeella. Sopiva WWW-lomake
muodostetaan automaattisesti tietokannan tietojen perusteella.
Vaatimusmäärittely
Sovelluksella täytyy olla mahdollista laatia kurssikysely johon voi luoda joko
aivan uusia kysymyksiä tai käyttää jo ennestään olemassaolevia kysymyksiä.
Kysymyksiä voidaan luoda useampaa tyyppiä eli joko monivalintakysymyksiä tai
vapaita tekstikenttiä. Sovelluksen täytyy osata antaa kyselykohtaiset raportit
annetuista vastauksista.
ER-kaavio
Relaatiot
Relaatioiden määritykset
Kurssi
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
Koodi | CHAR(6) | Kyllä | | Kolme ensimmäistä merkkiä ovat kirjaimia ja kolme viimeistä numeroita |
Nimi | VARCHAR(64) | Kyllä | | |
Kysely
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
ID | INTEGER | Kyllä | | |
Aika | DATE | Kyllä | | |
Nimi | VARCHAR(128) | Kyllä | | |
Vastaus
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
Vastaaja | INTEGER | Kyllä | | |
Kysymys | INTEGER | Kyllä | | Vain olemassaolevat tietyn kyselyn kysymykset kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Teksti | VARCHAR(1024) | Ei | | |
Valinta | INTEGER | Ei | | Vain oikeaan kysymykseen liittyvät valinnat kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Vaihtoehto
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
VaihtoehtoID | INTEGER | Kyllä | | |
Vaihtoehto | VARCHAR(64) | Kyllä | | |
Kysymystyyppi
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
KysymystyyppiID | INTEGER | Kyllä | | |
Kysymystyyppi | VARCHAR(64) | Kyllä | | |
Kysymys
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
KysymysID | INTEGER | Kyllä | | |
Kysymys | VARCHAR(512) | Kyllä | | |
Kysymystyyppi | INTEGER | Kyllä | | Vain olemassaolevat kysymystyypit kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Valinta
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
ID | INTEGER | Kyllä | | |
Kysymys | INTEGER | Kyllä | | Vain olemassaolevat kysymykset kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Nro | INTEGER | Kyllä | 1 | >=0 |
Vaihtoehto | INTEGER | Kyllä | | Vain olemassaolevat vaihtoehdot kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Kyselyn kysymys
Ominaisuus | Tietotyyppi | Pakollinen | Oletusarvo | Rajoitteet |
ID | INTEGER | Kyllä | | |
Nro | INTEGER | Kyllä | 1 | >=0 |
Kysymys | INTEGER | Kyllä | | Vain olemassaolevat kysymykset kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Kysely | INTEGER | Kyllä | | Vain olemassaolevat kyselyt kelpaavat (DELETE RESTRICT, UPDATE CASCADE) |
Tähän vielä selitys mahdollisen normalisoinnin aiheuttamista muutoksista.
Relaatioiden luominen
DROP TABLE Vastaus
;
DROP TABLE Kyselyn_kysymys
;
DROP TABLE Valinta
;
DROP TABLE Kysymys
;
DROP TABLE Vaihtoehto
;
DROP TABLE Kysymystyyppi
;
DROP TABLE Kysely
;
DROP TABLE Kurssi
;
CREATE TABLE Kurssi (
Kurssikoodi CHAR(6) NOT NULL,
Nimi VARCHAR(64) NOT NULL,
CONSTRAINT Kurssi_PK
PRIMARY KEY (Kurssikoodi)
)
;
CREATE TABLE Kysely (
ID INTEGER NOT NULL,
Nimi VARCHAR(128) NOT NULL,
Aika DATE NOT NULL,
Kurssi CHAR(6) NOT NULL,
CONSTRAINT Kysely_PK
PRIMARY KEY (ID),
CONSTRAINT Kysely_UNIQ
UNIQUE (Kurssi, Aika, Nimi),
CONSTRAINT Kysely_FK
FOREIGN KEY (Kurssi)
REFERENCES Kurssi (Kurssikoodi)
ON UPDATE CASCADE
ON DELETE RESTRICT
)
;
CREATE TABLE Kysymystyyppi (
ID INTEGER NOT NULL,
Kysymystyyppi VARCHAR(64) NOT NULL,
CONSTRAINT Kysymystyyppi_PK
PRIMARY KEY (ID)
)
;
CREATE TABLE Vaihtoehto (
ID INTEGER NOT NULL,
Vaihtoehto VARCHAR(64) NOT NULL,
CONSTRAINT Vaihtoehto_PK
PRIMARY KEY (ID)
)
;
CREATE TABLE Kysymys (
ID INTEGER NOT NULL,
Kysymys VARCHAR(128) NOT NULL,
Kysymystyyppi INTEGER NOT NULL,
CONSTRAINT Kysymys_PK
PRIMARY KEY (ID),
CONSTRAINT Kysymys_FK
FOREIGN KEY (Kysymystyyppi)
REFERENCES Kysymystyyppi (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT
)
;
CREATE TABLE Valinta (
ID INTEGER NOT NULL,
Vaihtoehto INTEGER NOT NULL,
Kysymys INTEGER NOT NULL,
Nro INTEGER NOT NULL DEFAULT 1 CHECK ( nro >= 0 ),
CONSTRAINT Valinta_PK
PRIMARY KEY (ID),
CONSTRAINT Valinta_UNIQ
UNIQUE (Kysymys, Nro),
CONSTRAINT Valinta_FK_Vaihtoehto
FOREIGN KEY (Vaihtoehto)
REFERENCES Vaihtoehto (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT,
CONSTRAINT Valinta_FK_Kysymys
FOREIGN KEY (Kysymys)
REFERENCES Kysymys (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT
)
;
CREATE TABLE Kyselyn_kysymys (
ID INTEGER NOT NULL,
Nro INTEGER NOT NULL DEFAULT 1 CHECK ( nro >= 0 ),
Kysely INTEGER NOT NULL,
Kysymys INTEGER NOT NULL,
CONSTRAINT Kyselykys_PK
PRIMARY KEY (ID),
CONSTRAINT Kyselynkys_UNIQ1
UNIQUE (Kysely, Kysymys),
CONSTRAINT Kyselynkys_UNIQ2
UNIQUE (Kysely, Nro),
CONSTRAINT Kyselynkys_FK_Kysely
FOREIGN KEY (Kysely)
REFERENCES Kysely (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT,
CONSTRAINT Kyselynkys_FK_Kysymys
FOREIGN KEY (Kysymys)
REFERENCES Kysymys (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT
)
;
CREATE TABLE Vastaus (
Vastaaja INTEGER NOT NULL,
Kysymys INTEGER NOT NULL,
Teksti VARCHAR(8192),
Valinta INTEGER ,
CONSTRAINT Vastaus_PK
PRIMARY KEY (Vastaaja, Kysymys),
CONSTRAINT Vastaus_FK_Kysymys
FOREIGN KEY (Kysymys)
REFERENCES Kyselyn_kysymys (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT,
CONSTRAINT Vastaus_FK_Valinta
FOREIGN KEY (Valinta)
REFERENCES Valinta (ID)
ON UPDATE CASCADE
ON DELETE RESTRICT
)
;
Testidata
INSERT INTO kurssi (kurssikoodi,nimi) VALUES ('TIE160','Mikrotietokoneiden ohjelmistot');
INSERT INTO kysely (id,nimi,aika,kurssi) VALUES (1,'Kurssipalaute','2002-03-01','TIE160');
INSERT INTO kysymystyyppi (id,kysymystyyppi) VALUES (1,'Tekstikenttä');
INSERT INTO kysymystyyppi (id,kysymystyyppi) VALUES (2,'Radio');
INSERT INTO kysymystyyppi (id,kysymystyyppi) VALUES (3,'Checkbox');
INSERT INTO kysymystyyppi (id,kysymystyyppi) VALUES (4,'Combobox');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (0,'-');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (1,'TIE');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (2,'MAT');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (3,'FYS');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (4,'KEM');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (5,'Avoin yo');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (6,'TJT');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (7,'TLI');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (8,'TIL');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (9,'Muut');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (10,'Mies');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (11,'Nainen');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (20,'0');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (21,'1');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (22,'2');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (23,'3');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (24,'4');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (25,'5');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (26,'6');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (27,'7');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (28,'8');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (29,'9');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (30,'10');
INSERT INTO vaihtoehto (id,vaihtoehto) VALUES (31,'11');
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (1,'Pääaine',4);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (2,'Sukupuoli',2);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (40,'Ikä',1);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (3,'Kuinka monissa ohjatuissa demoissa kävit?',4);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (4,'Kuinka monet demot teit omalla ajallasi demoaikojen ulkopuolella?',4);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (5,'Kuinka monella luennolla olit?',4);
INSERT INTO kysymys (id,kysymys,kysymystyyppi) VALUES (6,'Kuinka monta luentoa kuuntelit kotisivuilta?',4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (0,0,1,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (1,1,1,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (2,2,1,3);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (3,3,1,4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (4,4,1,5);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (5,5,1,6);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (6,6,1,7);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (7,7,1,8);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (8,8,1,9);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (9,9,1,10);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (10,0,2,0);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (11,10,2,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (12,11,2,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (13,20,3,0);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (14,21,3,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (15,22,3,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (16,23,3,3);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (17,24,3,4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (18,25,3,5);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (19,26,3,6);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (20,27,3,7);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (21,28,3,8);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (22,20,4,0);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (23,21,4,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (24,22,4,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (25,23,4,3);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (26,24,4,4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (27,25,4,5);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (28,26,4,6);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (29,27,4,7);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (30,28,4,8);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (31,20,5,0);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (32,21,5,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (33,22,5,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (34,23,5,3);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (35,24,5,4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (36,25,5,5);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (37,26,5,6);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (38,27,5,7);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (39,28,5,8);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (40,29,5,9);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (41,30,5,10);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (42,31,5,11);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (43,20,6,0);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (44,21,6,1);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (45,22,6,2);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (46,23,6,3);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (47,24,6,4);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (48,25,6,5);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (49,26,6,6);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (50,27,6,7);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (51,28,6,8);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (52,29,6,9);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (53,30,6,10);
INSERT INTO valinta (id,vaihtoehto,kysymys,nro) VALUES (54,30,6,11);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (1,1,1,1);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (2,2,1,2);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (40,3,1,40);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (3,4,1,3);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (4,5,1,4);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (5,6,1,5);
INSERT INTO kyselyn_kysymys (id,nro,kysely,kysymys) VALUES (6,7,1,6);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,1,NULL,9);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,1,NULL,2);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,1,NULL,9);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,1,NULL,5);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,1,NULL,9);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,1,NULL,5);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,1,NULL,9);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,1,NULL,2);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,1,NULL,1);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,1,NULL,1);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,40,'22',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,40,'20',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,40,'36',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,40,'40',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,40,'27',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,40,'45',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,40,'23',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,40,'22',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,40,'24',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,40,'19',NULL);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,2,NULL,11);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,2,NULL,11);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,2,NULL,11);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,2,NULL,11);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,2,NULL,11);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,2,NULL,12);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,2,NULL,12);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,2,NULL,12);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,2,NULL,12);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,2,NULL,12);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,4,NULL,23);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,4,NULL,25);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,4,NULL,23);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,4,NULL,22);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,4,NULL,25);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,4,NULL,27);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,4,NULL,26);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,4,NULL,25);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,4,NULL,23);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,4,NULL,27);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,5,NULL,36);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,5,NULL,37);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,5,NULL,40);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,5,NULL,42);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,5,NULL,42);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,5,NULL,39);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,5,NULL,40);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,5,NULL,31);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,5,NULL,36);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,5,NULL,36);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (1,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (2,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (3,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (4,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (5,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (6,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (7,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (8,6,NULL,44);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (9,6,NULL,43);
INSERT INTO vastaus (vastaaja,kysymys,teksti,valinta) VALUES (10,6,NULL,43);
Kyselyt
-- Listataan kaikki vastaajat ja heidän vastauksensa
SELECT Vastaus.vastaaja, kysymys.kysymys, vaihtoehto.vaihtoehto
FROM Vastaus, kyselyn_kysymys, kysely, kysymys, valinta, vaihtoehto
WHERE Vastaus.kysymys = kyselyn_kysymys.id
AND kyselyn_kysymys.kysely = kysely.id
AND kyselyn_kysymys.kysymys = kysymys.id
AND vastaus.valinta IS NOT NULL
AND vastaus.valinta = valinta.id
AND valinta.vaihtoehto = vaihtoehto.id
AND valinta.kysymys = kysymys.id
ORDER BY Vastaus.vastaaja, kyselyn_kysymys.nro
;
-- Haetaan kukin kurssi ja siihen liittyvät kyselyt, näiden kysymykset ja kysymysten tyypit
SELECT kurssi.nimi, kysely.nimi, kyselyn_kysymys.nro, kysymys.kysymys, kysymystyyppi.kysymystyyppi
FROM kurssi
JOIN kysely ON kurssi.kurssikoodi = kysely.kurssi
JOIN kyselyn_kysymys ON kysely.id = kyselyn_kysymys.kysely
JOIN kysymys ON kyselyn_kysymys.kysymys = kysymys.id
JOIN kysymystyyppi ON kysymys.kysymystyyppi = kysymystyyppi.id
ORDER BY kurssi.kurssikoodi, kysely.aika, kyselyn_kysymys.nro
-- Luodaan kysely, joka laskee kyselykohtaisesti jokaisen kysymyksen keskiarvon
CREATE VIEW Keskiarvot AS
SELECT Kysely.ID AS Kysely, Kysymys.ID AS Kysymys, ROUND(AVG(vastaus.valinta), 0) AS Keskiarvo
FROM Vastaus, kyselyn_kysymys, kysely, kysymys, valinta, vaihtoehto
WHERE Vastaus.kysymys = kyselyn_kysymys.id
AND kyselyn_kysymys.kysely = kysely.id
AND kyselyn_kysymys.kysymys = kysymys.id
AND vastaus.valinta IS NOT NULL
AND vastaus.valinta = valinta.id
AND valinta.vaihtoehto = vaihtoehto.id
AND valinta.kysymys = kysymys.id
GROUP BY Kysely.ID, Kysymys.ID
;
-- Haetaan tietyn kyselyn kysymykset, niiden vaihtoehdot ja kysymysten tyypit numerojärjestyksessä
SELECT kyselyn_kysymys.id as kysymys, kyselyn_kysymys.nro, valinta.id as valid, valinta.nro as valinta, kysymys.kysymys,
kysymystyyppi.kysymystyyppi, vaihtoehto.vaihtoehto
FROM kyselyn_kysymys
JOIN kysymys ON kyselyn_kysymys.kysymys = kysymys.id
JOIN kysymystyyppi ON kysymys.kysymystyyppi = kysymystyyppi.id
JOIN valinta ON valinta.kysymys = kysymys.id
JOIN vaihtoehto ON valinta.vaihtoehto = vaihtoehto.id
AND kyselyn_kysymys.kysely = 2
ORDER BY kyselyn_kysymys.nro, valinta.nro
-- Haetaan tietyn kyselyn kysymystyn tunnisteet ja tyypit
SELECT kyselyn_kysymys.id, kysymystyyppi.kysymystyyppi
FROM Kysymys
JOIN Kysymystyyppi ON kysymys.kysymystyyppi = kysymystyyppi.id
JOIN kyselyn_kysymys ON kysymys.id = kyselyn_kysymys.kysymys
WHERE kyselyn_kysymys.kysely = 2;
VIELÄ KESKEN
Kommentit
Harjoitustyön tekemiseen kului N tuntia.
Harjoitustyön tekemisessä koin ongelmaksi ... ....
Harjoitustyössä oli hyvää ...