Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Like dokumenter
Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Repetisjon: Normalformer og SQL

Problemer med Indre joins. Inner joins og manglende verdier med aggregater. Left Outer Join. Outer Joins. Hvor mange har kjøpt hvert produkt?

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Enklere syntaks for joins. IN2090 Databaser og datamodellering. 09 Aggregering og sortering. Eksempel: Variable i delspørringer (1)

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

EKSAMEN 6102 / 6102N DATABASER

Repetisjon. IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT. Eksempler: FilmDB. Enkle SELECT-spørringer i et nøtteskall

UNIVERSITETET I OSLO

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Miniverden og ER- modell

SQL Structured Query Language

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

Integritetsregler i SQL. Primærnøkler

Datamodellering og databaser SQL, del 2

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

EKSAMEN DATABASER

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Integritetsregler i SQL

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

SQL Structured Query Language

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

Integritetsregler i SQL

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Indre select-setninger Nestede select-setninger

IN2090 Databaser og datamodellering. 08 Typer og skranker

Databasers typesystem. IN2090 Databaser og datamodellering. 08 Typer og skranker. SQL-standarden vs. RDBMSer. Hvilke datatyper har vi

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

INF1300 Introduksjon til databaser

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

Oppgaver Oppgave a: Sett opp mulige relasjoner

INF1300 Introduksjon til databaser

IN2090 Databaser og datamodellering. 08 Typer og skranker

Fag TDT4145 Datamodellering og databasesystemer Øving 3: Relasjonsalgebra og SQL

SQL: SELECT-spørringer

Oppgave 1 (Opprett en database og en tabell)

IN2090 Databaser og datamodellering 07 Datamanipulering

Løsningsforslag for Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

Datamodellering og databaser SQL, del 2

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet. Løsningsforslag

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

Datamodellering og databaser SQL, del 2

Databaser: Relasjonsmodellen, del I

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

INF1300 Introduksjon til databaser: SQL Structured Query Language

INF1300 Introduksjon til databaser

IN2090 Databaser og datamodellering 07 Datamanipulering

Oppgave 1 Datamodellering 22 %

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

Flere skranker i ORM Integritetsregler med «CHECK» i SQL

Relasjoner terminologi

Løsningsforlag for oblig 1, databaser 2010

Oppdateringsanomalier Normalformer

Metaspråket for å beskrive grammatikk

UNIVERSITETET I OSLO

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

INF1300 Introduksjon til databaser

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

EKSAMEN 6102 / 6102N DATABASER

Skisse til løsning av eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Repetisjon: (nesten) alt du trenger å kunne om ORM og realisering

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

Dagens tema: Oppdateringsanomalier Normalformer

INF1300 Introduksjon til databaser

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

Løsning til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

1. SQL datadefinisjon og manipulering

Relasjonsdatabasedesign

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

SQL Structured Query Language

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer...

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

INF1300 Det meste av resten av

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Relasjonsdatabasedesign

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Systemutvikling fra kjernen og ut, fra skallet og inn

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

INF1300 Introduksjon til databaser

IN2090 Introduksjon til databaser

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Relasjonsdatabasedesign

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

SQL: Integritetsregler, triggere og views

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Transkript:

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember 2018 14:30 18:30 (4 timer) 1. Eksterne skranker (5%) I modellene nedenfor (ORM2) skal du anta at alle begreper har en unik representasjon. Er plasseringen av den eksterne skranken gyldig eller ugyldig? Gyldig Gyldig

2. Modellering i ORM (35%) Del 1 Del 2

3. Realisering (10%) Himmellegeme(navn, [oppdaget_årstall], [i_bane_rundt]) Romfartøy(navn, oppskytningsdato, status) Besøk(himmellegeme, romfartøy, dato, oppdragstype) Fremmednøkler: Himmellegeme(i_bane_rundt) Himmellegeme(navn) Besøk(himmellegeme) Himmellegeme(navn) Besøk(romfartøy) Romfartøy(navn) Realiseringen gir også relasjonene Dato(ymd) og År(tall). Disse relasjonene kan undertrykkes (slettes), og er derfor ikke obligatoriske å ha med. Studenten må selv finne et passende navn for relasjonen Besøk. Navnene på attributtene kan være annerledes, gitt at de i tilstrekkelig grad er beskrivende. 4. SQL, create (5%) Skriv en CREATE-spørring for tabellen orders med passende datatyper for attributtene, slik at tabellen blir som beskrevet, inkludert primær- og fremmednøkler. CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT NOT NULL REFERENCES customers(id), shipping_addr VARCHAR NOT NULL, time_entered TIMESTAMP NOT NULL, status VARCHAR NOT NULL ); 5. SQL, view (5%) Definer et view delayed_orders(id, customer_id, time_entered) som inneholder alle ordrer som har status 'delayed'. CREATE VIEW delayed_orders(id, customer_id, time_entered) AS SELECT id, customer_id, time_entered FROM orders WHERE status = 'delayed'; 6. SQL, kunder og ordrer (5%) Skriv en spørring som returnerer alle kunder der navnet begynner med «Ola», samt deres ordrer hvis de har noen. Ta også med kunder som ikke har kjøpt noe. Resultatet skal inneholde kundens navn og adresse, samt ordrenes id og status, sortert etter registreringstidspunkt slik at de siste registrerte kundene kommer først. SELECT name, address, o.id, o.status LEFT JOIN orders o ON c.id = o.customer_id WHERE name LIKE 'Ola%' ORDER BY c.time_registered DESC;

7. SQL, aggregering (5%) Skriv en spørring som finner antall ordrer per kunde for hver forskjellig status. Skriv ut kundens id og navn, samt antall og status. SELECT c.id, c.name, COUNT(*), o.status INNER JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name, o.status; 8. SQL, kunder med flere ordrer (5%) Skriv en spørring som finner alle kunder som har minst to ordrer med forskjellig shipping_address. Skriv ut kundenes id og navn. -- med self-join SELECT DISTINCT c.id, c.name INNER JOIN orders o1 ON c.id = o1.customer_id INNER JOIN orders o2 ON o1.customer_id = o2.customer_id AND o1.shipping_addr!= o2.shipping_addr; -- med gruppering og HAVING SELECT c.id, c.name INNER JOIN orders o ON c.id = o.customer_id GROUP BY c.id, c.name HAVING COUNT(DISTINCT shipping_addr) > 1; 9. SQL, produkter bestilt oftest (10%) Skriv en spørring som returnerer alle kunder som har bestilt de produktene som har vært bestilt oftest (altså de produktene som finnes på flest forskjellige ordrer). Skriv ut kundenes id. WITH num_sold AS ( SELECT product_id, COUNT(order_id) as num FROM order_items GROUP BY product_id ) SELECT DISTINCT o.customer_id FROM num_sold INNER JOIN order_items oi ON num_sold.product_id = oi.product_id INNER JOIN orders o ON oi.order_id = o.id WHERE num_sold.num = (SELECT MAX(ns.num) FROM num_sold ns);

10. SQL, total kostnad (10%) Skriv en spørring som finner antall enheter og total kostnad for alle produkter solgt til kunder i USA, hvor minst 10 enheter har blitt solgt. Skriv ut produktenes id og navn, samt antall enheter og total kostnad. SELECT oi.product_id, p.name, SUM(quantity) AS antall, SUM(quantity*unit_price) AS kostnad FROM order_items oi INNER JOIN orders o ON oi.order_id = o.id INNER JOIN customers c ON o.customer_id = c.id INNER JOIN products p ON oi.product_id = p.id WHERE c.country = 'USA' GROUP BY oi.product_id, p.name HAVING SUM(quantity) >= 10; 11. Relasjonsteori (5%) a. Hvilke attributter i tabellen customers er kandidatnøkler? id og {pnr, fdate} b. Hvilken normalform er tabellen customers på? Begrunn svaret ditt. Vi har følgende ikke-trivielle FD-er: - id pnr, fdate, name, address, country, time_registered - {pnr, fdate} id, name, adderss, country, time_registered I begge FD-ene er venstre side en supernøkkel. Dermed er begge FD-ene på BCNF. Tabellen er derfor på BCNF. Det er også greit å si at venstre side er en kandidatnøkkel.