English version of the materials are work in progress!
Expect bugs, typos, and other issues. The English version is expected to be completed during spring 2026.
Exercise: Normalization Practice
This exercise contains a collection of various exercises related to normalization. Choose the exercises that interest you and do them.
Before doing this exercise, it is recommended that you first familiarize yourself with the concept of functional dependency in Chapter 5.1 and normal forms in Chapter 5.2. This task is long and requires good familiarity with the material! So do the tasks with thought and remember to look at the model answers; the most important thing is understanding the matter.
Huomautus
Jos huomaat virheitä tai sinulla on kysyttävää tehtävistä, ota yhteyttä kurssin opettajiin
- lähettämällä sähköpostia osoitteeseen
itka2004-teachers@jyu.onmicrosoft.com - laittamalla viestiä kurssin Teams-ryhmään tai osallistumaalla ohjauksiin: Teams ja ohjaukset
Grading and Model Answers
In this exercise, you must grade your answers yourself based on the model answer. Do as follows:
First do the exercise independently. Take your time to familiarize yourself with the tasks in this part. The purpose is to practice, so mistakes are allowed!
When you think you have completed and saved the exercise, give yourself points by clicking the "Set custom points" selection above the task, entering your score (min. 0, max. 1) and pressing the confirm button:
Example: Self-assessment of an exercise and viewing the model answer Give yourself points between 0-1 based on how well you think you managed to do the exercise. Even if you didn't get everything right, give yourself at least 0.01 for a good attempt 🙂
You can now view the model answer by pressing the "Show model answer" button. When you open the model answer for the first time, you might see the following notification:

You can press "OK" in this dialog, which marks the exercise as done.
Familiarize yourself with the model answer. You can still correct your original answer if you wish.
Compare your own answer to the model answer briefly in the text box at the end of the exercise. Is the answer similar? Where are there differences and what could they be due to?
Save your assessment. You can still give your assessment a score of 0-1 depending on how good your answer is in light of the model answer.
About Notations
In this task, functional dependencies are denoted as follows:
{a, b, c} -> {d, e, f}
The above means the same as:
{a, b, c} -> {d}
{a, b, c} -> {e}
{a, b, c} -> {f}
The notation means that attributes d, e and f are functionally dependent on the combination of attributes a, b and c. In other words, the combination of values of attributes a, b and c identifies the values of attributes d, e and f.
Tip: In this task, it is always worth starting work with paper and pencil! On paper, you can for example draw functional dependencies directly with arrows in the following way:
Exercise 1
Tarkastellaan alkuun funktionaalisia riippuvuuksia. Olkoon meillä relaatio R (a, b, c, d, e, f), jolle tiedetään pätevän seuraavat funktionaaliset riippuvuudet:
{a} -> {b}
{b} -> {c}
{a} -> {f}
{a, c} -> {d}
{c} -> {e, f}
Harjoitus: Normalisoinnin harjoittelua
Tämä harjoitustehtävä sisältää kokoelman erilaisia normalisointiin liittyviä harjoituksia. Valitse sinua kiinnostavat harjoitukset ja tee ne.
Ennen tämän harjoituksen tekemistä on suositeltavaa, että tutustut ensin funktionaalisen riippuvuuden käsitteeseen Luvussa 5.1 sekä normaalimuotoihin Luvussa 5.2. Tämä tehtävä on pitkä ja vaatii hyvää perehtymistä materiaaliin! Tee siis tehtävät ajatuksella ja muista katsoa mallivastaukset; tärkeintä on asian ymmärtäminen.
Huomautus
Jos huomaat virheitä tai sinulla on kysyttävää tehtävistä, ota yhteyttä kurssin opettajiin
- lähettämällä sähköpostia osoitteeseen
itka2004-teachers@jyu.onmicrosoft.com - laittamalla viestiä kurssin Teams-ryhmään tai osallistumaalla ohjauksiin: Teams ja ohjaukset
Harjoitusten pisteytys ja mallivastaukset
Tässä harjoituksessa sinun tulee pisteyttää vastauksesi itse mallivastauksen perusteella. Tee seuraavasti:
Tee ensin harjoitus itsenäisesti. Tutustu rauhassa tämän osan tehtäviin. Tarkoitus on harjoitella, joten virheet ovat sallittu!
Kun olet mielestäsi saanut harjoituksen tehtyä ja tallennettua, anna itsellesi pisteet klikkaamalla tehtävän yläpuolella olevaa "Aseta mukautetut pisteet" -valintaa, syöttämällä pistemääräsi (min. 0, maks. 1) ja painamalla vahvistuspainiketta:
Esimerkki: Harjoituksen itsearviointi ja mallivastauksen katsominen Anna itsellesi pisteet välillä 0-1 sen perusteella, kuinka hyvin mielestäsi sait tehtyä harjoituksen. Vaikka et olisi saanut kaikkea oikein, anna itsellesi vähintään 0,01 hyvästä yrityksestä 🙂
Voit nyt katsoa mallivastaus painamalla "Näytä mallivastaus" -painiketta. Kun avaat mallivastauksen ensimmäistä kertaa, saatat nähdä seuraavan ilmoituksen:

Voit painaa tässä dialogissa "OK", jolloin harjoitus merkitään tehdyksi.
Tutustu mallivastaukseen. Voit vielä halutessasi korjata alkuperäisen vastauksesi.
Vertaile harjoituksen lopussa olevassa tekstilaatikossa omaa vastausta mallivastaukseen lyhyesti. Onko samankaltainen vastaus? Missä löytyy eroja ja mistä ne voivat johtua?
Tallenna arviosi. Voit vielä antaa arviollesi pistemäärän 0-1 sen mukaan, kuinka hyvin vastauksesi on mallivastauksen valossa.
Merkinnöistä
Tässä tehtävässä funktionaaliset riippuvuudet merkitään seuraavasti:
{a, b, c} -> {d, e, f}
Yllä oleva tarkoittaa samaa kuin:
{a, b, c} -> {d}
{a, b, c} -> {e}
{a, b, c} -> {f}
Merkintä tarkoittaa, että attribuutit d, e ja f ovat funktionaalisesti riippuvaisia attribuuttien a, b ja c yhdistelmästä. Toisin sanoin attribuuttien a, b ja c arvojen yhdistelmä yksilöi attribuuttien d, e ja f arvot.
Vinkki: Tässä tehtävässä kannattaa aina aloittaa työskentely paperilla ja kynällä! Paperille voit esimerkiksi piirtää funktionaalisia riippuvuuksia suoraan nuolilla seuraavalla tavalla:
Harjoitus 1
Tarkastellaan alkuun funktionaalisia riippuvuuksia. Olkoon meillä relaatio R (a, b, c, d, e, f), jolle tiedetään pätevän seuraavat funktionaaliset riippuvuudet:
{a} -> {b}
{b} -> {c}
{a} -> {f}
{a, c} -> {d}
{c} -> {e, f}
Exercise 2
Olkoon käytössä seuraava relaatio R, jossa pätevät seuraavat funktionaaliset riippuvuudet:
R (a, b, c, d, e, f)
- {a, b, c} -> {d}
- {b, c} -> {f}
- {d} -> {e}
Oletetaan, että attribuutit on kaikki tyypitetty oikein eikä mikään attribuutti ole lista (tai muuten sisällä montaa arvoa samalla rivillä).
Harjoitus 2
Olkoon käytössä seuraava relaatio R, jossa pätevät seuraavat funktionaaliset riippuvuudet:
R (a, b, c, d, e, f)
- {a, b, c} -> {d}
- {b, c} -> {f}
- {d} -> {e}
Oletetaan, että attribuutit on kaikki tyypitetty oikein eikä mikään attribuutti ole lista (tai muuten sisällä montaa arvoa samalla rivillä).
Exercise 3
Olkoon käytössä seuraava relaatio R, jossa pätevät seuraavat funktionaaliset riippuvuudet:
R (a, b, c, d)
- {a} -> {b, c, d}
- {b} -> {a, d}
Oletetaan, että attribuutit on kaikki tyypitetty oikein eikä mikään attribuutti ole lista (tai muuten sisällä montaa arvoa samalla rivillä).
Harjoitus 3
Olkoon käytössä seuraava relaatio R, jossa pätevät seuraavat funktionaaliset riippuvuudet:
R (a, b, c, d)
- {a} -> {b, c, d}
- {b} -> {a, d}
Oletetaan, että attribuutit on kaikki tyypitetty oikein eikä mikään attribuutti ole lista (tai muuten sisällä montaa arvoa samalla rivillä).
Exercise 4
Olet saanut toimeksiannon softayritys KirjaSofta Rönkä & Köllinen Ky:ltä. Tehtävänäsi on tarkastaa heidän kehittämänsä, Suomen pienkirjastoissa laajasti käytössä oleva, kirjastojen lukupiiritietokanta. Tietokanta luotiin aikoinaan superketterällä MaxAgile™-menetelmällä, jossa sovellusta ja tietokantaa on päivitetty asiakkaiden tarpeiden mukaan kiinnittämättä erityistä huomiota tietokannan loogiseen rakenteeseen. Tietokannan datamäärä on kasvanut niin suureksi, että palvelimelta alkaa loppua tila. Rahaa lisätilan hankkimiseen ei ole, vaan sen sijaan sinua pyydettiin tarkastamaan tietokannan looginen rakenne ja mahdollisesti parantamaan tilankäyttöä normalisoimalla tietokanta.
Tietokannan rakenne on tällä hetkellä seuraava:
Kirja (kirja_id, nimi, genre, kustantaja, kieli)
Kirjasto (kirjasto_id, nimi, osoite)
KirjaTilaus (tilaus_id, kirja_id, kirjasto_id, maara)
Lukupiiri (kirjasto_id, kirja_id, pvm, sali, alkamisklo)
KirjaTilaus.kirja_id -> Kirja.kirja_id
KirjaTilaus.kirjasto_id -> Kirjasto.kirjasto_id
Lukupiiri.kirjasto_id -> Kirjasto.kirjasto_id
Lukupiiri.kirja_id -> Kirja.kirja_id
Haastattelemalla eri kirjastojen edustajia saat seuraavat tarkentavat tiedot lukupiiritietokannasta:
- Tietokantaa käyttävät eri kirjastot ympäri Suomea. Kirjastoissa on saleja, joissa pidetään lukupiirejä kirjoista.
- Kirjastot voivat tilata kirjoja suoraan kustantajalta. Jokainen kirjasto tekee oman tilauksensa.
- Yhdellä tilauksella voi tilata useampia eri kirjoja tiettyjä määriä. Tietokannassa
maarakertoo, kuinka monta kappaletta kutakin kirjaa tietty kirjasto on tilannut. - Tietty kirjasto tilaa yhtä kirjaa vain kerran.
- Sama kirja voi löytyä useasta kirjastosta.
- Tiettynä päivänä tietyn kirjan lukupiiri pidetään vain yhdessä kirjaston salissa. Eri kirjastoissa voidaan kuitenkin samaan aikaan pitää saman kirjan lukupiiri.
- Kirjaston lukupiirejä pidetään rajoitetusti. Tietyn kirjaston tietyssä lukusalissa pidetään tiettynä päivänä vain yhden kirjan lukupiiri korkeintaan kerran.
- Kirjalla voi olla useampi genre, jotka tallennetaan kaikki
genre-attribuuttiin, mutta sillä on vain yksi kieli ja yksi kustantaja. - Kustantajalta saa vain tietynkielisiä kirjoja.
Harjoitus 4
Olet saanut toimeksiannon softayritys KirjaSofta Rönkä & Köllinen Ky:ltä. Tehtävänäsi on tarkastaa heidän kehittämänsä, Suomen pienkirjastoissa laajasti käytössä oleva, kirjastojen lukupiiritietokanta. Tietokanta luotiin aikoinaan superketterällä MaxAgile™-menetelmällä, jossa sovellusta ja tietokantaa on päivitetty asiakkaiden tarpeiden mukaan kiinnittämättä erityistä huomiota tietokannan loogiseen rakenteeseen. Tietokannan datamäärä on kasvanut niin suureksi, että palvelimelta alkaa loppua tila. Rahaa lisätilan hankkimiseen ei ole, vaan sen sijaan sinua pyydettiin tarkastamaan tietokannan looginen rakenne ja mahdollisesti parantamaan tilankäyttöä normalisoimalla tietokanta.
Tietokannan rakenne on tällä hetkellä seuraava:
Kirja (kirja_id, nimi, genre, kustantaja, kieli)
Kirjasto (kirjasto_id, nimi, osoite)
KirjaTilaus (tilaus_id, kirja_id, kirjasto_id, maara)
Lukupiiri (kirjasto_id, kirja_id, pvm, sali, alkamisklo)
KirjaTilaus.kirja_id -> Kirja.kirja_id
KirjaTilaus.kirjasto_id -> Kirjasto.kirjasto_id
Lukupiiri.kirjasto_id -> Kirjasto.kirjasto_id
Lukupiiri.kirja_id -> Kirja.kirja_id
Haastattelemalla eri kirjastojen edustajia saat seuraavat tarkentavat tiedot lukupiiritietokannasta:
- Tietokantaa käyttävät eri kirjastot ympäri Suomea. Kirjastoissa on saleja, joissa pidetään lukupiirejä kirjoista.
- Kirjastot voivat tilata kirjoja suoraan kustantajalta. Jokainen kirjasto tekee oman tilauksensa.
- Yhdellä tilauksella voi tilata useampia eri kirjoja tiettyjä määriä. Tietokannassa
maarakertoo, kuinka monta kappaletta kutakin kirjaa tietty kirjasto on tilannut. - Tietty kirjasto tilaa yhtä kirjaa vain kerran.
- Sama kirja voi löytyä useasta kirjastosta.
- Tiettynä päivänä tietyn kirjan lukupiiri pidetään vain yhdessä kirjaston salissa. Eri kirjastoissa voidaan kuitenkin samaan aikaan pitää saman kirjan lukupiiri.
- Kirjaston lukupiirejä pidetään rajoitetusti. Tietyn kirjaston tietyssä lukusalissa pidetään tiettynä päivänä vain yhden kirjan lukupiiri korkeintaan kerran.
- Kirjalla voi olla useampi genre, jotka tallennetaan kaikki
genre-attribuuttiin, mutta sillä on vain yksi kieli ja yksi kustantaja. - Kustantajalta saa vain tietynkielisiä kirjoja.
Exercise 5
Kaukainen ystävän ystävän ystäväsi pitää kuukausittain Kortepohjassa levyraateja opiskelijaporukan kesken. Satuit kerran tulemaan paikalle tutustumaan vaihto-opiskelijoihin, näkemään Kortepohjan hienon Rentukka-rakennuksen sekä arvioimaan muiden lempparibiisejä.
Tapaat raadissa ystävän ystävän ystäväsi. Hän esittelee ylpeänä, että raati otetaan vakavasti, ja kaikkien osallistujien arvioista on pidetty kirjaa jo vuodesta 2000 lähtien. Hän näyttää, että kaikki arvioinnit kirjataan seuraavanlaiseen Excel-taulukkoon:
| tun | nimi | kaup | maatunnus | etun | enimi | perust_vuosi | atun | animi | julk_vuosi | agenre | arvosana | teksti |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Pop | 5 | Hyvä oli |
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Protopunk | 5 | Hyvä oli |
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Manserock | 5 | Hyvä oli |
| o002 | Oscar | Madrid | ES | e002 | Frederik | 1964 | a002 | Tsingis Khan | 1979 | Pop | 3 | Hyvä |
| o002 | Oscar | Madrid | ES | e002 | Frederik | 1964 | a003 | Killeri | 1991 | Pop | 2 | Ihan ok |
| o003 | Make | Tampere | FI | e002 | Frederik | 1964 | a003 | Killeri | 1991 | Pop | 5 | Paras |
Kurssin ITKA2004 Tietokannat ja tiedonhallinta nohevana opiskelijana kauhistut näkemästäsi Excel-taulukosta: niin paljon datan toistoa!
Päästyäsi kotiin otat paperin ja mietit, miten turhaa datan toistoa voisi vähentää normalisoimalla. Ennen lähtöä sait selville seuraavia asioita Excel-taulukosta:
- Taulukkoon tallennetaan henkilön perustietoja (nimi, kaup, maatunnus).
- Taulukkoon tallennetaan arvioitavan albumin tietoja (animi, jul_vuosi, agenre) sekä albumin esittäjän tietoja (enimi, perust_vuosi). Albumin genret kirjataan ylös tilastointia varten.
- Henkilö arvioi yleensä 1–5 eri albumia. Jokaisesta albumista kirjataan henkilön antama arvosana sekä lyhyt palaute (arvosana, teksti).
- Sama henkilö voi kirjoittaa yhdestä albumista vain yhden arvostelun.
- Haun nopeuttamiseksi yleisille asioille annetaan yksilöllinen tunnus: henkilöille (tun), albumeille (atun) ja esittäjille (etun).
Harjoitus 5
Kaukainen ystävän ystävän ystäväsi pitää kuukausittain Kortepohjassa levyraateja opiskelijaporukan kesken. Satuit kerran tulemaan paikalle tutustumaan vaihto-opiskelijoihin, näkemään Kortepohjan hienon Rentukka-rakennuksen sekä arvioimaan muiden lempparibiisejä.
Tapaat raadissa ystävän ystävän ystäväsi. Hän esittelee ylpeänä, että raati otetaan vakavasti, ja kaikkien osallistujien arvioista on pidetty kirjaa jo vuodesta 2000 lähtien. Hän näyttää, että kaikki arvioinnit kirjataan seuraavanlaiseen Excel-taulukkoon:
| tun | nimi | kaup | maatunnus | etun | enimi | perust_vuosi | atun | animi | julk_vuosi | agenre | arvosana | teksti |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Pop | 5 | Hyvä oli |
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Protopunk | 5 | Hyvä oli |
| o001 | Repe | Jyväskylä | FI | e001 | Juice Leskinen | 1970 | a001 | L | 2000 | Manserock | 5 | Hyvä oli |
| o002 | Oscar | Madrid | ES | e002 | Frederik | 1964 | a002 | Tsingis Khan | 1979 | Pop | 3 | Hyvä |
| o002 | Oscar | Madrid | ES | e002 | Frederik | 1964 | a003 | Killeri | 1991 | Pop | 2 | Ihan ok |
| o003 | Make | Tampere | FI | e002 | Frederik | 1964 | a003 | Killeri | 1991 | Pop | 5 | Paras |
Kurssin ITKA2004 Tietokannat ja tiedonhallinta nohevana opiskelijana kauhistut näkemästäsi Excel-taulukosta: niin paljon datan toistoa!
Päästyäsi kotiin otat paperin ja mietit, miten turhaa datan toistoa voisi vähentää normalisoimalla. Ennen lähtöä sait selville seuraavia asioita Excel-taulukosta:
- Taulukkoon tallennetaan henkilön perustietoja (nimi, kaup, maatunnus).
- Taulukkoon tallennetaan arvioitavan albumin tietoja (animi, jul_vuosi, agenre) sekä albumin esittäjän tietoja (enimi, perust_vuosi). Albumin genret kirjataan ylös tilastointia varten.
- Henkilö arvioi yleensä 1–5 eri albumia. Jokaisesta albumista kirjataan henkilön antama arvosana sekä lyhyt palaute (arvosana, teksti).
- Sama henkilö voi kirjoittaa yhdestä albumista vain yhden arvostelun.
- Haun nopeuttamiseksi yleisille asioille annetaan yksilöllinen tunnus: henkilöille (tun), albumeille (atun) ja esittäjille (etun).
Finally
When you are ready, you can continue forward to the next chapter.
You can give a short self-assessment of your success and general feedback on the exercise below.
Lopuksi
Kun olet valmis, voit jatkaa eteenpäin seuraavaan lukuun.
Voit antaa lyhyen itsearvion onnistumisestasi ja yleisesti palautteen harjoituksesta alla.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.