Relaatiotietokannat - Luento 6

Tutustutaan relaatiotietokantojen peruskäsitteisiin sekä ER-kaavioiden muuntamiseen relaatiotietokannaksi.

Luentotaltiointi

Ongelmia videon katselussa?

Kertaus

Tietokantasuunnitelma suutarin töiden organisointiin

Esimerkissä hinta-tieto olisi voinut olla myös kuhunkin tavaraan liittyvä tieto, jolloin saataisiin tehtyä helpommin tehtyä arvioita siitä mikä on tuottavin tavaratyyppi. Tavarassa ja työssä voisi olla myös kiinteästi myös jokin nimeävä ominaisuus (esim. tavaran nimi, tavaran merkki, työn nimi), jos suutari pystyisi jokaiselle tavaralle/työlle keksimään tällaisen tallennettavan tiedon.

Relaatiotietokannat

Esimerkki

Henkilo
HetuEtunimiSukunimi
111111-1234JukkaMäntylä
222222-2345TommiLahtonen
121212-5678PetriHeinonen
Kirja
ISBNNimi
1111111234Taru sormusten herrasta
2222222345Harry Potter and the Half-Blood Prince
1212125678SQL-Toolkit

Taulut (tables)

Taulun nimeksi kannattaa valita jokin selkeä ja kuvaava nimi. Nimessä kannattaa kuitenkin välttää välilyöntejä, erikoismerkkejä ja skandinaavisia merkkejä (å,ä,ö).

Jokainen taulu sisältää yhden tai useamman kentän

Kentät (fields)

Kenttiä luotaessa niille määritellään seuraavanlaisia ominaisuuksia:

Standardoidut tietotyypit

Seuraavassa luetellaan tärkeimmät standardoidut tietotyypit.

CHAR [(pit)]
Kiinteänmittainen merkkijono. Oletuspituus on 1.
  • Hetu: CHAR(11)
  • Postinumero: CHAR(5)
VARCHAR [(pit)]
Vaihtuvanmittainen merkkijono jolle määritetään maksimipituus
  • Etunimi: VARCHAR(30)
  • Sukunimi: VARCHAR(100)
NUMERIC [(pit., [desim.osa])]
Tarkka numeerinen arvo, jonka maksimipituus on pit numeroa ja desim.osa kuvaa desimaaliosan pituutta.
  • Paino: NUMERIC(4,1) eli enintään neljä numeroa joista yksi on varattu desimaaliosalle
INTEGER
Kokonaisluku, jolla on käyttöympäristöstä riippuva maksimikoko
  • Lukumaara: INTEGER
DATE
Vuosi (0001 - 9999), kuukausi ja päivä.
  • Syntymaaika: DATE
TIME
tunti, minuutti ja sekunti.
  • Kellonaika: TIME
INTERVAL [(mittayksikkö)]
ajanväli, kulunut aika
  • Juoksuaika: INTERVAL HOUR TO MINUTE
TIMESTAMP
Vuosi, kuukausi, päivä, sekä tunti, minuutti ja sekunti.
  • Lahetysaika (esim. sähköposti): TIMESTAMP

Avaimet (keys, indexes)

Esimerkki tällaisiin tauluun syötetyistä tiedoista:

Henkilo
HetuEtunimiSukunimi
111111-1234JukkaMäntylä
222222-2345TommiLahtonen
121212-5678PetriHeinonen
Puhelinnumero
SuuntanroNumeroHetu
0142602746111111-1234
0401575923111111-1234
0459987183222222-2345

Viite-eheys (Referential Integrity)

ER-kaavion muuntaminen relaatioiksi

  1. Jokainen tavallinen kohde muutetaan relaatioksi (tauluksi)
  2. Jokainen ER-diagrammista löytyvä ominaisuus lisätään siihen liittyvään relaatioon
  3. Jokainen Many-to-Many -suhde muutetaan tavalliseksi relaatioksi.
    • Määritellään relaatioon yhtä monta viiteavainta (foreign key) kuin on suhteeseen liittyviä kohteita
    • määritellään perusavaimeksi viiteavaimista tehty yhdistetty avain
    • lisätään relaatioon siihen liittyvät muut kentät.
  4. Many-to-One -suhteet
    • Ei luoda uusia relaatioita mutta lisätään ennestään olevaan relaatioon uusi viiteavain. Lisäys tapahtuu kohteeseen, jonka puolella on Many-merkintä.
    • Suhteeseen liittyneet ominaisuudet lisätään ennestään olevaan relaatioon

mallitietokannan er-kaavio

mallitietokannan relaatiot

Harjoitustyö

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/tiedonhallinta/luennot/luento6/
© Jukka Mäntylä (jmantyla@mit.jyu.fi) <http://www.iki.fi/jmantyla/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
Antti Ekonoja (anjoekon@jyu.fi) <http://users.jyu.fi/~anjoekon/>
2007-02-06 12:44:13