Lisää `INSERT INTO` -lausein tehtävän 1 Persons-tauluun oheinen sisältö. Vainion Viljan fobia tulee tallentua ilman, että kirjoitat sitä näkyviin INSERT INTO -lauseessasi
Osoita INSERT INTO -lausein, että Persons-tauluun ei voi lisätä rivejä joissa
A. sukupuoli ei ole sallittujen sukupuolten joukossa
B. email on täsmälleen sama kuin jollakin jo tauluun jo tallennetulla henkilölllä
C. hetu on liian pitkä
Tämän tehtävän vastauksena tulee palauttaa kaikki käyttämäsi INSERT INTO -lauseet (6kpl) ja virheilmoitukset näiden kolmen viimeisen INSERT INTO -operaation epäonnistumisesta.
ERROR 1406 (22001): Data too long for column 'hetu' at row 1
```
## Tehtävä 3 [6p]
Tässä tehtävässä tarvitaan tehtävissä 1 ja 2 luotua Persons-taulua 3 rivin sisältöineen.
Luo lisäksi taulu PhoneManufacturers, jossa on sarakkeet
(1A)id, kokonaisluku, automaattisesti kasvava sarake, pakollinen, perusavain
(1B) manufacturer, vaihtuvamittainen merkkijono max 32 merkkiä, pakollinen
Luo lisäksi taulu PhoneNumbers, jossa on sarakkeet
```
MariaDB [H6]> CREATE TABLE PhoneManufacturers(
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> manufacturer VARCHAR(32) NOT NULL
-> );
Query OK, 0 rows affected (0.032 sec)
```
(2A)phonenumber, vaihtuvamittainen merkkijono max 64 merkkiä, pakollinen, perusavain
(2B) hetu, kiinteämittainen merkkijono 11 merkkiä, pakollinen. Tämä sarake toimiii viiteavaimena Persons-taulun hetu-sarakkeeseen (perusavain). Vyörytyssääntönä on sekä DELETE- että UPDATE-operaatioille kieltää sellaisten isätaulun henkilöiden poistaminen/muuttaminen, joilla on puhelinnumeroita.
(2C) manufacturerID, kokonaisluku, ei pakollinen, oletusarvo NULL. Tämä sarake toimiii viiteavaimena PhoneManufacturers-taulun id-sarakkeeseen (perusavain). Vyörytyssääntönä on sekä DELETE- että UPDATE-operaatioille asettaa isätaulun valmistajaksi NULL silloin, kun ollaan poistamassa/muuttamassa sellaisen valmistajan tietoja, joihin on liitettynä puhelinnumeroita.
Lisää INSERT INTO -lausein PhoneManufacturers-tauluun puhelinvalmistaja Samsung ja Apple.
```
MariaDB [H6]> INSERT INTO PhoneManufacturers(manufacturer) VALUES
-> ("Samsung"),
-> ("Apple");
Query OK, 2 rows affected (0.002 sec)
Records: 2 Duplicates: 0 Warnings: 0
```
Lisää henkilölle Ken Guru puhelin numeroineen, jonka valmistaja on Samsung. Lisää henkilöille Elo Vainio ja Vilja Vainio puhelimet numeroineen, joiden valmistaja on Apple.
```
MariaDB [H6]> INSERT INTO PhoneNumbers(phonenumber,hetu,manufacturerID) VALUES
-> ("0449348123","121212-1234",1),
-> ("0403123398","121212-1235",2),
-> ("0403123399","121212-1236",2);
Query OK, 3 rows affected (0.004 sec)
Records: 3 Duplicates: 0 Warnings: 0
```
Poista PhoneManufacturers-taulusta valmistaja Samsung ja totea että käyttäjän Ken Guru puhelinvalmistaja on NULL tämän operaation jälkeen.
```
MariaDB [H6]> DELETE FROM PhoneManufacturers WHERE manufacturer = "Samsung";
Query OK, 1 row affected (0.002 sec)
MariaDB [H6]> SELECT * FROM Phonenumbers;
+-------------+-------------+----------------+
| phonenumber | hetu | manufacturerID |
+-------------+-------------+----------------+
| 0403123398 | 121212-1235 | 2 |
| 0403123399 | 121212-1236 | 2 |
| 0449348123 | 121212-1234 | NULL |
+-------------+-------------+----------------+
3 rows in set (0.000 sec)
```
Yritä poistaa käyttäjä Vilja Vainio Persons-taulusta ja totea, että poisto ei onnistu vyörytyssääntöjen takia.
```
MariaDB [H6]> DELETE FROM Persons WHERE etunimi = "Vainio" AND sukunimi = "Vilja"; -- Sukunimi ja etunimi insertissä väärinpäin! :D
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`h6`.`phonenumbers`, CONSTRAINT `fk_hetu` FOREIGN KEY (`hetu`) REFERENCES `persons` (`hetu`) ON DELETE NO ACTION ON UPDATE NO ACTION)
```
Tämän tehtävän vastauksena tulee palauttaa kaikki tehtävän ratkaisemiseksi käyttämäsi SQL-lauseet ja mahdolliset näytteet operaatioiden onnistumisesta tai epäonnistumisista.
## Tehtävä 4 [6p]
Tee alustava karkea harjoitustyön suunnitelma. Pyri vastaamaan suunnitelmalla seuraaviin kysymyksiin
* Mikä on harjoitustyösi aihe?
* Millainen voisi olla ytimekäs muutaman virkkeen toimeksianto * harjoitustyöllesi?
* Mitkä ovat kaikista keskeisimmät asiat, joista tietoa tallennetaan tietokantaan?
* Millaiset voisivat olla ihan keskeisimmät käsitteet/taulut, joita harjoitustyössäsi tarvitaan? Voit piirtää halutessasi kaavion ihan kynälllä paperille (palautukseen kuva), draw.io:lla jne.
* Mikä on alustava harjoitustyöryhmäsi kokoonpano?
* Muuta?
Tämän suunnitelman ei tarvitse toteutua, mutta jokaisen tästä tehtävästä pisteitä haluavan on esitettävä tässä vaiheessa tämä suunnitelma. Kaikki samaan ryhmään (tässä vaiheessa) kuuluvat voivat esittää saman suunnitelman.
Suunnitelman laajuus A4-tulosteena noin 1/2-1 sivua!
Palautusformaatti vapaa
## Tietokanta sovellukseen, jolla prosessoidaan (maanmittauslaitoksen) ortoilmakuvia Microsoft Flight Simulatorissa käytettäväksi maaston tekstuuriksi.
Työn tekijä: Teemu Koskinen
Suomesta tuotetaan ilmakuvausaineistoa vuosittain kevään - kesän aikana suoritettavilla ilmakuvauksilla. Maanmittauslaitos jalostaa kuvat UTM-karttalehtijaon mukaan jaetuiksi ortokuviksi. Yksittäinen kuvausalue kattaa 2-3000 neliökilometriä, jonka kuvausaika ja laatu voidaan arvoida "yhtenä könttänä". Soveltuvat kuvausalueet prosessoidaan "tiileiksi", joka voidaan esimerkiksi syöttää erillisen ohjelman kautta Microsoft Flight Simulatoriin maaston tekstuuriksi.
Lähdetiedostoista tärkeitä tallennettavia arvoja `karttalehden tunnus`, `tiedostopolku` ja `kuvausalue`.
`Kuvausalueista` tallennetaan niiden arvioitu `nimi`, `kuvausaika`, `laatu` ja `värikorjaus`.
Kohdetiileille tärkeitä arvoja ovat `tiilen tunnus (QUADKEY)` ja `käytetyt lähdetiedostot``prosessoinnin pvm`.
(Jos tuntuu, että tämä jää vajaaksi, voidaan mahdollisesti (jopa todennäköisesti, nyt kun työn vaatimuksia tarkastelen) laajentaa koskemaan muitakin tietolajeja (Korkeusmalli, Vektoriaineistot esimerkiksi tiestöstä...), joita käytetään virtuaalisen maailman rakentamiseen.)