Uppgift 1. (a) Till vad anvands NULL-varden? Nar ett akta varde: { inte nns (inte ar tillampbart), { ar okant, { ar annu inte bestamt. { 1p. (b) Vilka

Relevanta dokument
Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Uppgift 1. (a) Ange tre orsaker hur felaktigheter i en databas kan uppsta. Till varje av dem, ange en lamplig metod som anvands som atgard mot dessa.

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Lösningar till tentamen i EDAF75

Design och underhåll av databaser

Övningar i SQL. SQLAccess.doc Ove Lundgren

Uppgift 1.8p (a) Ange tre orsaker hur felaktigheter i en databas kan uppstνa. Till varje av dem, ange en lämplig metod som används som νatgärd mot des

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Structured query language (SQL)

Tentamen i Databasteknik

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Lösningsförslag, tentamen i Databaser

Databaser och Datamodellering Foreläsning IV

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Tentamen i Databasteknik

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Analytisk relationsdatabasdesign

Tentamen. Databasmetodik Lördag 27 september 2014 kl

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Tentamen för DD1370 Databasteknik och informationssystem

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

Lösningsförslag till fiktiv tentamen för DD1370 Databasteknik och informationssystem

Tentamen. TDDB38 - Databasteknik

Tentamen för DD1370 Databasteknik och informationssystem

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

WCMS-15, Webbutvecklare CMS

TENTAMEN DATABASKUNSKAP ITEK12

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

Tentamen för DD1370 Databasteknik och informationssystem

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

Exempel-Tentamen III

ÖVNING 10 2NF Hästnamn, KursId, StartDatum, SlutDatum KursId NY! 3NF Hästnamn, Art, NY! NY! NY! NY! KursId, StartDatum, SlutDatum KursId NY!

Starta MySQL Query Browser

1.Lär känna MS SQL Observera. Tips. Förberedelse

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Introduktion till frågespråket SQL (v0.91)

Databasspråket SQL - online.

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Tentamen i Databasteknik

Karlstads Universitet, Datavetenskap 1

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

Inga hjälpmedel är tillåtna

TENTAMEN TDDB77 Databaser och Bioinformatik 19 april 2002, kl 14-18

NORMALISERING. Mahmud Al Hakim

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem

Databasspråket SQL - online.

1. SQL DDL (Data Definition Language) 2. Skapa tabell

Konceptuella datamodeller

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Föreläsning 2: Översikt över ett databassystem

Databasspråket SQL - online.

Tentamen. i Databasteknik. lördagen den 13 mars Tillåtna hjälpmedel: Allt upptänkligt material

Webbprogrammering, grundkurs 725G54

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Relationsmodellen och syntetisk databasdesign

Sample exam questions. Database exam TIG058

Lösningsförslag till Exempel tentamen

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Databasspråket SQL - online.

Databasspråket SQL - online.

3. Dynamiska webbplatser, 20 Yhp (4 v)

TENTAMEN TDDB77 Databaser och Bioinformatik 12 juni 2007, kl 14-18

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

Databasteknik för D1, SDU1 m fl

Tentamen EIT:DB Databastmetodik 11/ kl Lösningsförslag

Föreläsning 3 Transformation från konceptuell datamodell till relationsschema ( Syntetisk databasdesign ) Vad är ett databashanteringssystem?

Tentamen DATABASTEKNIK - 1DL116

Tentamen Databasmetodik DB:DSK/FK/DVK/ATD/SP/EIT mfl. äldre kurstillfällen 8 augusti 2013 kl. 9-13

Databaser. Vad du ska lära dig: Ordlista

Structured Query Language (SQL)

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

Tentamen DATABASTEKNIK - 1DL116, 1MB025

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

TENTAMEN TDDB77 Databaser och Bioinformatik 24 april 2004, kl 14-18

Informationssystem och Databasteknik

Transkript:

Institutionen for datavetenskap CTH- TIN 140 Goteborg GU- INN 12 mw DATABASER D4 och GU HT -99 Tentamen i DATABASER Obs! Larare-version, med losningar DAG: lo, 23 okt 1999 TID: kl. 14.15 { 18.15 SAL: ML11 - ML18 (Maskinhuset) Ansvarig: Martin Weichert Forfragningar: Martin Weichert, tel. 772 10 68 Resultat: anslas den 11 nov 1999 Poangantal: sammanlagt maximalt 60 poang. Betygsgranser: CTH: 3:a 24 p., 4:a 36 p., 5:a 48 p. GU: Godkand 28 p., Val godkand 48 p. Doktorander: Godkand 28 p. Hjalpmedel: utdraget ur Oracle7 Server SQL Language (\det gula pappret") resp. Appendix B Syntax ur referensmanualen for Oracle SQL samt SQL*Plus Quick Reference. Observera: Skriv tydligt och disponera pappret pa ettlampligt satt. Borja varje uppgift pa nytt blad. Skriv endast pa en sida av pappret. Alla svar skall val motiveras! Ange pa tentan om du gar pa GU eller CTH. For CTH ange aven vilken linje du gar! Lycka till! 1

Uppgift 1. (a) Till vad anvands NULL-varden? Nar ett akta varde: { inte nns (inte ar tillampbart), { ar okant, { ar annu inte bestamt. { 1p. (b) Vilka ar de fyra krav som stalls pa ett databassystem med transaktioner? Till varje krav, ange en lamplig metod eller atgard som kan anvandas for att garantera detta krav. A. \Atomicity" -"Allt eller inget": Varje transaktion ska genomforas antingen helt eller inte alls. Atgard: En transaktion \rullas tillbaka" (gors ogjord, \ROLLBACK") om den blir avbruten och darfor inte fullstandigt genomford. C. \Consistency" - "Se upp for konsistensvillkoren": En transaktion som borjar i ett konsistent tillstand maste leda till ett konsistent tillstand. Atgard: Antingen: kravet stalls pa anvandaren (t.ex. programmeraren av anvandarprogram), eller: Databasen utfor konsistenskontroll (kontroll av alla angivna riktighetsvillkor) senast vid varje COMMIT om transaktionen godkanns endast om alla villkor ar uppfyllda och genomfors da, annars rullas den tillbaka. I. \Isolation" - "Ingen Insyn": Inga (eventuellt inkonsistenta) mellantillstand av en transaktion ska vara synliga till en annan. Atgard: t.ex. 2-fas-lasning. D. \Durability" - "Det som ar gjort ar gjort" En transaktions andringarsom har avslutats och bekraftats med COMMIT, galler. Atgard: Aterstallning (recovery) efter krasch, samt att alla andringar verkligen skrivs till harddisk (antingen i loggl eller direkt i databasen) vid varje COMMIT (eller varje CHECKPOINT). {2+4=6p. ( 1 2 for varje krav 1 for varje atgardat krav). (c) Varfor ar relationsalgebra viktig for databaser? Hela teorin om relationsdatabaser bygger pa relationsalgebra. Uppdelning av relationer i delrelationer ar en relationsalgebra-operation (projektion, ) forening av dessa till en storre ar en relationsalgebra-operation (samkorning, 1) alla select-satser uttrycker relationsalgebra-operationer. Relationsalgebra ar det matematiska fundament som relationsdatabaser bygger pa. { 2p. (d) Vad ar och var anvands fragmentering? Vad ar horisontell och vertikal fragmentering? F. anvands vid distribuerade databaser. Tabellerna i en databas delas upp pa olika maskiner/noder/servrar i ett nat. Vid h.f. delas en tabell i mangder av rader() ochmanaterfar den med union ([). Vid v.f. delas en tabell i mangder av kolumner () ochaterfas med samkorning (1). { 3p. 12 poang. Uppgift 2. Lat r(a B C D) och s(a C E) vara tabeller med foljande innehall: r: A B C D a1 b1 c1 d2 a1 b2 c2 d1 a2 b3 c1 d3 Berakna resultatet av foljande relationsalgebra-uttryck! s: A C E a1 c2 e1 a1 c1 e2 a2 c3 e3 a1 c2 e4 2

(a) A ( (s)) C6=c1 (b) ( A (s) C (s)) ; A C (r) (c) r 1 s (naturlig samkorning) (a, b) A ( C6=c1 (s)): A a1 a2 (c) r 1 s: A B C D E a1 b1 c1 d2 e2 a1 b2 c2 d1 e1 a1 b2 c2 d1 e4 : 2p. ( A (s) C (s)) ; A C (r): A C : 3p. Kolumnerna kan aven vara i annan ordning, t.ex. (A C B D E). a1 a2 a2 c3 c2 c3 : 3p. Poangavdrag (; 1p.) om det nns dubletter. 8poang. Uppgift 3. Foljande tabell har skapats i databasen: create table ANSTALLDA ( USERID number(4), NAMN varchar(15) not null, CHEF number(4) default 1000, UPPGIFT varchar(12), LON number(5) default 0, START date, constraint VILLKOR1 primary key (USERID), constraint VILLKOR2 unique (NAMN), constraint VILLKOR3 foreign key (CHEF) references ANSTALLDA(USERID) on delete cascade, constraint VILLKOR4 check (LON between 10000 and 25000) ) Foljande rader har redan matats in: UserId Namn Chef Uppgift Lon Start 1003 'Roberts' 1002 'biljettfors' 12000 1999-JUL-01 1004 'Ruskin' 1002 'biljettfors' 12000 1998-NOV-15 1002 'Price' 1000 'biljettchef' 15000 1996-APR-01 1000 'Powell' NULL 'avd-chef' 20000 1994-JAN-01 Kontrollera de foljande SQL-satserna valdigt noga. Vilka av dessa andringsforsok kommer att bli accepterade, vilka inte? Ange hur andringsforsoken berors av de olika riktighetsvillkoren, sa att de blir accepterade eller inte, och vad som kommer att andras i tabellen. For dem som inte blir accepterade, ange alla riktighetsvillkor mot vilka de bryter! (Attributlistan efter insert anger vilka attribut som matas in och i vilken foljd. Attribut som saknas i listan far sitt forvalt varde.) 3

(a) insert into ANSTALLDA (NAMN, USERID, CHEF, UPPGIFT, LON, START) values ('Raphael', 1005, 'Price', 'biljettfors', 12000, '1999-OCT-23') {1p. fel: CHEF har fel typ{ maste vara chefens USERID, ej chefens NAMN. (b) insert into ANSTALLDA (USERID, NAMN, CHEF, UPPGIFT, START) values (1006, 'Roberts', 1002, 'biljettfors', '1999-SEP-31') Tre fel: { namnet nns redan! bryter mot VILLKOR2 { ingen L ON angiven! DEFAULT-vardet 0 anvands! bryter mot VILLKOR4 { felaktigt datum {3p. (c) insert into ANSTALLDA (USERID, NAMN, UPPGIFT, LON, START) values (1010, 'Ruskins', 'flygmek', 12000, '1999-OCT-23') Raden accepteras. NAMN 'Ruskins' ar skilt fran 'Ruskin'! bryter EJ mot VIL- LKOR1. CHEF saknas! DEFAULT-vardet 1000 anvands! bryter EJ mot VILLKOR3, eftersom en referensrad med USERID = 1000 nns. {2p. (d) update ANSTALLDA set LON = 1.5 * LON where START < '1997-JAN-01' {1p. Fel: Powells lon blir 30000! bryter mot VILLKOR4. (e) delete from ANSTALLDA where UPPGIFT = 'avd-chef' Hela tabellen toms! Avdelningschefen Powell tas bort, med honom forsvinner (bade Ruskins fran (c) och) biljettchefen Price, och med Price aven alla under biljettforsalare under honom. {1p. 8poang. Uppgift 4. Europaparlamentet har 626 ledamoter, som representerar 15 lander, kommer fran ett hundratal nationella partier, fordelas i 8 parlamentsgrupper, och ar verksamma i 17 olika parlamentsutskott. For att halla reda pa parlamentets verksamhet skall en databas med foljande tabeller anvandas: ledamot(personid, Namn, Fodd, LandId, PartiId, GruppId) En lista over ledamoter, med PersonId, en unik identierare for varje ledamot Namn, ledamotens namn Fodd, fodelsearet LandId, entva-bokstavs-kod for landet som ledamoten representerar PartiId, en forkortning for partiet som ledamoten representerar GruppId, en forkortning for den parlamentsgrupp som ledamoten tillhor. De passande attributen ar samtidigt referenser till tabellerna land, parti och grupp. 4

land: LandId Namn Invanare SE Sverige 8 milj. ES Spanien 40 milj.......... En lista over alla 15 lander, med: LandId, en tva-bokstavs-kod for landet landets Namn samt antalet Invanare. Inga tva lander har forstas samma namn! Bade LandId och Namn ar nycklar till relationen. grupp: GruppId Namn PPE Europeiska folkpartiet (kristdemokrater) PSE Europeiska socialdemokratiska partiet...... En lista over alla 8 parlamentsgrupper. parti: LandId PartiId Namn SE s socialdemokraterna SE m moderaterna......... En lista over alla nationella partier, med LandId, tva-bokstavs-koden for landet (referens till land) PartiId, den forkortning som partiet vanligtvis anvander samt partiets fullstandiga Namn. PartiId anses vara unikt inom varje land. Beakta dock att PartiId inte behover vara unikt over landernas granser! Sa nns t.ex. tva vansterpartier som bada heter "PDS" { ett i Tyskland och ett i Italien. LandId och PartiId tillsammans ar nyckeln till relationen. utskott: UtskottId Namn BUDG Budget ENVI Miljo, folkhalsa, konsumentskydd FEMM Kvinnors rattigheter och jamstalldhet...... En lista over alla 17 parlamentsutskott, med en identierare UtskottId, som ar unik for varje utskott och som alltid bestar av fyra bokstaver, och ettnamn, vilket ocksa ar unikt. utskottmedlem(personid, UtskottId, Funktion) Vem som ar medlemmar i vilka utskott. PersonId och UtskottId ar referenser till ledamot och utskott. Funktion kan vara 'ordforande', 'vice-ordf' eller tom. forslag(forslagnr, Rubrik, UtskottId, Foredragande, Datum, Text,...) En lista over forslag som behandlas i parlamentet. ForslagNr, enunikidentierare for varje forslag Rubrik, vad det handlar om UtskottId, en forkortning for utskottet som ar ansvarig for forslaget (referens till utskott) Foredragande, vem som rapporterar forslaget fran utskottet till plenum (referens till ledamot) Datum, nar forslaget rostas och Text, sjalva forslagstexten. rostning(personid, ForslagNr, Rost) Rostresultaten: anger vilken Rost ('ja', 'nej' eller 'nedlagd') ledamoten PersonId (referens till ledamot) gav angaende ForslagNr (referens till forslag). Informationer hamtade fran Europaparlamentets webbsida: <http://www.europarl.eu.int/> Forst skall databasen skapas: (a) Ange de fullstandiga SQL-satserna som skapar tabellerna land och ledamot enligt beskrivningen ovan. 5

create table LAND ( LANDID char(2), NAMN varchar(30), INVANARE decimal(9), primary key (LANDID), unique (NAMN) ) create table LEDAMOT ( PERSONID decimal(3), NAMN varchar(30), FODD decimal(4), LANDID char(2), PARTIID varchar(8), GRUPPID char(4), primary key (PERSONID), foreign key (LANDID) references LAND, foreign key (LANDID,PARTIID) references PARTI, foreign key (GRUPPID) references GRUPP ) { 4p. For resten av uppgiften antar vi att databasen ar skapad och ar fylld med data. Skriv SQL-satser for foljande uppgifter: (b) Gor en lista over Sveriges alla 22 ledamoter: For varje ledamot ska det anges namn, fodelsear, samt namnen pa det parti och den parlamentsgrupp som ledamoten tillhor. Utskriften ska vara sorterad fran yngst till aldst. select L.NAMN, L.FODD, P.NAMN, G.NAMN from LEDAMOT L, PARTI P, GRUPP G where L.LANDID = P.LANDID and L.PARTIID = P.PARTIID and L.GRUPPID = G.GRUPPID and L.LANDID = 'SE' order by FODD desc Inga av villkoren far glommas! {3p. (c) Lista Sveriges alla ledamoter och hur de rostade angaende lagstiftningresolutionen om Framjande av fornybara energikallor som har forslagnummer 'A4-0085/99'. select L.NAMN, R.ROST from LEDAMOT L, ROSTNING R where L.LANDID = 'SE' and L.PERSONID = R.PERSONID and R.FORSLAGNR = 'A4-0085/99' Obs! Tabellen F ORSLAG behovs inte. { 2p. 6

(d) Gor en lista over alla utskott, med antalet svenska medlemmar i varje utskott. select UTSKOTTID, count(*) as SVENSKAR from LEDAMOT L, UTSKOTTMEDLEM M where L.LANDID = 'SE' and L.PERSONID = M.PERSONID group by UTSKOTTID Bara de utskott som har svenska medlemmar behover tas med. Vill man aven ha utskott utan svenska medlemmar, sa kan man lagga till:...union select UTSKOTTID, 0 from UTSKOTT where UTSKOTTID not in (select UTSKOTTID from LEDAMOT L, UTSKOTTMEDLEM M where L.LANDID = 'SE' and L.PERSONID = M.PERSONID) {2p. (e) Lista det eller de utskott som har hogsta antalet medlemmar. create view TMP as select UTSKOTTID, count(*) as ANTAL from UTSKOTTMEDLEM group by UTSKOTTID select UTSKOTTID from TMP where ANTAL = ( select max(antal) from TMP ) Obs! \count(*)" maste dopas om, t.ex. sa som gjort har till ANTAL. {3p. (f) Alla dessa informationer skall vara oentliga { ge darfor rattigheten till alla att lasa (men inte andra) i tabellerna. Ge dessutom anvandaren Admin rattigheten att lagga in och andra rader i tabellen ledamot. grant SELECT on LEDAMOT to PUBLIC grant SELECT on LAND to PUBLIC... grant SELECT on ROSTNING to PUBLIC grant INSERT,UPDATE on LEDAMOT to ADMIN {2p. Skapa garna hjalpvyer for dina sokfragor om du behover. 16 poang. 7

Uppgift 5. Givet relation r(a B C D E) med funktionella beroenden 1. ABC! DE 2. E! BC (a) Bestam alla nycklar till relationen r. fa B Cg och fa Eg. { 2p. (b) Uppfyller relationen r Boyce-Codd-normalformen? Motivera! Nej. Beroendet 2. E! BC bryter mot BCNF, eftersom determinanten E inte ar nan (over)nyckel. { 1p. (c) Uppfyller r tredje normalformen? Motivera! Ja. Beroendet 2. E! BC uppfyller 3NF, eftersom bade B och C ar nyckelattribut. (Beroendet 1. ABC! DE uppfyller 3NF eftersom det redan uppfyller det starkare BCNF.) { 1p. (d) Om vi delar upp relationen r for att uppfylla en battre (d.v.s. strangare) normalform, vilka delrelationer far vi? Vad forlorar vi? Vi delar upp med beroendet 2. E! BC, och vi far relationer ade(a D E) och ebc(e B C). Vi forlorar beroendet 1. ABC! DE. { 2p. 6poang. Uppgift 6. En relationsdatas brukar innehalla en systemkatalog, dvs. en beskrivning av hela databasens struktur, som aven sjalv gors i form av tabeller. Foljande informationer skall nnas med i systemkatalogen: I databasen nns tva sorter tabeller (TABLE), namligen bastabeller (BASE TABLE) och vyer (VIEW). Inga tva tabeller i databasen kan ha samma namn, dvs. tabeller identieras entydigt med sina namn. Till varje bastabell lagras vissa egenskaper, sa som det aktuella antalet rader i den, antalet block den anvander pa harddisk, och det senaste andringsdatumet. (I verkligheten lagras manga mer egenskaper an dessa!) Varje bastabellkan ha ett eller era index (datatrukturer for snabbare atkomst). Till varje vy lagras SELECT-satsen som den denierades med som en textstrang. Varje tabell har en mangd attribut (kolumner, COLUMN ). Varje kolumn maste tillhora en viss tabell. Tva attribut i olika tabeller kan ha samma namn, daremot inte tva attribut i samma tabell. Varje kolumn har en viss datatyp. For varje attribut lagras om det ingar i primarnyckeln eller ej, samt om det kan vara NULL eller ej. Det lagras ocksa information om referenser (frammande nycklar) mellan tabellerna. Varje frammande nyckel (FOREIGN KEY )pekar pa en viss tabell (vilken maste vara en bastabell, ingen vy). I varje frammande nyckel ingar ett eller era attribut ett attribut kan inga i noll, en, eller er frammande nycklar. Varje tabell ags av en databas-anvandare (USER). Varje anvandare har ett anvandarnamn (userid), ett losenord och en disk quota. Anvandare kan dela ut rattigheter till andra anvandare. Varje rattighet (PRIVILEGE) ges av en viss anvandare och tas emot av en viss anvandare. Den galler en viss tabell och har en viss typ. 8

Du kan infora egna nya nyckelattribut (lopande nummer eller dyl.) om det kanns nodvandigt eller lampligt. Om du gor antaganden, ange vilka. Rita ett diagram enligt EER-modellen (\Enhanced Entity-Relationship") som motsvarar ovanstaende beskrivning. Varje punkt i foljande lista, om det ar ratt anvant, raknas som 1p. entiteter (rektanglar) attribut (ovaler) samband (romber) unika attribut = nyckelattribut (attributnamn understruket) ervarde-attribut (dubbeloval) ett "maste"-samband (dubbelstreck) 1:N-samband (ett pilhuvud maste vara at ratt hall!) M:N-samband (inget pilhuvud) svag entitet (dubbel rektangel) med partiell nyckel (punkterad understruket) och identi- erande samband (dubbelruta maste vara 1:N) till identierande agare. arv (\IS A"). 9

UserId Passwd PrivId Quota User from to Privilege Type owner on Name Type Name PK? Column Table NULL? belongs IS_A IS_A Index ForeignKey to BaseTable View FK_Id Nr_Rows Nr_Blocks ModifDate Definition 10 poang. Obs! { Kursenkat { Vad tycker du om kursen? Pa kursens webbsida nns en kursenkat att fylla i. Alla studenter bes att fylla i denna enkat for att vi ska kunna forbattra kursen i framtiden. Tack! 10