Avaimet, tietotyypit, kardinaalisuudet - Demo 2

Luentotaltiointi

Ongelmia videon katselussa?

Tee ensin edellisistä demoista reseptitietokantaosuus valmiiksi. Jalkapalloturnaukseen liittyviä tehtäviä ei tarvitse välttämättä tehdä.

Tällä demokerralla jatketaan edellisellä kerralla aloitettujen ER-kaavioiden parissa. Nyt merkitään kaavioihin perusavaimet, ominaisuuksien tietotyypit ja määritellään kohteiden väliset kardinaalisuudet.

Kardinaalisuudet

Kardinaalisuus kertoo, kuinka moneen suhteeseen kohde voi tai tulee osallistumaan. Vaihtoehdot ovat:

Tietokantamme kardinaalisuudet muodostuvat seuraavasti:

Tehtävät

  1. Käynnistä Erkka valinnalla Start | All Programs | Erkka.
  2. Avaa edellisellä kerralla tallentamasi ER-kaavio opiskelijarekisteri.erkka
  3. Piirrä opiskelijatietokantakaavioon kardinaalisuudet ER-kaavioon merkitsemällä jokaisen suhteen ja kohteen väliin 1 tai M suhteen kardinaalisuudesta riippuen. Kardinaalisuuksia pääset Erkassa muuttamaan napauttamalla suhteen ja kohteen välisen viivan keskipistettä.

Avaimet

Ominaisuuksien joukosta pitää valita avaimet eli ne ominaisuudet, jotka yksilöivät kunkin kohteen. Yksilöimiseen voi riittää yksi ominaisuus tai voi joutua tekemään yhdistetyn avaimen useammasta ominaisuudesta.

Joidenkin kohteiden tai ominaisuuksia sisältävien suhteiden yksilöimiseen eivät aina välttämättä riitä niiden omat ominaisuudet vaan mukaan on otettava niihin liittyviä kohteita. Opiskelijatietokannassa on seuraavat avainehdokkaat (joissain useampi vaihtoehtoja):

Avainehdokkaiden joukosta valitaan parhaiten sopiva yksilöiväksi avaimeksi. Paras avain on yleensä kooltaan pienin ja varmimmin uniikkina pysyvä. Joskus kannattaa tietokannan toiminnan tehostamiseksi luoda uusi ominaisuus, joka toimii pelkästään avaimena.

Tehtäviä

  1. Merkitse avaimet ER-kaavioon valitsemalla ominaisuus ja ruksaamalla Primary key -valinta. Erkka ei mitenkään erityisesti korosta avainkenttiä, mutta muilla työkaluilla avainkentät voidaan näyttää alleviivattuina ohjeisen kuvan mukaisesti.

    Avain

Tietotyypit

Jokaiselle ominaisuudelle pitää määrittää tietotyyppi. Tietotyyppiä valittaessa pitää usein määritellä myös tietoa varten varattava tila. Tilanvarausta miettiessä pitää olla erityisen tarkka, koska mikään ei ole ärsyttävämpää, kuin esim. sukunimi-kenttä johon ei mahdu kirjoittamaan pitkää sukunimeään.

Tietotyyppi voi olla:

Tehtäviä

  1. Avaa viime demossa tallentamasi Excel-taulukko, jossa on ominaisuuksiin liittyviä rajoitteita. Taulukosta voi olla hyötyä tietotyyppien määrittämisessä.
  2. Valitse Erkassa jokainen ominaisuus vuorollaan ja valitse alasvetovalikosta jokaiseen ominaisuuteen parhaiten sopiva tietotyyppi. Itsekeksityt perusavaimet (ID-kentät) kannattaa yleensä määritellä kokonaisluvuiksi (INTEGER).
  3. Jos valitse tietotyypiksi NUMERIC, CHAR tai VARCHAR niin merkitse lisäkenttään tietotyyppiin liittyvä rajoite.
    • NUMERIC => numeroiden kokonaismäärä, desimaalien määrä
    • CHAR => merkkien kiinteä määrä
    • VARCHAR => merkkien maksimimäärä
    • Huom. Microsoft Access ei hyväksy Erkan avulla luodun tietokannan CHAR/VARCHAR -kenttiin suurempaa kokoa kuin 255. Ongelman voi kiertää muuttamalla kentän kokoa myöhemmin suoraan Accessilla.
  4. Merkitse samalla myös kenttien pakollisuudet jos et niitä vielä ole merkinnyt. Pakolliset kentät merkitään valinnalla NOT NULL, ei-pakolliset valinnalla NULL. Kenttiin, joihin voi keksiä oletusarvon, kannattaa valita DEFAULT-arvo. Arvon voit syöttää VALUE-kenttään.
  5. Pyydä ohjaajaa tarkistamaan määrittelysi.
  6. Tallenna ER-kaaviosi U:-asemalle tiedonhallinta-hakemistoon nimellä opiskelijarekisteri.erkka.

Tietokannan luominen

  1. Varmista että ER-kaaviossasi ei ole missään kohdassa käytetty skandinaavisia merkkejä (å,ä tai ö).
  2. Valitse Erkasta Query-välilehti. Jos kaikki on kunnossa niin Erkka tekee tietokannan luomiseen tarvittavat SQL-lauseet. Jos SQL-lauseiden tekeminen ei onnistu niin palaa ER-kaaviovälilehdelle ja varmista että kaikki kardinaalisuudet ovat paikoillaan ja jokaisella kohteella on määriteltynä perusavain (primary key). Kokeile sitten taas uudelleen Query-välilehteä. F5-näppäimellä saat päivitettyä SQL-näkymän.

    Jos saat virheilmoituksen jossa valitetaan temp.tmp-tiedostosta niin Erkka ei jostain syystä onnistu luomaan tarvitsemaansa väliaikaistiedostoa. Jos olet yliopiston koneella voit kiertää ongelman kopioimalla c:\program files\Erkka -kansion omalle U:-levyllesi ja käynnistämällä Erkan tästä kansiosta (Erkka.jar).

  3. Voit tarkistella ja järjestellä tietokantasi relaatiokuvaa Relation-välilehdellä.
  4. Tässä vaiheessa täytyy luoda uusi tietokanta johon voimme luoda Erkalla määritellyt relaatiot
    • Käynnistä Microsoft Access (Start|Programs|Microsoft Office|Microsoft Office Access 2007)
    • Valitse File|New
    • Valitse oikean laidan palkista Blank database
    • Valitse tietokannan tallennuspaikaksi C:\Mytemp ja nimeksi opiskelijarekisteri.mdb. Accessin tietoturvarajoituksista johtuen tietokantaa ei voida käyttää verkkolevyltä (U-asema). Käyttäessäsi 2010 versiota MDB-tiedostotyypin saat Save and Publishin kautta File-valikossa valiten Access 2002 - 2003 Database (*.mdb).
    • Sulje tietokanta hetkeksi, mutta älä sulje Accessia. Palaa takaisin Erkka-ohjelmaan.
  5. Siirry Erkka-ohjelmassa Query-välilehdelle.
  6. Valitse File | Open Database.
  7. Etsi C:\MyTemp-kansiosta edellä luomasi opiskelijarekisteri.mdb-tiedosto.

    Jos saat kummallisen jet.dsn-aiheeseen liittyvän virheilmoituksen niin varmista, että Access on suljettuna ja yritä uudelleen.

  8. Nyt voit avata tietokannan takaisin auki Accessiin. Yleensä sulkemista ei tarvitse tehdä, ongelma lienee Access-tietokantaajureissa tai Erkassa.
  9. Nyt sinulla on yhteys tietokantaan ja voidaan luoda tietokantaan suunnittelemamme relaatiot (taulut).
  10. Valitse Execute
  11. Results-paneeliin pitäisi ilmestyä tiedot SQL-lauseiden suorittamisesta ja myös mahdolliset virheet

    SQL-virheet tietokannan luomisessa

    • Aina ensimmäisenä suorita SQL-lauseesi kahteen (2) kertaan. Jos toisenkin suorituskerran jälkeen tulee vielä virheilmoituksia niin tutki sitten tarkemmin seuraavia vinkkejä.
    • Älä pelästy vaikka ensimmäiset rivit ilmoittavatkin virheistä seuraavaan tapaan:
      Error in query DROP TABLE tarvii :
      [Microsoft][ODBC Microsoft Access Driver] Table 'tarvii' does not exist.
      
      Ensimmäiseksi yritetään poistaa jo olemassaolevia tauluja eikä niitä tietenkään tässä vaiheessa vielä löydy. DROP TABLE -komentoihin liittyvistä virheilmoituksista ei siis tarvitse välittää
    • Älä saa paniikkia virheiden määrästä vaan korjaa virheet yksi kerrallaan Aloittaen ensimmäisestä virheestä (poislukien edellämainitut DROP TABLE -virheet). Aina yhden virheen korjaamisen jälkeen päivitä SQL-lauseet (F5) ja kokeile suorittaa (execute) ne uudelleen. Yksi virhe voi aiheuttaa monta muuta ja samoin yhden virheen korjaaminen voi korjata samantien kaikki.
    • Jos ongelmana on
      Error in query CREATE: Syntax error in field definition.
      niin tarkista, että minkään kentän tietotyyppinä ei lue sana error. Jos löydät tälläisen kentän niin käy er-kaaviossa muuttamassa kentän tyyppiä, klikkaa välillä piirtoaluetta ja muuta tyypiksi oikea. Virhe johtuu Erkassa olevasta bugista jota ei ole vielä saatu korjattua.

      Toinen vaihtoehto tälle virheelle on luultavasti ongelma length- tai value-kentän arvoissa (liittyvät NUMERIC- tai DEFAULT-valintoihin).

    • Jos saat virheen muotoa:
      Error in query CREATE Table foo :
      [Microsoft][ODBC Microsoft Access Driver] Size of field 'testi' is too long.

      Tarkista, että et ole määrittänyt ominaisuuden pituudeksi yli 255 merkkiä. Jos oikeasti tarvitset tätä enemmän tilaa (esim. reseptin ohjerivi voi helposti olla pitempi) niin joudut myöhemmin muuttamaan kentän ominaisuuksia Accessin kautta. Tähän palataan myöhemmissä demoissa.

    • Jos Results-paneeliin tulee valitus
      Error in query CREATE: Cannot find table or constraint.
      niin tällöin Erkka on luonut SQL-lauseet väärän järjestykseen. Järjestä leikepöydän avulla CREATE TABLE-käskyt niin että viitteet toisiin tauluihin menevät oikein.
      • Esimerkiksi Laitos-taulu pitää olla Tiedekunnan jälkeen (Tiedekunnasta viittaus Laitokseen), mutta ennen Opiskelijaa (Opiskelijasta viittaus laitokseen).
  12. Siirry Microsoft Accessiin ja tarkista mitä näkyy Tables-välilehdellä. Saat päivitettyä välilehden sisällön F5-näppäimellä. Jos kaikki meni oikein niin listassa pitäisi näkyä Kurssi, Laitos, Opiskelija, Tenttii ja Tiedekunta.
  13. Jos jokin tauluista ei ilmestynyt Accessiin niin tarkista SQL-lauseiden oikeellisuus yhdessä demo-ohjaajan kanssa ja yritä sen jälkeen uudelleen Execute-painiketta..
  14. Valitse Accessissa Tools | Relationships. Järjestele taulut parempaan järjestykseen. Vertaa Accessin relaatiokuvaa Erkan Relation-välilehden kuvaan ja katso, että ne ovat samansisältöisiä.
  15. Sulje Relationships-ikkuna ja tallenna siihen tehdyt muutokset. Kopioi opiskelijarekisteri.mdb C:\Mytemp-hakemistosta U:\tiedonhallinta-hakemistoon.

Reseptitietokanta

  1. Tee opiskelijatietokannan tapaan kardinaalisuuksien, perusavainten ja tietotyyppien määrittely edellisissä demoissa aloittamallesi reseptitietokannalle.
  2. Pyydä ohjaajaa tarkistamaan määrittelysi.
  3. Tee Accessilla resepti.mdb ja luo tähän tiedostoon tietokantasi taulut SQL-lauseilla opiskelijatietokannan tapaan.

Jalkapalloturnaus

  1. Jos sinulle jäi vielä aikaa niin tee kardinaalisuuksien, perusavainten ja tietotyyppien määrittely myös jalkapalloturnausta käsittelevään ER-kaavioon.
  2. Luo myös jalkapallotietokanta Accessiin.

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/demot/demo2/
© Antti Ekonoja (antti.j.ekonoja@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
2012-11-27 13:17:06
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta