12.3.2 Relaatiomalli
Jos
tiedot on talletettu relaatiomallin mukaan, voi olla kannattavaa tehdä
myös sisäinen tietorakenne vastaavaksi. Vaikka jatkossa emme
toteutakaan kerhoon vielä harrastuksia, teemme tietorakenteen ja oliot
sellaisiksi, että harrastusten käsittely jälkeenpäin olisi
mahdollisimman helppoa.
Toteutettavaa
ohjelmaa ajatellen tästä valinnasta seuraa yksi byrokratiaporras (
cKerho
<-> cJasenet
)
lisää, joka aluksi saattaa tuntua turhalta. Valinta maksaa
itseään takaisin vasta ongelman monimutkaistuessa. Tähän
samaan monimutkaistumisongelmaan tulemme törmäämään
jatkossakin. Yksinkertaisin mahdollisuus, jolla vaadittu toimenpide juuri ja
juuri voidaan suorittaa, johtaa usein jatkoa ajatellen umpikujaan.
Tehtävä
12.112
Lisää
harrastus
- Kirjoita
algoritmi uuden harrastuksen lisäämiseksi. (Ks. alla oleva kuva)
Tehtävä
12.113
Mitä
harrastaa
- Kirjoita
algoritmi, joka vastaa kysymykseen "Mitä henkilö N harrastaa?"
Tehtävä
12.114
Kuka
harrastaa
- Kirjoita
algoritmi, joka vastaa kysymykseen: "Ketkä harrastavat harrastusta H?".
Tehtävä
12.115
Poista
harrastus
- Kirjoita
algoritmi harrastuksen poistamiseksi.
Tehtävä
12.116
Jäsenen
poistaminen
- Kirjoita
algoritmi, joka poistaa jäsenen jonkin nimi on N.
Tehtävä
12.117
"Roskaharrastukset"
- Kirjoita
algoritmi, joka poistaa "roskaharrastukset", eli ne harrastukset, joille ei
löydy "omistajaa". Tällaiseen tilanteeseen hyvässä
ohjelmassa ei tietenkään koskaan päädytä.
Tehtävä
12.118
Monta
saman lajin harrastajaa
- Jos
harrastusten nimet ovat kovin pitkiä ja harrastuksista talletetaan
vielä kuhunkin harrastukseen liittyvää lisätietoa, niin
edellä mainittu rakenne käy tehottomaksi heti kun löytyy useita
saman lajin harrastajia. Esitä ratkaisu, jossa hukkatilaa (mm. saman
harrastuksen nimen toistamista) ei esiinny, mutta jolla voidaan tehdä
kaikki samat tehtävät, kuin esitetyllä ratkaisulla.
Kuva 12.5 Harrastukset relaation avulla