Keelekorpuse andmestik * Valdkonnad: Tekstide autorid Tekstid Kokkuvõtted/tööriistad * Tabelid Tekstide autorid autorid(id, synniaasta, elukoht, sugu, emakeel, kodukeel) elukohad(elukoht) keeled(nimetus) Tekstid tekstid(id, autor, salvestusaeg, kategooria, pealkiri, keel, keeletase, pikkus) tekstikategooriad(nimetus) keeletasemed(tase) vealiigid(id, ylataseme_id, nimetus) vead(id, teksti_id, vealiigi_id, parandaja) parandajad(perekonnanimi) Kokkuvõtted k_vealiigid(id, juur_id, yldarv) k_veadkoos(id, viga1, viga2, kogus) mysqladmin -uif16 -pifikad16 create if16_jaagup3_keel CREATE TABLE keeled(nimetus VARCHAR(50) NOT NULL PRIMARY KEY); CREATE TABLE elukohad(elukoht VARCHAR(50) NOT NULL PRIMARY KEY); CREATE TABLE tekstikategooriad(kategooria VARCHAR(50) NOT NULL PRIMARY KEY); CREATE TABLE keeletasemed(tase VARCHAR(50) NOT NULL PRIMARY KEY); CREATE TABLE parandajad(parandaja VARCHAR(50) NOT NULL PRIMARY KEY); INSERT INTO keeled VALUES ('eesti'); INSERT INTO keeled VALUES ('vene'); INSERT INTO keeled VALUES ('soome'); INSERT INTO elukohad VALUES ('Harjumaa'); INSERT INTO elukohad VALUES ('Läänemaa'); INSERT INTO elukohad VALUES ('Ida-Virumaa'); INSERT INTO elukohad VALUES ('Soome'); INSERT INTO tekstikategooriad VALUES ('kirjand'); INSERT INTO tekstikategooriad VALUES ('erakiri'); INSERT INTO tekstikategooriad VALUES ('artikkel'); INSERT INTO tekstikategooriad VALUES ('ümberjutustus'); INSERT INTO keeletasemed VALUES ('A2'); INSERT INTO keeletasemed VALUES ('B1'); INSERT INTO keeletasemed VALUES ('B2'); INSERT INTO keeletasemed VALUES ('C1'); INSERT INTO parandajad(parandaja) VALUES ('Kask'); INSERT INTO parandajad(parandaja) VALUES ('Saar'); INSERT INTO parandajad(parandaja) VALUES ('Tamm'); CREATE TABLE autorid ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, synniaasta INT, elukoht VARCHAR(50), sugu ENUM('M', 'N', 'Teadmata'), emakeel VARCHAR(50), kodukeel VARCHAR(50), FOREIGN KEY(emakeel) REFERENCES keeled(nimetus), FOREIGN KEY(kodukeel) REFERENCES keeled(nimetus), FOREIGN KEY (elukoht) REFERENCES elukohad(elukoht) ); CREATE TABLE tekstid( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, autori_id INT, salvestusaeg DATETIME, kategooria VARCHAR(50), pealkiri VARCHAR(50), keel VARCHAR(50), keeletase VARCHAR(50), pikkus INT, FOREIGN KEY(autori_id) REFERENCES autorid(id), FOREIGN KEY(kategooria) REFERENCES tekstikategooriad(kategooria), FOREIGN KEY(keel) REFERENCES keeled(nimetus), FOREIGN KEY(keeletase) REFERENCES keeletasemed(tase) ); CREATE TABLE vealiigid( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ylataseme_id INT, nimetus VARCHAR(50), FOREIGN KEY (ylataseme_id) REFERENCES vealiigid(id) ); CREATE TABLE vead( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, teksti_id INT, vealiigi_id INT, parandaja VARCHAR(50), FOREIGN KEY(teksti_id) REFERENCES tekstid(id), FOREIGN KEY(vealiigi_id) REFERENCES vealiigid(id), FOREIGN KEY(parandaja) REFERENCES parandajad(parandaja) ); INSERT INTO autorid VALUES (DEFAULT, 1996, 'Harjumaa', 'M', 'eesti', 'eesti'); INSERT INTO autorid VALUES (DEFAULT, 1996, 'Ida-Virumaa', 'M', 'vene', 'vene'); INSERT INTO autorid VALUES (DEFAULT, 1998, 'Ida-Virumaa', 'N', 'vene', 'eesti'); tekstid(id, autor, salvestusaeg, kategooria, pealkiri, keel, keeletase, pikkus) INSERT INTO tekstid VALUES(DEFAULT, 1, NOW(), 'ümberjutustus', 'Kevade I lõik', 'eesti', 'C1', 150); INSERT INTO tekstid VALUES(DEFAULT, 4, NOW(), 'ümberjutustus', 'Kevade I lõik', 'eesti', 'B1', 85); INSERT INTO tekstid VALUES(DEFAULT, 2, NOW(), 'ümberjutustus', 'Kevade I lõik', 'eesti', 'B2', 180); INSERT INTO tekstid VALUES(DEFAULT, 4, NOW(), 'erakiri', 'Selgitus õpetajale', 'eesti', 'B1', 100); INSERT INTO vealiigid VALUES (DEFAULT, NULL, 'Täheviga'); INSERT INTO vealiigid VALUES (DEFAULT, 1, 'Suure tähe viga'); INSERT INTO vealiigid VALUES (DEFAULT, 1, 'Vahelejäetud täht'); INSERT INTO vealiigid VALUES (DEFAULT, 3, 'Vahelejäetud sulghäälik'); INSERT INTO vealiigid VALUES (DEFAULT, NULL, 'Lauseviga'); INSERT INTO vealiigid VALUES (DEFAULT, 5, 'Sõnajärjeviga'); INSERT INTO vealiigid VALUES (DEFAULT, 5, 'Vahelejäetud sõna'); INSERT INTO vead VALUES (DEFAULT, 1, 2, 'Tamm'); INSERT INTO vead VALUES (DEFAULT, 1, 2, 'Tamm'); INSERT INTO vead VALUES (DEFAULT, 1, 3, 'Tamm'); INSERT INTO vead VALUES (DEFAULT, 4, 6, 'Kask'); INSERT INTO vead VALUES (DEFAULT, 4, 7, 'Kask'); Päringud: Tekstide pikkuste summa: SELECT SUM(pikkus) FROM tekstid; Tekstide pikkuste summa vastavalt elukohale: SELECT elukoht, SUM(pikkus) FROM tekstid JOIN autorid ON tekstid.autori_id=autorid.id GROUP BY elukoht; +-------------+-------------+ | elukoht | SUM(pikkus) | +-------------+-------------+ | Harjumaa | 150 | | Ida-Virumaa | 365 | +-------------+-------------+ Tekstide vigade arvu summa vastavalt elukohale: SELECT elukoht, COUNT(*) FROM tekstid JOIN autorid ON tekstid.autori_id=autorid.id JOIN vead ON vead.teksti_id=tekstid.id GROUP BY elukoht; +-------------+----------+ | elukoht | COUNT(*) | +-------------+----------+ | Harjumaa | 3 | | Ida-Virumaa | 2 | +-------------+----------+ Püüdke saada pikkuste summa ja vigade arv elukoha kohta ühte tabelisse Leidke nende suhe (mitu tähte tekstis ühe vea kohta) SELECT tabel1.elukoht, pikkustesumma, vigadearv, pikkustesumma/vigadearv AS suhe FROM (SELECT elukoht, SUM(pikkus) AS pikkustesumma FROM tekstid JOIN autorid ON tekstid.autori_id=autorid.id GROUP BY elukoht) AS tabel1 JOIN (SELECT elukoht, COUNT(*) AS vigadearv FROM tekstid JOIN autorid ON tekstid.autori_id=autorid.id JOIN vead ON vead.teksti_id=tekstid.id GROUP BY elukoht) AS tabel2 ON tabel1.elukoht=tabel2.elukoht;