2002-06-05 Lena Strömbäck, ankn 2324 Written exam in the course TDDB 48 Database technology Date: 2002-08-29 Time: 14-18 Room: GARNISONEN Equippment: Two books are allowed 1. A language dictionary 2. A databse textbook, (notes in the book are allowed) No separate papers are permitted Limits for passing: The exam consists of two parts: Part one requires 13 points for pass Part two requires 13 points for pass Grade 4 requires approx. 35 points Grade 5 requires approx. 45 points Results: Will be available within two weeks Teacher in charge: Lena Strömbäck, 0709-39 6776, 013-16 46 99 Henrik André-Jönsson, 013-31 89 55, 070-354 74 03 A Swedish version of the questions is found at the back of each sheet. Use one sheet for each question. Write name and personal number on each sheet. Part 1: Practical 1. ER- modelling (8 p) The IT department at a large company is starting to have problems. The company has grown very rapidly and they are starting to have problems with keeping track of the company computer hardware. You are hired as a contract worker to help them design a database that will help them to keep this kind of information. The following information is kept in a paper based system and has to be included in the new system: • The IT department builds all their computers from components. Each computer consists of a number of components like graphic cards, network cards, mother boards, memory capsules, hard disks, etc. When a components is bought it is given an id number, and the component is marked with this id number so that it will be possible to track each individual component. • Every computer consists of a computer box, a graphic card, one or more hard drives, etc. The finished computer is placed in a room, and gets a person responsible for that computer. • If something brakes the IT department will be able to see who delivered the faulty component, when it was bought, what kind of warranty the component has and who to contact in need of service. Create a ER/EER diagram that the IT department can use as a base for implementing this system. 2. EER to relations (6p) Translate the following EER-schema to a relational schema. Explain and motivate how the mapping is done. PNum Person Name O Bonus Employee Speciality n Manager n 1 1 contr. manages works at n Project Adress m Id Office Id Del1: Praktisk 1. ER1 (sv) 8 p IT avdelningen på Dåtidsfabriken har börjat få problem. Då företaget växt explosionsartat så börjar det bli svårt att hålla ordning på företagets datorpark. För att komma tillrätta med situationen så hyr man in dig som konsult för att designa en databas som ska hålla ordning på all information. Följande information lagras idag, och är sådan information som man vill få med i det nya systemet. • IT avdelningen bygger ihop alla sina maskiner själva och man köper in ett stort antal lösa komponenter. Varje dator består alltså av ett antal komponenter som t.ex. grafikkort, nätverkskort, moderkort, minneskappslar, hårddiskar m.m. När en komponent köps in så får den ett nummer och den märks med detta nummer, dels för att man ska kunna hålla koll på att anställda inte tar hem komponenter och dels för att man ska kunna se så att anställda inte stoppar egna komponenter i företagets maskiner. • Varje fysisk dator består sedan av en datorlåda, ett grafikkort, en eller flera hårddiskar osv. Den färdiga datorn placeras sedan i ett rum, och den får en ansvarig person som ska ansvara för den under drift. • I den händelse att något går sönder vill IT avdelningen kunna se vem som har levererat den trasiga komponenten, när den införskaffades, hur lång garanti tid det är samt kontaktperson hos leverantören. Skapa ett ER/EER diagram som IT avdelningen kan använda som underlag för att implementera systemet. 2. EER till relationer 6 p Översätt följande EER schema till ett relationsschema. Förklara och motivera hur mappningen sker. PNum Person Name O Bonus Employee Speciality n Manager n 1 1 contr. manages works at n Project Adress m Id Office Id 3. Normalization (5p) Given the following relation: MYDATABASE(StudentID, CourseID, StudentName, CourseName, StudentEmail, StudentGradeList) Example of content in the relation : (<12, TDDB48, Karl Karlsson, Databasteknik, karka, [Labs: G, Ten1: 4]>, <12, TDDB55, Karl Karlsson, Medieteknik, karka, [Proj1: G, Proj2: G, Labs: G]>, <10, TDDB48, Nils, Nilsson, Databasteknik, nilni, [Labs: G]>) a. What normalform is this relation in? (1p) b. Transform the relation so that it will be in BCNF, show every step you make and explain why you do it. (4p) 4. SQL-queries (6p) Given the following relational schema: STUDENT(StudPNum, Name) STUDENTREULT(StudPNum, CourseID, Grade) a. List all courses that the student with PNumber ‘800101-1122’ has a grade in. (2p) b. Create a query that returns the name of the students with a grade average higher than 4. (4p) 3. Normalisering (5p) Betrakta följande relation: MYDATABASE(StudentID, CourseID, StudentName, CourseName, StudentEmail, StudentGradeList) Exempel på innehåll i relationen: (<12, TDDB48, Karl Karlsson, Databasteknik, karka, [Labs: G, Ten1: 4]>, <12, TDDB55, Karl Karlsson, Medieteknik, karka,[Proj1: G, Proj2: G, Labs: G]>, <10, TDDB48, Nils, Nilsson, Databasteknik, nilni, [Labs: G]>) a. Vilken normalform har denna relation? (1p) b. Gör om relationen så att den blir i BCNF, visa varje steg du gör och förklara varför du gör det. (4p) 4. SQL (6p) Givet följande relationsschema: STUDENT(StudPNum, Name) STUDENTCOURSE(StudPNum, CourseID, Grade) a. Lista alla kurser som studenten med personnummer ‘800101-1122’ har betyg i. (2p) b. Skapa en fråga som returnerar namnet på de studenter som har medelbetyg högre än 4. (4p) Part 2: Theoretical 5. Normalization (4p) a. What is a conceptual dependency and how is it related to normal forms? (2p) b. What does normalization mean and why is it used? (1p) c. Give an example of a reason why in some cases you choose not to have a high normalization form. (1p) 6. Data structures (5p) a. In a table with 10000 rows the following information is stored for each row: PERSONNAME (char(20)), PERSONNUMBER (char(10)) and JOBCODE (char(2)). PERSONNUMBER values are unique. Different persons can have the same JOBCODE value. On average 10 persons have the same JOBCODE values. Assume a block size of 4096 bytes and that we use unspanned records. Assume that the pointer size is 4 bytes. Show how you can create a secondary index for the table above. You can choose which field is the index field and whether and how the table is sorted. Describe this! (You cannot change the information about the table that was given above.) How many block accesses are needed on average and in worst case (using the index) to find a record with a given value for the index field? Show how you obtained your results. (3p) b. Explain the difference between primary- secondary- and clustering indexes. Also explain if and how these three indexes can be used together on the same file. (2 p) 7. Database recovery (5p) Suppose that we use the deferred update protocol for the example below. Show how the log would be different in the case of deferredupdate by removing the unnecessary log entries; then describe the recovery process, using your modified log. Assume that only REDO operations are applied and specify which operations in the log are redone and which are ignored. [start_transaction, T1] [read_item, T1, A] [read_item, T1, D] [write_item, T1, D, 20] [commit, T1] [checkpoint] [start_transaction, T2] [read_item, T2, B] [write_item, T2, B, 12] [start_transaction, T4] [read_item, T4, D] [write_item, T4, D, 15] [start_transaction, T3] [write_item, T3, C, 30] [read_item, T4, A] [write_item, T4, A, 20] [commit, T4] [read_item, T2, D] [write_item, T2, D, 25] (system crash) Del 2: Teoretisk 5. Normalisering (4p) a. Vad innebär konceptuella beroenden och hur relaterar dessa till normalformer? (2p) b. Vad innebär normalisering och varför används det? (1p) c. Ge exempel på en orsak till att man i vissa fall väljer att inte ha så hög normaliseringsgrad på sina relationer. (1p) 6. Data structurer (5p) a. I en tabell med 10000 rader är följande information lagrad för varje rad: PERSONNAME (char(20)), PERSONNUMBER (char(10)) och JOBCODE (char(2)). PERSONNUMBER-värdena är unika. Olika personer kan ha samma JOBCODEvärde. I genomsnitt har 10 personer samma JOBCODE-värde. Antag en blockstorlek på 4096 bytes och obrutna (eng. unspanned) lagringsposter. Antag att en pekare är 4 bytes lång. Visa hur man kan skapa ett sådant index för tabellen ovan. Du får själv välja vilket fält som är indexfältet och om och hur tabellen är sorterad. Ange detta! (Du får dock inte ändra uppgifterna om tabellen ovan.) Hur många blockaccesser behövs i genomsnitt och i värsta fall (med användning av ditt index) för att hitta en post (eng. record) med givet värde för indexfältet? Visa hur du får fram ditt resultat. (3p) a. Förklara skillnderna mellan primary-, secondary och clustering- index. Förklara också om och hur dessa kan användas tillsammans för en fil. (2p) 7. Databasåterställning (recovery) (5p) Antag att vi använder protokollet för uppskjuten uppdatering (deferred update protocol) för exemplet nedan. Visa hur loggen skulle förändras om vi i istället använderuppskjuten uppdatering där vi tar bort onödiga log entries; beskriv sedan recovery processen utifrån din modifierade log. Antag att bara REDO operationer görs och visa vilka operationer i loggen som görs om och vilka som ignoreras. [start_transaction, T1] [read_item, T1, A] [read_item, T1, D] [write_item, T1, D, 20] [commit, T1] [checkpoint] [start_transaction, T2] [read_item, T2, B] [write_item, T2, B, 12] [start_transaction, T4] [read_item, T4, D] [write_item, T4, D, 15] [start_transaction, T3] [write_item, T3, C, 30] [read_item, T4, A] [write_item, T4, A, 20] [commit, T4] [read_item, T2, D] [write_item, T2, D, 25] (system crash) 8. SQL-queries and relational algebra (5p) a. Explain the different parts of a ’SELECT’-statement and what they perform with respect to the operations in relational algebra. (3p) b. Illustrate your answer in a. by expressing a join query over two relations in SQL and relational algebra. The query must be your own example. (2p) 9. General database architecture (6p) a. Give an overview of the architecture of a database management system and give a brief description of how it supports data independence. (3p) b. Give an example from databases which illustrates why data independence is important and relate your example to the architecture in a. (1p) c. In some situations it is important to understand how the database is stored on the physical storage. Give an example of this and explain why it is important with this knowledge. (2p) 8. SQL och relationsalgebra (5p) a. Förklara de olika delarna i en SQL-fråga och visa hur de relaterar till operationerna i relationsalgebran. (3p) b. Illustrera ditt svar i a genom att uttrycka samma joinfråga i SQL och relationsalgebra. (2p) 9. Generell databsarkitektur (6p) a. Ge en översikt över arkitekuren för ett databashanteringssystem och förklara hur det understödjer dataoberoende. (3p) b. Ge ett konkret exempel på när dataoberoende är viktigt relatera ditt exempel till ditt svar i a. (1p) c. I vissa situationer är det viktigt att förstå hur data är lagrad på det fysiska mediet. Ge ett exempel på detta och förklara varför den fysiska lagringen påverkar databasens beteende. (2p)