Mål
-
Att få erfarenhet av en databashanterare med en annan datamodell
än relationsmodellen.
-
Att få erfarenhet av en variant av objektdatabashanterare,
i det här fallet en objektrelationell databashanterare som inte bygger
på en vanlig relationsdatabas.
-
Att få kunskaper om och erfarenhet av den experimentella databashanteraren
Amos II och dess frågespråk AMOSQL.
Förberedelser
-
Läs lämpligt kursmaterial med mera.
-
Ladda hem den experimentella databashanteraren Amos II,
från dess
hemsida,
där man kan
ladda ner
den. Den finns för Windows, Linux och Mac.
Där finns också manualer och beskrivningar av pågående forskning.
-
Om länkarna ovan inte fungerar som de ska, finns
lokala kopior
av filerna från 2015-02-22.
-
Fördjupning:
En mer fullständig
användarhandledning
-
Hjälpmedel: Ett
Cheat sheet for Amos II
Om man kör Linux-versionen, som är ett 32-bitarsprogram,
behöver man förmodligen installera ett 32-bitarsbibliotek och sätta variabeln LD_LIBRARY_PATH.
Det här fungerade på min Ubuntu 20.04 LTS:
sudo apt install libc6-i386
export LD_LIBRARY_PATH=/sökväg/till/katalogen/med/amos2-programmet/och/libamos.so
Uppgifter
-
Gå igenom och provkör alla kommandona i
Introductory tutorial till Amos II och AMOSQL.
-
Gå igenom och provkör alla kommandona i
Tutorial on object-oriented data modeling with Amos II.
Filen "demo/tutorial.amosql" har en "commit"-sats sist i filen.
Tänk på att den rensar bort variablerna (till exempel ":ita"),
så du kanske inte vill köra den satsen.
-
I slutet av den tutorialen finns avsnittet "Exercises" med några frågor
man ska ställa mot databasen.
Det finns några fel i den, så gör den här versionen i stället.
(Obs: Ny ordning på frågorna!)
-
Make a derived function
ref_name(Match)->Charstring
that, given a certain match, returns the
name of the referee that refereed the match.
-
Create a derived function
referees(Charstring)->Charstring
that, given the name of a certain
player, returns the names of the referees that refereed games where that player participated.
-
Who were the referees in the games where Tomas Brolin played?
Use the derived function from the question above.
-
Which years were World Cup tournaments played?
-
A team is trained by a trainer. A trainer has a name and a salary. Create the types and functions
needed to model this. Create a trainer object too. Store name and salary for the created trainer.
Specify thereafter an AMOSQL command showing the name and salary for all trainers.
-
How many times did Mexico arrange the World Cup?
-
What match had the most spectators? Assign the environment variable :m to the answer. Then use
:m to retrieve the number of spectators and what teams that played in that match.
(Use the function matchinfo.)
-
What games did Sweden win?
-
How many goals did Kurt Hamrin make?
-
Create a function that returns the matches in which a given team was playing.
Create another function computing the total number of goals for a given team.
Use the function to compute the name of the country in the database making most goals.
-
How many players are members of several teams?
(There are no such players in the database, so you need to add some to test your query.)
Redovisning
Skriv ut och visa svaren på frågorna för läraren, demonstrera eventuellt, och diskutera,
eller,
skicka
e-post
med svaren.
Arbeta i grupper om en eller två studenter.
I undantagsfall kan man arbeta i grupper om tre, men fråga läraren först.
Det är tillåtet att samarbeta i större grupper än så,
men varje grupp om 1-3 studenter måste fortfarande redovisa separat,
och det måste också tydligt framgå (i rapporten eller på annat sätt)
vilka som deltog i samarbetet.
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
8 juli 2020