Basics of databases 4.4.2011



Samankaltaiset tiedostot
Basics of databases

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

812336A C++ -kielen perusteet,

Choose Finland-Helsinki Valitse Finland-Helsinki

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

anna minun kertoa let me tell you

make and make and make ThinkMath 2017

1. Liikkuvat määreet

Tietokannat II -kurssin harjoitustyö

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

Salasanan vaihto uuteen / How to change password

On instrument costs in decentralized macroeconomic decision making (Helsingin Kauppakorkeakoulun julkaisuja ; D-31)

MEETING PEOPLE COMMUNICATIVE QUESTIONS

Capacity Utilization

Uusi Ajatus Löytyy Luonnosta 4 (käsikirja) (Finnish Edition)

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

Efficiency change over time

Information on preparing Presentation

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

Use of spatial data in the new production environment and in a data warehouse

Tietorakenteet ja algoritmit

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

The CCR Model and Production Correspondence

C++11 seminaari, kevät Johannes Koskinen

Information on Finnish Courses Autumn Semester 2017 Jenni Laine & Päivi Paukku Centre for Language and Communication Studies

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

SELL Student Games kansainvälinen opiskelijaurheilutapahtuma

LANSEERAUS LÄHESTYY AIKATAULU OMINAISUUDET. Sähköinen jäsenkortti. Yksinkertainen tapa lähettää viestejä jäsenille

AYYE 9/ HOUSING POLICY

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

Miksi Suomi on Suomi (Finnish Edition)

Business Opening. Arvoisa Herra Presidentti Very formal, recipient has a special title that must be used in place of their name

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

RINNAKKAINEN OHJELMOINTI A,

ALOITUSKESKUSTELU / FIRST CONVERSATION

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

Travel Getting Around

RDBMS - Yhteyskäytännöt

Uusia kokeellisia töitä opiskelijoiden tutkimustaitojen kehittämiseen

The Viking Battle - Part Version: Finnish

ECVETin soveltuvuus suomalaisiin tutkinnon perusteisiin. Case:Yrittäjyyskurssi matkailualan opiskelijoille englantilaisen opettajan toteuttamana

Uusi Ajatus Löytyy Luonnosta 3 (Finnish Edition)

16. Allocation Models

Counting quantities 1-3

Small Number Counts to 100. Story transcript: English and Blackfoot

Expression of interest

Rekisteröiminen - FAQ

Tilausvahvistus. Anttolan Urheilijat HENNA-RIIKKA HAIKONEN KUMMANNIEMENTIE 5 B RAHULA. Anttolan Urheilijat

VAASAN YLIOPISTO Humanististen tieteiden kandidaatin tutkinto / Filosofian maisterin tutkinto

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

MISKA 1514 MISKA % WOOL 50% ACRYLIC 100% WOOL

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy

Siirtymä maisteriohjelmiin tekniikan korkeakoulujen välillä Transfer to MSc programmes between engineering schools

Hankintailmoitus: Pohjois-Savon sairaanhoitopiirin kuntayhtymä/kiinteistöyksikkö : Puijon sairaalan Pääaula-alueen uudistus, Sähköurakka

Curriculum. Gym card

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Other approaches to restrict multipliers

Data protection template

Sisällysluettelo Table of contents

PAINEILMALETKUKELA-AUTOMAATTI AUTOMATIC AIR HOSE REEL

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Counting quantities 1-3

Hotel Pikku-Syöte: accommodation options and booking

Guidebook for Multicultural TUT Users

Voice Over LTE (VoLTE) By Miikka Poikselkä;Harri Holma;Jukka Hongisto

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

ETELÄESPLANADI HELSINKI

Kvanttilaskenta - 1. tehtävät

IFAGG WORLD CUP I, CHALLENGE CUP I and GIRLS OPEN INTERNATIONAL COMPETITION 1 st 2 nd April 2011, Vantaa Finland

Oma sininen meresi (Finnish Edition)

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

VUOSI 2015 / YEAR 2015

Exercise 1. (session: )

Matkustaminen Majoittuminen

Matkustaminen Majoittuminen

Java ja tietokannan käsittely (JDBC)

4x4cup Rastikuvien tulkinta

Tarua vai totta: sähkön vähittäismarkkina ei toimi? Satu Viljainen Professori, sähkömarkkinat

Operatioanalyysi 2011, Harjoitus 4, viikko 40

FIS IMATRAN KYLPYLÄHIIHDOT Team captains meeting

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

Olet vastuussa osaamisestasi

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

Travel Accommodations

Hankkeiden vaikuttavuus: Työkaluja hankesuunnittelun tueksi

Suunnittelumallit (design patterns)

EUROOPAN PARLAMENTTI

Statistical design. Tuomas Selander

OP1. PreDP StudyPlan

Kysymys 5 Compared to the workload, the number of credits awarded was (1 credits equals 27 working hours): (4)

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi Harri Laine 1. SQL:n käyttö ohjelmissa

Travel General. General - Essentials. General - Conversation. Asking for help. Asking if a person speaks English

Transkriptio:

Tietokantojen perusteet 4.4.2011 Jokainen osakysymys 1-6 arvostellaan erikseen ja kurssisuoritus vaatii jokaisen osan hyväksyttyä osaamista. Osa on voitu suorittaa kurssin aikana tai se voidaan suorittaa tentissä. Kaikki osat pitää olla suoritettu syyskuuhun 2011 loppuun mennessä, muuten osasuoritukset kuoleutuvat. Laitoksen opetuksen kehittämistyöryhmän päätöksen vuoksi ei kesätenttiä järjestetä ja tämän tentin jälkeen on vielä yksi tentti syksyllä. Jos siis saat tästä tentistä hylätyn, olet silti voinut olla hyväksytysti suorittanut esimerkiksi osat 1 ja 3. Tällöin sinun riittää yrittää seuraavassa tentissä vain osia 2,4,5 ja 6. Englanninkielisen ja suomenkielisen tentin kysymykset ovat erit. Vastaa vain toiseen tenttiin. Merkitse opiskelijanumerosi tenttipaperiin - ei henkilötunnusta. Basics of databases 4.4.2011 The course has six parts. Parts will be evaluated separately and you must pass every part. You must pass every part before October. After evaluation of this exam you will be informed, if you pass any single part (assuming that you have enrolled to the exam in Oodi). English and Finnish exams differ. English questions in the end.

OSA 1. CUSTOMER CID NAME STREETADDRESS ZIP P_OFFICE DESCRIPTION EMPLOYEE EID NAME STREETADDRESS ZIP P_OFFICE PROVISION ORDER ORDERNUMBER CUSTOMERID EMPLOYEEID DATE CUSTOMERID viittaa -> CUSTOMER(CID) EMPLOYEEID viittaa-> EMPLOYEE(EID) PRODUCT NAME PRICE PID DESC ORDER_ROW ORDERNUMBER ROWNUMBER PRODUCT QUANTITY ORDERNUMBER viittaa -> ORDER(ORDERNUMBER) PRODUCT viittaa -> PRODUCT(PID) Laadi seuraavat tietokantakyselyt relaatioalgebralla yo. kantaan. EI SAA KÄYTTÄÄ SQLkieltä! a). Luettele niiden asiakkaiden nimi ja osoite, jotka eivät ole kuusamolaisia eikä porilaisia. b) Luettele niiden työntekijöiden nimet, jotka eivät ole koskaan myyneet mitään. c) Luettele niiden työntekijöiden numerot, jotka ovat myyneet joskus kumin (rubber). d) Luette niiden asiakkaiden nimet, jotka ovat tehneet ainakin kaksi eri tilausta.

OSA 2. Englanninkielisten kysymysten lopussa on EER-kaavio. Revi se pois, kirjoita siihen nimesi ja palauta se vastauskonseptisi välissä. Tee siihen seuraavat korjaukset ja lisäykset. a) Sama henkilö ei voi olla sekä asunnonomistaja että asunnon vuokraaja. b) Samalla asunnolla voi olla useita vuokraajia. c) Tiedämme päivämäärän, milloin vuokralaisesta on viimeksi tarkistettu mahdolliset luottohäiriömerkinnät. d) Tiedämme, milloin kukin asunnon omistaja on kunkin asunnon ostanut, ja milloin omistaja on asunnosta luopunut. e) Me muistamme myös aikaisemmat omistajat. f) Vuokrattavana on sekä omakotitaloja (joista kiinnostaa: huoneiden lukumäärä, saunan olemassaolo, onko tontti oma ja osoite) sekä osakkeita (joista kiinnostaa huoneiden lukumäärä, saunan olemassaolo, osoite ja kiinteistöyhtiö). Yleistä tarpeellisilta osin. g) Kiinteistöyhtiöistä kiinnostaa nimi (tunniste), osoite ja puhelinnumero. h) Omakotitaloja vuokrataan vain pariskunnille. (Meillä pitää olla tieto avioliitoista) OSA 3. Taulu LASKU(numero, asiakasnumero, asiakasnimi, asiakasosoite, tuotenumero, tuoteovhhinta, tuotteenmäärätilauksessa, myyjänumero, loppusumma, alvsumma, tilauspvm, laskupvm) Yhteen tilaukseen kuuluu useita tuotteita. a) Määritä täydelliset funktionaaliset riippuvuudet b) Normalisoi c) Todista, että relaatio, jossa on tasan kaksi attribuuttia, on aina BCNF (ei vähemmän eikä enemmän)

OSA 4. Ohessa kolme samaa pankkitiliä vähentävää transaktiota samassa ajoitusjärjestyksessä. Aika kulkee ylhäältä alas. a) Huonostihan tuossa käy. Todista asia osoittamalla, että ajoitusjärjestys ei ole sarjallistuva. b) Missä tapahtuu likainen luku/lukuja (dirty read) c) Miten käy kun lukitaan vasta kun on pakko? (Yhteinen johdanto kysymyksille d ja e) : Käytetään konservatiivista kaksivaiheista lukitusta (transaktio ei käynnisty ilman kaikkia lukkoja) Transaktiot yrittävät käynnistyä ensimmäisen oman operaationsa kohdalla. Jos transaktio ei pääse käyntiin, se yrittää jokaisen muiden transaktioiden suoritettujen komentojen jälkeen uudelleen. Jos usea transaktio yrittää käynnistyä yhtäaikaa, niin T1 yrittää aina ensin, T2 sitten ja T3 viimeisenä. d) Paljonko tililtä nostetaan silloin kaiken kaikkiaan? e) Mikä on lopullinen ajoitusjärjestys (eli missä järjestyksessä yo. luku- ja kirjoitusoperaatiot tosiasiallisesti suoritetaan.)

OSA 5 Muokkaa / lisää allaolevaa java-koodia siten, että se lukee tol-nimisestä kannasta Työläisettaulusta (TYOLAISET(NIMI, NUMERO, SUKUPUOLI, OSOITE, PUHELIN)) kaikkien sellaisten työläisten tiedot, jotka ovat miehiä ja joilla on puhelin. Ohjelman tulee tulostaa nämä tiedot näytölle, ja sen lisäksi lisätä ko. tiedot test-kannassa olevaan pomot-nimiseen tauluun, jonka rakenne on muutoin samanlainen kuin tol-kannan työläiset-taulun, mutta sarakkeet ovat käänteisessä järjestyksessä. Kantana on mysql, ohjelmointikielenä java, ja ajurien asennukset, taulurakenteiden luonnit sekä palvelinyhteyden salauksen voi olettaa tehdyiksi ohjelman ajoympäristössä. import java.sql.*; public class ExamFlip { public static void main (String args[]) { try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); catch (Exception E) { System.err.println("Unable to load driver."); E.printStackTrace(); try { String url = "jdbc:mysql://localhost:3306/tol?user=testuser&password=testuser"; Connection MySQLcon = DriverManager.getConnection (url); Statement stmt = MySQLcon.createStatement (); OSA 6 catch (SQLException e) { e.printstacktrace(); Koskien EER-kaaviota Picture 1 (modifioitu Silberschatz et al). a) Kirjoita SQL-lauseet, joilla voit toteuttaa kaavion relaatiotauluina. b) Tee laatimiin tauluihn SQL-kysely, joka palauttaa kaikkien 12.12.1976 syntyneiden tiedot.

PICTURE 1

ENGLISH QUESTIONS PART 1. CUSTOMER CID NAME STREETADDRESS ZIP P_OFFICE DESCRIPTION EMPLOYEE EID NAME STREETADDRESS ZIP P_OFFICE PROVISION ORDER ORDERNUMBER CUSTOMERID EMPLOYEEID DATE CUSTOMERID references -> CUSTOMER(CID) EMPLOYEEID references -> EMPLOYEE(EID) PRODUCT NAME PRICE PID DESC ORDER_ROW ORDERNUMBER ROWNUMBER PRODUCT QUANTITY ORDERNUMBER references -> ORDER(ORDERNUMBER) PRODUCT references -> PRODUCT(PID) Define following queries by relational algebra to database above. DO NOT USE SQL. a). List names and adresses of the customers who are not from Kuusamo nor Pori. b) List the names of the employees who has never sold anything. c) List the numbers of the employees who has sold a rubber. d) List the names of the customers who has done at least two separate orders.

PART 2. In the end there is an EER-picture. Take it off, write your name on it and return inside your answer paper. Make following modifications to that EER-picture: a) The same person must not be both a tenant and a landlord. b) Group of persons can rent an appartment. c) We know the date when we have last checked credit rating of a tenant. d) We know the date when the landlord has bought the appartment and when he has sold it. e) We remember previous landlords of the appartment f) We rent both houses and condominiums. (Houses) number of rooms, area and address. (Condominiums) number of rooms, address and property company. g) Property company we know name (unique), and contact person s name and phone h) Only married couples can rent houses. (We must know marriages) PART 3. Consider the relation R, which has attributes that hold schedules of courses and sections at a university; R = {CourseNo, SecNo, OfferingDept, CreditHours, CourseLevel, InstructorSSN, Semester, Year, Days_Hours, RoomNo, NoOfStudents. Suppose that the following functional dependencies hold on R: {CourseNo -> {OfferingDept, CreditHours, CourseLevel {CourseNo, SecNo, Semester, Year -> {Days_Hours, RoomNo, NoOfStudents, InstructorSSN {RoomNo, Days_Hours, Semester, Year -> {InstructorSSN, CourseNo, SecNo Try to determine which sets of attributes form keys of R. How would you normalize this relation? ( Elmasri & Navathe)

PART 4. Following there is a schedule with three transactions that are all handling the same bank account item. Time goes down. T1 (tries to withdraw 800 ) Read (gets "1000") Write "200" (ie withdraw 800) T1, T2 and T3 commit here T2 (tries to withdraw100) Read (gets "1000") Write "900" T3 (tries to withdraw 800) Read (gets "200") Write nothing (the transaction cannot withdraw) a) That is not a good schedule. Prove that it is not serializable. b) Show dirty read/ dirty reads c) What happens if we are using optimistic 2PL? (Optimistic: we lock as late as possible) What about if... We use conservative 2PL so a transaction does not start at all if it does not get all locks. A transaction tries to start first time when there is the first of its operation. If it cannot start, it will try again after every operation of the schedule. If many transaction tries to start at the same time, T1 comes first and T3 last. d) After all, what will be a balance? e) What will be a true schedule (= order of operations in practice)

PART 5 Edit / insert the java code below so that it reads from a database named tol all information about workers who are male and who has a phone. (table WORKER(NAME, NUMBER, SEX, ADDRESS, PHONE). The program must print out these information to the screen, and in addition to that add the query information in question into a table named bosses in a database named test. The structure of the table bosses is similar to the table workers, except that the columns are in a reverse order. The database server in question is mysql, programming language to be used is Java, and all driver installations, table structure creations and server connection encryptions can be assumed to be taken care of in the execution environment of the program. import java.sql.*; public class ExamFlip { public static void main (String args[]) { try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); catch (Exception E) { System.err.println("Unable to load driver."); E.printStackTrace(); try { String url = "jdbc:mysql://localhost:3306/tol?user=testuser&password=testuser"; Connection MySQLcon = DriverManager.getConnection (url); Statement stmt = MySQLcon.createStatement (); PART 6 catch (SQLException e) { e.printstacktrace(); Check Picture 1. (Between Finnish and English questions) (modified from Silberschatz et al). a) Give SQL-commands to create proper tables. b) To created tables, give an SQL-query to find data of all people born 12.12.1976