Tietokannan suunnittelu

582482
5
Ohjelmistojärjestelmät
Aineopinnot
Tietokannan käsitesuunnittelu ja relaatiotietokantakaavion johtaminen käsitekaaviosta. Tietokannan looginen suunnittelu: relaatiotietokantakaavion arviointi ja muokkaus. Relaatiotietokannan fyysinen suunnittelu ja kyselynkäsittely. Esitiedot: Tietokantojen perusteet, Tietokantasovellus ja Tietorakenteet.
Vuosi Lukukausi Päivämäärä Periodi Kieli Vastuuhenkilö
2010 syksy 08.09-14.10. 1-1 Suomi

Luennot

Aika Huone Luennoija Päivämäärä
Ke 14-16 C222 Seppo Sippu 08.09.2010-14.10.2010
To 14-16 C222 Seppo Sippu 08.09.2010-14.10.2010

Harjoitusryhmät

Group: 1
Aika Huone Ohjaaja Päivämäärä Huomioitavaa
Ke 12-14 B119 Seppo Sippu 06.09.2010—15.10.2010
Group: 2
Aika Huone Ohjaaja Päivämäärä Huomioitavaa
To 16-18 B222 Seppo Sippu 06.09.2010—15.10.2010 Huom! Sali on vaihtunut!

Kurssin harjoitukset alkavat jo ensimmäisellä luentoviikolla.

Information for international students

The course is an intermediate-level course that is mandatory for software systems M.Sc. students. The prerequisites for the course are Introduction to Databases, Database Application, and Data Structures.

The weekly lectures and exercise groups are given in Finnish only. Also the lecture notes are in Finnish, with references to textbooks written in English. The weekly homeworks are published both in Finnish and in English, and solutions to them will be published in English shortly after each weekly exercise group session.

International students are invited to submit their solutions to the weekly homeworks to the lecturer. The homeworks are not mandatory, but credits are given for doing them, so that out of a total of 60 points, 6 points can be earned from the homeworks (while 54 points can be earned from the course exam). The credits for homeworks are only valid for the exams to be held on October 20 and November 23, 2010. To pass the course, 30 points out of the total of 60 points must be earned.

Yleistä

Kurssi on uusimmissa eli syksyllä 2008 ja syksyllä 2010 voimaan astuneissa tutkintovaatimuksissa LuK-tutkinnon aineopintojen valinnainen opintojakso, joka on pakollinen Ohjelmistojärjestelmien erikoistumislinjalla FM-tutkinnon suorittaville. Kurssi korvaa syksyllä 2005 voimaan astuneiden tutkintovaatimusten Tiedonhallinnan erikoistumislinjan samannimisen syventävän opintojakson. Kurssia ei voi sisällyttää samaan tutkintoon yhdessä entisen informaatiojärjestelmien erikoistumislinjan laudaturkurssin Tietokannan mallinnus (2 ov) kanssa.

Esitietoina edellytetään kurssit Tietokantojen perusteet, Tietokantasovellus ja Tietorakenteet.

Kurssin oppimistavoitteet on esitetty erillisessä matriisissa.

Kurssin suorittaminen

Kurssi suoritetaan joko (1) kurssin päätyttyä järjestettävällä kurssikokeella tai uusintakokeella sekä kurssin kuluessa suoritetuilla viikottaisilla harjoitustehtävillä tai (2) myöhemmin järjestettävällä erilliskokeella. Kurssikokeen maksimipistemäärä on 54, ja harjoituksista voi saada 6 pistettä (20 % tehtävistä tehty = 1 p, 30 % = 2 p, ..., 70 % = 6 p). Harjoitukset eivät ole pakollisia. Erilliskokeen maksimipistemäärä on 60 (harjoituksista ei saa pisteitä). Hyväksymiseen vaaditaan normaalisti noin puolet pisteistä eli 30 p. Kurssikoe pidettiin 20/10 klo 16–19 Exactumin salissa A111.

Harjoitukset alkoivat jo ensimmäisellä luentoviikolla. Kurssin ensimmäiset harjoitukset kertaavat kurssin esitietoja. Harjoituksiin voi valmentautua perehtymällä esimerkiksi Satu Elorannan kokoamaan kertausaineistoon Relaatiomallin kertaus tai alempana mainitun Silberschatzin ja kumppanien oppikirjan viidennen painoksen (2006) lukuihin 2 ja 3 sekä luvun 4 kohtiin 4.1 ja 4.2.

Kirjallisuus ja materiaali

Kurssi noudattanee pitkälle syksyn 2009 luennointikerran sisältöä. Kurssin koko luentomateriaali sijoitetaan (pdf-muodossa) laitoksen sisäiseen verkkoon (intranettiin) ja linkitetään tälle sivulle, kurssin sisältökuvaukseen.

Kurssi jakaantuu karkeasti kolmeen osaan: I (relaatiotietokannan käsitesuunnittelu), II (relaatiotietokannan looginen suunnittelu) ja III (relaatiotietokannan fyysinen suunnittelu).

Ia. Tietokannan käsitesuunnittelu: tietokannan suunnitteluprosessi, yksilöt ja yksilötyypit, yksilötyypit ja relaatiokaaviot, yhteydet ja yhteystyypit, yhteystyypit ja relaatiokaaviot, yhteystyyppien kardinaalisuus- ja osallistumisrajoitteet, funktionaalisen kaksiasteisen yhteystyypin relaatiokaavio, useampiasteisten yhteystyyppien rajoitteet, heikot yksilötyypit, heikon yksilötyypin relaatiokaavio.

Ib. Yksilö-yhteys-kaavion suunnitteluperiaatteita: sovellususkollisuus, ER-mallissa ei ole viiteavaimia, yksilö vai attribuutti, redundanssin välttäminen, yksilö vai yhteys, moniasteiset yhteydet, yhteystyypin attribuuttien sijoittelu, erikoistaminen ja yleistäminen, yhteenveto ER-mallin merkintätavoista, ER-mallin ja UML-mallin vastaavuus, esimerkki: pankkitietokannan mallintaminen.

IIa. Relaatiotietokannan riippuvuudet: loogisen suunnittelun tavoitteista, funktionaaliset riippuvuudet, funktionaaliset riippuvuudet eheysrajoitteina, avainrajoitteet, funktionaalisten riippuvuuksien logiikka, riippuvuusjoukon sulkeuma, relaation faktat ja redundanssi, faktojen päivittäminen ja päivitysanomaliat, relaatiokaavion ositus ja riippuvuusjoukon projektio, sisältyvyysriippuvuudet, sisältyvyysriippuvuuksien syklit.

IIb. Riippuvuuksien johtaminen ja relaatiokaavion normaalistaminen: attribuuttijoukon sulkeuma, avainten määrääminen, riippuvuusjoukon kanoninen peite, Boyce-Codd-normaalimuoto, riippuvuuksien säilyminen osituksessa, kolmas normaalimuoto, häviötön osittaminen, BCNF-normaalistamisalgoritmi, BCNF-normaalistamisalgoritmin tuloksesta, 3NF-normaalistamisalgoritmi, 3NF-algoritmin tuloksesta, loogisen suunnittelun prosessista.

IIIa. Tietokantapalvelin ja fyysiset tietokantarakenteet: transaktiopalvelin, transaktiopalvelimen tietokokoelmat, fyysinen tietokanta ja sivut, tiedostot ja segmentit, tietokantasivujen puskurointi, SQL-operaation suoritus, transaktion suoritus, tietokannan tila, tietokannan elvytys, relaation kasarakenne, tauluselaus, järjestetyn relaation harva hakemisto, konttaus, ISAM-hakemisto, harva B-puu, tiheät hakemistot, osavälikyselyt, hakemistojen päivitys, hajautusrakenteet, hakemiston ryvästävyys, hakemistojen valintaperiaatteita, hakemistojen kunnossapito.

IIIb. Kyselyiden käsittely ja tietokannan virittäminen: kyselyn käsittelyn vaiheet, kyselyn laskennan kustannusmittarit, kyselyn käsittelyn perusajatuksia, hakemistoselaus, valintaoperaation laskenta, relaation järjestäminen, lomitusliitos, sisäkkäisten silmukoiden liitos, hakemistoliitos, hajautusliitos, kyselynoptimoinnin periaate, esimerkki kyselynoptimoinnista, kyselyn optimointia avustava tilastotieto, operaation tuloksen koon arviointi, vasteaika ja suoritusteho, suorituskykyä rajoittavia tekijöitä, tietokantajärjestelmän virittäminen, laitteiston virittäminen, viiden minuutin sääntö, loogisen kaavion virittäminen, epänormaalistaminen, relaatioiden vaakasuora osittaminen, hakemistojen osittaminen.

Kurssin luennot perustuvat löyhästi seuraavaan kirjaan:

A. Silberschatz, H. F. Korth & S. Sudarshan: Database System Concepts. Fifth Edition. McGraw-Hill, 2006. Kirjasta käsitellään kokonaan luvut 6 (database design and the E-R model) ja 7 (relational database design), jotka yhdessä kattavat relaatiotietokannan käsite- ja loogiseen suunnitteluun liittyvät asiat. Relaatiotietokannan fyysiseen suunnitteluun ja kyselynkäsittelyyn liittyviä asioita on poimittu luvuista 11 (storage and file structure), 12 (indexing and hashing), 13 (query processing) ja 14 (query optimization). Jotkin asiat käsitellään kurssilla eri tavalla kuin kirjassa. Kurssin esitietoina oletetaan lukuihin 1 (introduction), 2 (relational databases), 3 (SQL) ja 11 (storage and file structure) sekä luvun 4 kohtiin 4.1 (SQL data types and schemas) ja 4.2 (integrity constraints) sisältyvät asiat.

Kurssilla käsiteltäviin asioihin voi perehtyä myös monen muun oppikirjan avulla, joista mainitsemme erityisesti seuraavat:

H. Mannila & K.-J. Räihä: The Design of Relational Databases. Addison-Wesley Publishing Company, 1992. Kirja on perusteellinen ja syvällinen esitys relaatiotietokannan käsite- ja loogisesta suunnittelusta.

R. Ramakrishnan & J. Gehrke: Database Management Systems. Third Edition. McGraw-Hill, 2003. Kurssin sisällön kattavat pääosin luvut 2 (introduction to database design), 3 (the relational model), 8 (overview of storage and indexing), 12 (overview of query evaluation) ja 19 (schema refinement and normal forms).

M. Kifer, A. Bernstein & P. M. Lewis: Database Systems: An Application-Oriented Approach, Complete Version, 2nd Edition. Pearson Addison-Wesley, 2005. Kurssin sisällön kattavat pääosin luvut 4 (conceptual modeling of databases with entity-relationship diagrams and the unified modeling language), 6 (database design with the relational normalization theory), 9 (physical data organization and indexing), 10 (the basics of query processing) ja 11 (an overview of query optimization).