Gagnasafnsfræði, haust 2011

[ Dagskrá  |  Námsefni  |  Verkefni  |  Dæmatímar  |  Orðalisti  |  Námsmat  |  Kennslubók ]

Verkefni 2 - Venslalíkanið og grunnatriði í SQL

Lausnum skal skilað í hólf viðkomandi dæmakennara (sjá lista yfir dæmatíma).

Skiladagur: föstudaginn 9. september fyrir kl 16:00

PostgreSQL uppsetning og import á movies.sql

Tenglar:

Til að hlaða movies.sql inn í PostgreSQL gagnasafn er hægt að nota \i skipunina í psql skipanalínunni (movies.sql þarf að vera í vinnumöppunni, working directory, annars þarf að gefa upp fulla slóð, t.d. \i c:/movies.sql):

postgres@brainfuck:~$ psql
Welcome to psql 8.3.14, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# \i movies.sql
[...]
INSERT 0 1
INSERT 0 1
INSERT 0 1
[...]
postgres=# \d
          List of relations
 Schema |  Name   | Type  |  Owner
--------+---------+-------+----------
 public | actor   | table | postgres
 public | casting | table | postgres
 public | movie   | table | postgres
(3 rows)

postgres=#
ATH: Í Windows þarf að gefa upp slóðina með UNIX-backslash, þ.e. "/". Dæmi: c:/movies.sql eða c:/temp/movies.sql (en ekki c:\movies.sql og c:\temp\movies.sql eins og væri venjan í Windows). Gefið upp fulla slóð í psql skelinni:
Server [localhost]:
Database [postgres]:
Port [5432]:
Username [postgres]:
Password for user postgres:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=# \i c:/movies.sql
[...]
INSERT 0 1
[...]
postgres=#
Einnig er hægt að hlaða skráni beint inn úr cmd í Windows. Þá þarf að opna cmd og fara inn í möppuna þar sem psql.exe er (eða gefa upp full path á psql.exe eða setja það í system path):
C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres -f c:\movies.sql
Password for user postgres:
[..]
INSERT 0 1
[..]
C:\Program Files\PostgreSQL\9.0\bin> 

Skiladæmi:

  1. Sýnið SQL skipanir til að búa til eftirfarandi gagnasafn (skilgreinið einnig aðallykla og ytri lykla):
    Movie(id: integer, title: string, year: integer, director: integer)
    Director(id: integer, name: string)
    Actor(id: integer, name: string)
    Casting(id: integer, movie: integer, actor: integer, ord: integer)
    Trivia(id: integer, movie: integer, trivia: text)
    Dálkurinn Movie.director er ytri lykill og vísar í Director.id
    Dálkurinn Casting.movie er ytri lykill og vísar í Movie.id
    Dálkurinn Casting.actor er ytri lykill og vísar í Actor.id
    Dálkurinn Trivia.movie er ytri lykill og vísar í Movie.id

  2. Sýnið SQL skipanir til að búa til eftirfarandi gagnasafn (skilgreinið einnig aðallykla og ytri lykla):

  3. Sýnið SQL skipun til að sækja lista yfir öll mismunandi ártöl (Movie.year) sem eru skráð í Movie töfluna í movies.sql (ábending: SELECT DISTINCT)
  4. Sýnið SQL skipun til að sækja nafn, ártal og einkunn fyrir allar kvikmyndir með einkunn > 8.5.
    Dæmi um úttak:
                                    title                                 | year | score
    ----------------------------------------------------------------------+------+-------
     Star Wars                                                            | 1977 |   8.8
     Shawshank Redemption, The                                            | 1994 |     9
     Pulp Fiction                                                         | 1994 |   8.6
     Star Wars: Episode V - The Empire Strikes Back                       | 1980 |   8.6
     Usual Suspects, The                                                  | 1995 |   8.7
    
  5. Sýnið SQL skipun til að sækja lista yfir nafn leikara og meðaleinkunn allra mynda sem hann hefur leikið í (ábending: þarft að tengja Movie, Casting, Actor og nota GROUP BY ásamt AVG)
    Dæmi um úttak:
                  name              |       avg
    --------------------------------+------------------
     Benny Hill                     |              6.1
     Courtney B. Vance              |            6.875
     Clare Kramer                   |              6.5
     John Brady (II)                |                7
     Louis Calhern                  |              8.3