Her er skjema for en enkel relasjonsdatabase som brukes av en liten bokklubb til ? registrere medlemmer, b?ker og salg. Prim?rn?kkelen st?r i parentes: MEDLEM: (medlemsnr), navn, adresse, medlemsstatus BOK: (boknr), forfatter, tittel, sjanger, pris, restopplag SALG: (boknr, medlemsnr, salgsmnd), salgs?r, betalt Attributtet navn har formen 'fornavn etternavn' Oppgave 1: Finn forfatter og tittel p? alle kokeb?ker hvor salgs?verdien av restopplaget er minst 500 000 L?sningsforslag: CREATE VIEW Kokebok AS SELECT forfatter, tittel, pris*restopplag AS verdi FROM BOK WHERE sjanger = 'Kokebok'; SELECT forfatter, tittel FROM Kokebok WHERE verdi >= 500000; Oppgave 2: Hvor mange b?ker tilsammen har medlemmer med etternavn "Hansen" kj?pt? L?sningsforslag: SELECT COUNT (*) FROM medlem m, salg s WHERE m.medlemsnr = s.medlemsnr AND m.navn LIKE '% Hansen' AND betalt; Oppgave 3: Finn navn og adresse p? de med?lemmene som har kj?pt alle kokeb?kene og sorter dem etter navn (dvs. fornavn) L?sningsforslag: SELECT navn, adresse FROM medlem m WHERE NOT EXISTS (SELECT * FROM bok b WHERE NOT EXISTS (SELECT * FROM salg s WHERE s.boknr = b.boknr AND s.medlemsnr = m.medlemsnr) AND b.sjanger = 'Kokebok'); Merk at i mangel av allkvantor (den opp-ned-vendte A (leses: for alle)) i SQL, kan man bruke standard operator-aritmetikk, som sier at for alle = NOT EXIST NOT Oppgave 4: Finn totalt salg i 2007 (b?de i antall b?ker (alle bestilte) og penger (bare betalte b?ker)) for hver sjanger. Sorter etter sjanger CREATE VIEW bestilt (sjanger, antall) AS SELECT sjanger, count(*) FROM bok b, salg s WHERE b.boknr = s.boknr AND salgs?r = 2007 GROUP BY sjanger; CREATE VIEW salg (sjanger, verdi) AS SELECT sjanger, sum(pris) FROM bok b, salg s WHERE betalt AND salgs?r = 2007 AND s.boknr = b.boknr GROUP BY sjanger; SELECT b.sjanger, antall, verdi FROM bestilt b, salg s WHERE b.sjanger = s.sjanger ORDER BY sjanger;