Länk till kursmaterialet för er som tappat bort det OBS!!!! att ni kan redovisa labbar genom att stämma träff med någon assistent. Skriv till adressen

gis-ass@nada.kth.se

så hoppas jag att någon av oss snabbt ska kunna hjälpa till

  1. Logga in på en dator i antingen Maclean eller Faggot.
  2. Öppna mappen "My Computer" som finns på skrivbordet. I fönstret som öppnas ska finnas en serversymbol med namnet prog on 'mimer.kth.se\dfs'(P:)
  3. Öppna mappen "prog on 'mimer.kth.se\dfs'(P:)" och navigera fram till P:\WIN\KTelnet\PGM.
  4. "Peka på" KFtp.exe och "högerklicka" med musen. Då ska du få upp en meny, i vilken du väljer alternativet "Create Shortcut". Datorn kommer att klaga och fråga om du vill lägga ikonen på skrivbordet. Svara ja på den frågan.
  5. Gör likadant med "KTelnet.exe".
  6. Navigera fram till "P:\WIN\SimaManager\SimaManager" och gör likadant med SimaManager. Du är nu redo att koppla dig till NADAs datorer.
  7. Starta "KTelnet.exe" och välj alternativet "Open" i menyn "Connection". Du får då upp ett dialogfönster där du väljer "Telnet" och skriver "dupond.nada.kth.se" i rutan "Host to connect to" och ditt (NADA-)användarnamn i rutan märkt "User".
  8. Tryck på "Enter"-tangen och skriv in ditt NADA-lösenord i rutan för lösenord i det dialogfönster som dyker upp.
  9. Väl inne i systemet ska du registrera dig på kursen och i betygssystemet.

    OBS att detta är NADA-interna saker som inte har något direkt samband med Lantmäteri eller Ladok. De används enbart för att vi ska kunna hålla reda på dina resultat på de olika kursmomenten och för att initiera din datoromgivning på ett bra sätt.

    För att registrera dig på kursen ger du kommandot "res checkin dbkart04" och svara på frågorna. Om du inte vet vilken status du har kan du mata in X-02. Om du inte vet vilken grupp du tillhör kan du mata in "0".
    Nu kan du enkelt se vad du anses ha åstadkommit på databasdelen av kursen genom att du, då du är inloggad på någon NADA-dator, ger kommandot "res show dbkart04".

    För att få alla initieringar korrekt satta ger du kommandot "course join dbkart04" första gången. Nu måste du logga ut och in en gång för att komandot ska ta effekt. Från och med nästa gång du är inloggad kommer du ha korrekta initieringar och behöver inte upprepa detta.

    Du kommer nu ha tillgång till informix och kan börja med att starta dbaccess och orientera dig i det verktyget.

  10. I dbaccess finns det ett antal menyer (högst upp i fönstret). Man kan vandra mellan dem med tabulatortangenten och man väljer ett alternativ med returtangenten. Man kan också använda första bokstaven i kommandonamnet (e eller E för att välja kommandot "Exit").
  11. De två laborationerna kan göras i vilken ordning som helst. Somliga vill göra labb 1 först för att få lite kläm på SQL. Andra föredrar att göra labb 2 först för att sedan göra labb1 i sin egen kopia av varuhusdatabasen som ju har schemat nedan.
  12. Anställd (namn, lön, chef, avd)
    Försäljning (avd, varunr, volym)
    Leverantör (företag, adress)
    Lager (företag, avd, varunr, volym)
    Avdelning (avd, våning)
    Vara (varunr, typ)
  13. Då man använder dbaccess så dyker det upp nya menyer hela tiden. Emellertid är det ganska lätt att förstå vad man ska göra, utom i två fall:

  14. När man formulerat sin fråga trycker man på ESC-tangenten för att hamna i den mode där man kan få frågan utförd av systemet.
    När man behöver hjälp ställer man sig på ett menyalternativ och, utan att utföra valet, trycker på '?' (frågetecken). Då kommer hjälpmenyerna upp och man kan välja det alternativ man vill ha klarhet i. Hela tiden får man en liten hjälptext som kan vara både irriterande och förvirrande.
    Man backar alltid till tidigare (ovanförliggande) nivå med exit.
    OBS! att du inte behöver genomlida det dåliga gränssnittet då du skriver dina frågor. Du kan fomulera frågorna i nedit. I stället för att välja modify för att ändra i frågeformuleringen väljer du alternativet use-editor. Då frågar informix vid första tillfället om du vill köra editorn vi. Det vill du troligen inte och därför skriver du nedit, utan att radera texten "vi". Du får då ett nedit-fönster som måste "dödas" när du skrivit klart. Du editerar din fråga, sparar (ctrl-s ) och dödar nedit (ctrl-q) varvid du kommer in i dbaccess igen och kan direkt välja att köra frågan.

Labb 1 - SQL

Du ska formulera frågor som ställs via SQL till databasen "vh". vh är en svensk version av varuhusdatabasen där alla tabeller har svenska namn enligt databasschemat ovan. Du kan värma upp med frågorna från övningarna. OBS att Andersson har en initial som "förnamn", så att han heter "Andersson T" eller liknande.

OBServera att du inte ska redovisa svaret som du får då du ställer frågorna mot varhusdatabasen. Du redovisar hur du formulerat dina frågor i SQL.

Frågorna

  1. Vad är genomsnittslönen för alla anställda på varuhuset?
  2. Vad är maxlönen för anställda som arbetar på andra eller tredje våningen?
  3. Vilka företag levererar varor som endast säljs på avdelningen för skor?
  4. Vilken är den totala volymen av artiklar av typ "tekopp" som säljs på avdelningen porslin?
  5. Vilken är den totala lönesumman för de anställda som arbetar på avdelningar som har leveranser från Dagab?
  6. På vilka våningar finns det avdelningar som säljer sammanlagt mer än 100 enheter av artiklar av typen "damsko"?
  7. Vilka avdelningar har en högre genomsnittslön än hela företagets genomsnitt ?
  8. Vilken/vilka avdelning/-ar har det största utbudet av varor?
  9. Finns det något företag som levererar alla i databasen förekommande artiklar? I så fall, vad har det för namn?
  10. Vilka företag levererar mer än en typ av vara till någon avdelning på 3:e våningen?

Labb 2 - Uppläggning av databas

Varuhusdatabasen

Din uppgift är att skapa en kopia av varuhusdatabasen.

För att kunna göra det måste du först studera den befintliga varuhusdatabasen för att förstå tillräckligt mycket om dess uppbyggnad.

Du ska lägga till integritetstvång, d.v.s. regler som gör att informix kan kontrollera att data som matas in till din databas är korrekta. Det sker genom att man deklarerar att vissa attribut är primärnycklar och att andra är främmande nycklar.

En primärnyckel identifierar entydigt en tupel i en basrelation (en rad i en tabell) medan en främmande nyckel är ett attribut i en basrelation som ensamt är primärnyckel i någon annan basrelation.

Primärnycklar är viktiga eftersom ett värde på en sådan räcker för att hitta en viss tabellrad.

Främmande nycklar är viktiga eftersom de innebär en restriktion på datamängden i en databas. Har man deklarerat att ett attribut är främmande nyckel så har man också givit databashanteraren order att utföra en massa kontroller.

Då en tabell skapas kontrolleras att den tabell och det attribut som den främmande nyckeln refererar till existerar.

Vid inmatning av data kontrolleras att det värde man matar in på platsen för det attribut som är främmande nyckel finns representerat i den andra tabellen.

Ex.: Om man deklarerar att attributet avd i tabellen anställd är främmande nyckel och refererar till attributet avd i tabellen avdelning så får det som effekt att

Det betyder att man måste skapa sina tabeller i en viss ordning och också mata in data i dem i samma ordning.

Din databas

1.
Databasen skall kallas vh + användarnamnet på någon i gruppen ex. vhl98akl. Kommandot för att skapa en databas är CREATE DATABASE databasnamn.
2.
Lägg upp tabeller med lämpliga namn, attribut och integritetstvång. Var noga med att spara de definitioner som leder fram till den färdiga databasen. Det är dessa definitioner vi vill titta på vid redovisningen.

Då  ni undersöker varuhusdatabasen (kallas varuhuset) ska ni bara titta på definitionen av de tabeller som skapats av användaren 'informix'. Det kan finnas många tabeller, de flesta vyer, skapade av elever.
Informix har en egenhet vad gäller foreign key. Man skriver t.ex.
FOREIGN KEY (chef) REFERENCES anställd(namn)
Inte som i boken, inte ens som i föreläsningsanteckningarna. I övrigt finns det en hel del exempel i boken (kap 6) men kom ihåg Informix egenhet.
3.
Ladda in data från textfilerna:
/info/dbkart04/varuhuset/vara
/info/dbkart04/varuhuset/avdelning
/info/dbkart04/varuhuset/leverantor
/info/dbkart04/varuhuset/anstalld
/info/dbkart04/varuhuset/forsaljning
/info/dbkart04/varuhuset/lager

i respektive basrelation, genom LOAD-kommandot. Hur det fungerar kan du få reda på om du i dbaccess ställer dig på ett av menyalternativen new eller modifydbaccess befinner sig i "query language mode" och matar in ett frågetecken. Då dyker det upp hjälpmenyer där man kan ta reda på både det ena och det andra.
4.
Definiera lämpliga accessrättigheter åt varandra. Det gör man genom kommandot

GRANT databasrättighet TO användare
för rättigheter som avser hela databasen och
GRANT rättighet ON tabellnamn TO användare eller
GRANT rättighet ON tabellnamn(kolumnnamn) TO användare

för tabell och kolumnrättigheter.
Exempel kan man hitta både i boken och i föreläsningsanteckningarna.
5.
Kontrollera att integritetstvången och accessrättigheterna fungerar.
6.
Försök att besvara frågor som behandlats under övningarna (som kontroll på att strukturen är korrekt).
7.
Då alla laborationer är redovisade kan du ta bort databasen.