Uppgift 1. Transaktioner: Följande fyra krav ställs pνa ett databassystems transaktionshantering: A. Atomicity" "Allt eller inget": Varje transaktion

Relevanta dokument
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

Lösningsförslag, tentamen i Databaser

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

Preschool Kindergarten

Support Manual HoistLocatel Electronic Locks

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

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

Styrteknik: Binära tal, talsystem och koder D3:1

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Lösningar till tentamen i EDAF75

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

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

Analys och bedömning av företag och förvaltning. Omtentamen. Ladokkod: SAN023. Tentamen ges för: Namn: (Ifylles av student.

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

Structured query language (SQL)

Tentamen. TDDB38 - Databasteknik

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.

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

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.

Isolda Purchase - EDI

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

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

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

Materialplanering och styrning på grundnivå. 7,5 högskolepoäng

Calculate check digits according to the modulus-11 method

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

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Beijer Electronics AB 2000, MA00336A,

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Sample exam questions. Database exam TIG058

denna del en poäng. 1. (Dugga 1.1) och v = (a) Beräkna u (2u 2u v) om u = . (1p) och som är parallell

Module 6: Integrals and applications

Övningar i SQL. SQLAccess.doc Ove Lundgren

2.1 Installation of driver using Internet Installation of driver from disk... 3

Recitation 4. 2-D arrays. Exceptions

EXTERNAL ASSESSMENT SAMPLE TASKS SWEDISH BREAKTHROUGH LSPSWEB/0Y09

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Design och underhåll av databaser

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

Tentamen i Databasteknik

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

TENTAMEN TDDD12 Databasteknik 7 januari 2010, kl 14-18

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.

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik

8 < x 1 + x 2 x 3 = 1, x 1 +2x 2 + x 4 = 0, x 1 +2x 3 + x 4 = 2. x 1 2x 12 1A är inverterbar, och bestäm i så fall dess invers.

Grafisk teknik IMCDP IMCDP IMCDP. IMCDP(filter) Sasan Gooran (HT 2006) Assumptions:

Tentamen. Databasmetodik Lördag 27 september 2014 kl

EXPERT SURVEY OF THE NEWS MEDIA

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 15 August 2016, 8:00-12:00. English Version

Tentamen i Matematik 2: M0030M.

TDDB 48 Database technology

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Vyer, Prepared Statements, Triggers

Klientprogrammering mot databaser

Kurskod: TAMS28 MATEMATISK STATISTIK Provkod: TEN1 05 June 2017, 14:00-18:00. English Version

samhälle Susanna Öhman

Uttagning för D21E och H21E

TENTAMEN DATABASKUNSKAP ITEK12

LULEÅ TEKNISKA UNIVERSITET

Det finns en handledning till kortet på hemsidan. AVR STK500.

Grafisk teknik IMCDP. Sasan Gooran (HT 2006) Assumptions:

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Får endast utföras av behörig personal. May only be carried out by authorized electrician

Support for Artist Residencies

Grafisk teknik. Sasan Gooran (HT 2006)

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Föreläsning 12: Exempel och problemlösning

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

Writing with context. Att skriva med sammanhang

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Dugga i Grundläggande programmering STS, åk

Every visitor coming to the this website can subscribe for the newsletter by entering respective address and desired city.

Att skriva till och läsa från terminalfönstret

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

Pre-Test 1: M0030M - Linear Algebra.

Skapa exempeldatabasen

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

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

Technique and expression 3: weave. 3.5 hp. Ladokcode: AX1 TE1 The exam is given to: Exchange Textile Design and Textile design 2.

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

Discovering!!!!! Swedish ÅÄÖ. EPISODE 6 Norrlänningar and numbers Misi.se

2(x + 1) x f(x) = 3. Find the area of the surface generated by rotating the curve. y = x 3, 0 x 1,

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

12.6 Heat equation, Wave equation

Workplan Food. Spring term 2016 Year 7. Name:

Eurokod 8: Dimensionering av bärverk med avseende på jordbävning Del 2: Broar

Documentation SN 3102

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

(D1.1) 1. (3p) Bestäm ekvationer i ett xyz-koordinatsystem för planet som innehåller punkterna

Thesis Production Time plan, preparation and Word templates

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

Transkript:

Institutionen för datavetenskap Chalmers- TDA 355 Göteborg GU- INN 12 pj DATABASER HT- 01 Omtenta i DATABASER Obs! Lärarversion, med lösningar DAG: 5 April, 2002 TID: kl. 8.45 12.45 PLATS: V-huset Ansvarig: Patrik Jansson Förfrνagningar: Patrik Jansson, ankn. 5415 Resultat: anslνas den 24 April, 2002 Poängantal: sammanlagt maximalt 60 poäng. Betygsgränser: CTH: 3:a 24 p., 4:a 36 p., 5:a 48 p. GU: Godkänd 28 p., Väl godkänd 48 p. Doktorander: Godkänd 28 p. Hjälpmedel: Ett A4-blad (bνada sidor fνar användas) med valfritt innehνall fνar medföras och skall i sνa fall lämnas in med svaren pνa tentan. (Skriv dνa namn och personnummer även pνa detta blad.) Observera: ffl Skriv tydligt och disponera pappret pνa ett lämpligt sätt. ffl Börja varje uppgift pνa nytt blad. Skriv endast pνa en sida av pappret. ffl Alla svar skall motiveras väl och ejvara onödigt komplicerade! ffl Ange pνa tentan om du gνar pνa GU eller Chalmers och vilken linje/program du gνar. Lycka till! 1

Uppgift 1. Transaktioner: Följande fyra krav ställs pνa ett databassystems transaktionshantering: A. Atomicity" "Allt eller inget": Varje transaktion ska genomföras antingen helt eller inte alls. C. Consistency" "Se upp för konsistensvillkoren": En slutförd transaktion som började i ett konsistent tillstνand slutade ocksνa i ett konsistent tillstνand. I. Isolation" "Ingen Insyn": Inga (eventuellt inkonsistenta) mellantillstνand av en transaktion ska vara synliga för nνagon annan. D. Durability" "Det som är gjort är gjort" Om en transaktion har avslutats och bekräftats med COMMIT, sνa gäller dess ändringar. Transaktionshanteraren har som indata ett antal transaktioner, varje trasaktion representeras av en lista av operationer (exempel: transaktion T1 = [Begin, Read A, Write B, Commit]) och har som uppgift att utföra dessa transaktioner enligt nνagon lämplig strategi. Ge för vardera av nedanstνaende fyra fall exempel pνa en strategi som uppfyller tre av ACIDreglerna men som bryter mot den fjärde. Om nνagon eller nνagra av kombinationerna är omöjliga förklara varför. a) Uppfyller CID, men ej A b) Uppfyller AID, men ej C c) Uppfyller ACD, men ej I d) Uppfyller ACI, men ej D För att uppfylla alla ACID-kraven behövs exempelvis konservativ 2-faslνasning, test av konsistenskrav senast vid commit och fördröjd ändring + loggfil + νaterställning vid krasch. Nedan beskrivs vad som krävs i a) till d) relativt detta. CID AID ACD ACI Utför nνagra av operationerna men lνat bli att göra commit. Ignorera konsistenskontrollerna vid commit. Använd inte lνasning. Utför inga operationer pνa databasen! 2

Bättre SENT än aldrig Tνagbolaget SENT (Svensk Effektiv Naturvänlig Tνagtrafik) har anlitat dig (nykläckt konsult) för att modellera deras verksamhet i en databas. Deras tidigare konsult (nu utbränd efter νatta νars hνart förarbete pνa detta projekt) har lämnat efter sig en uppsättning attribut och funktionella beroenden som beskriver det de vill modellera: Kortform Attribut Förklaring AP AntalPlatser Antal platser i en viss vagn Avg Avgνangstid Tiden dνa tνaget avgνar frνan avreseorten Avr Avreseort Den ort tνaget startar ifrνan Bi Biljettnummer Bo Bokningsnummer F Fönster Är platsen vid ett fönster? K Klass Första klass eller andra klass M MedBord Finns det bord vid platsen? Pl Platsnummer Platsnummer inom en vagn Pr Pris Biljettens pris S Slutstation Tνagets slutstation T Tνagnummer Tνagets nummer V Vagnnummer Vagnens ordningnummer i ett tνag VI VagnId Vagnens identifikationsnummer Dessa funktionella beroenden skall modelleras: 1. Tνagnummer! Avgνangstid, Avreseort, Slutstation 2. Tνagnummer, Vagnnummer! VagnId 3. VagnId! AntalPlatser 4. Biljettnummer! Bokningsnummer, Tνagnummer, Vagnnummer, Platsnummer, Pris 5. VagnId, Platsnummer! Klass, Fönster, MedBord 6. VagnId, Avgνangstid! Tνagnummer, Vagnnummer Här är samma beroenden med kortformer: 1. T! Avg, Avr, S 2. T, V! VI 3. VI! AP 4. Bi! Bo, T, V, Pl, Pr 5. VI, Pl! K, F, M 6. VI, Avg! T, V Uppgift 2. DB-design: Gör en förlustfri uppdelning av den universella tabellen sent(ap, Avg, Avr, Bi, Bo, F, K, M, Pl, Pr, S, T, V, VI) ilämpliga delar sνa att delarna är pνa BCNF, och sνa att alla beroenden utom nummer 6 bevaras. Ange för varje deltabell: tabellhuvud, nyckel, främmande nycklar frνan tabellen, samt vilka funktionella beroenden som den uppfyller. Din uppdragsgivare, 3

SENT, bryr sig inte om ifall uppdelningen gjorts med hjälp av normaliseringsteori, sunt förnuft eller (E)ER-diagram + översättning, bara slutresultatet är komplett, korrekt och väl motiverat. Beroende 1: avgνang(t, Avg, Avr, S) Beroende 2: tνagset(t, V, VI) tνagset.vi! vagn.vi tνagset.t! avgνang.t Beroende 3: vagn(vi, AP) Beroende 4: biljett(bi, Bo, T, V, Pl, Pr) biljett.t! avgνang.t biljett.ft, Vg!tνagset.fT, Vg Beroende 5: plats(vi, Pl, K, F, M) plats.vi! vagn.vi Uppgift 3. Relationsalgebra: Använd helst kortformerna av attributnamnen i svaren. a) Skriv ett uttryck som testar om beroende nummer 6 (VI, Avg! T, V) är uppfyllt. b) Definiera vyn sent som νaterskapar den universella tabellen frνan delarna. c) Skriv en sökfrνaga som ger Biljettnummer (kortform: Bi) för alla dubbelbokningar av sittplatser. Svar med SQL-uttryck istället för relationsalgebra ger maximalt halva poängtalet. a) jß V I;Avg (sent)j = jß V I;Avg;T;V (sent)j b) sent = biljett 1 avgνang 1 vagn 1 tνagset 1 plats c) kopia = biljett svar = ß biljett:bi (ff biljett:bi6=kopia:bi(biljett 1 T ;V ;Pl kopia)) Ski Jump You are about to help implement a database system for a ski jumping competition. Each jumper in the competition has a unique name associated with him and the country he is coming from. The ski jumping competition takes two rounds. During each round the distance of the jump is measured (with accuracy up to 0.5 meters) and five judges give their points for the style (you can assume it's between 0 and 20 with one decimal point accuracy). Based on the distance and judges' points the total points for a single round are calculated. After the second round the total points for the first and the second round are added to give the final result. The following tables will be needed for the competition: ffl jumper(name, Country) Name jumper name Country a three letter country code 4

ffl judge(judgenum, Round, Name, Points) JudgeNum judge id number(1to5) Round round number(1or2) Name jumper name Points points given by a judge ffl distance(round, Name, Distance) Round, Name same as before Distance jump distance in meters ffl results(round, Name, Points) Round, Name same as before Points accumulated points for the jumper: for round number one the total points for that round, for round number two the sum of total points for round number one and round number two(you can assume that the total result is between 0 and 1000 with one decimal point accuracy) Uppgift 4. (SQL design) a) What are the primary keys in the Ski Jump tables? What are the foreign keys? Which are the basic integrity constraints for this design? b) Write SQL statements to create the tables for Ski Jump. Choose field types carefully. c) Before a value is inserted into the results table for a given round both the jump distance and points from all five judges should be in the database. How would you specify the integrity constraint in SQL to enforce this requirement? drop table RESULTS; drop view HELP; drop table JUDGE; drop table DISTANCE; drop table JUMPER; create table JUMPER ( NAME varchar(30) not null primary key, COUNTRY char(3) not null create table DISTANCE ( ROUND integer not null check (ROUND between 1 and 2), NAME varchar(30) not null references JUMPER, DISTANCE numeric(4,1) not null check (DISTANCE between 0.0 and 300.0), primary key (ROUND, NAME) create table JUDGE ( JUDGENUM integer not null check (JUDGENUM between 1 and 5), ROUND integer not null check (ROUND between 1 and 2), NAME varchar(30) not null references JUMPER, POINTS numeric(3,1) not null check (POINTS between 0.0 and 20.0), 5

primary key (JUDGENUM, ROUND, NAME) create table RESULTS ( ROUND integer not null check (ROUND between 1 and 2), NAME varchar(30) not null references JUMPER, POINTS numeric(5,1) not null check (POINTS between 0.0 and 1000.0), primary key (ROUND, NAME), foreign key (ROUND, NAME) references DISTANCE (ROUND, NAME) -- part of Uppg. 4c create view HELP as select ROUND, NAME from JUDGE group by (ROUND,NAME) having sum(judgenum) = 15; intersect select ROUND, NAME from DISTANCE; -- example data insert into JUMPER values ('John Smith', 'USA' insert into JUMPER values ('Bill Jones', 'CAN' insert into JUMPER values ('Adam Malysz', 'POL' insert into JUMPER values ('Wojciech Pochwala', 'POL' commit; 6

Uppgift 5. (Programming against the Ski Jump database in Java) Eftersom JDBC inte ingνar i Chalmerskursen är denna uppgift frivillig för Chalmerister. Chalmeristerna kan fνa poäng pνa denna uppgift pνa ett av tvνa sätt: (Den beräkningsmetod som ger flest poäng används.) ffl Genom att lösa uppgften och fνa den poängbedömd (som pνa GU) ffl Som 25% av poängsumman pνa de andra uppgifterna Assume the jumpers table is filled with proper entries. Also assume the following secret Java method for calculating single round points based on the distance and five judges results is given: public static float calcpoints( float distance, float p1, float p2, float p3, float p4, float p5)...} Write the code for the following methods (assume they are static and may throw SQLException): ffl void jump(connection conn, int round, String name, float distance This method is called after the distance of a single jump is measured. ffl void judge(connection conn, int judgenum, int round, String name, float points This method should be used by judges after each jump to report their results. ffl boolean calcresults(connection conn, int round, String name This method is called to update results table. It should calculate the points for a given round using the given calcpoints method. If there was not enough data to calculate the result (you can use the answer to 4c to determine that) the method should return false, otherwise the results table should be updated and true returned. ffl void printresults(connection conn This method should print all the jumpers positions (sorted) with country and final point results, like the following: 1. John Smith, USA, 825 points 2. Bill Jones, CAN, 740 points... Java JDBC hints ffl Executing SQL select statement and getting the results: Statement stmt = conn.createstatement( ResultSet rset = stmt.executequery ("select... from..." while(rset.next()) // access the column values by rset.getstring(colnum) or // rset.getint(colnum) or rset.getfloat(colnum) } ffl Executing SQL insert statement: Statement stmt = conn.createstatement ( stmt.executeupdate ("insert into... values..." 7