Muutettu 23.2.1998
Antti Koivisto



Relaatiotietokannan visualisoija - Määrittelydokumentti


1 Johdanto

1.1 Tausta ja tarkoitus

Hytky (Helsingin yliopiston tietojärjestelmien kehitysympäristö) on Tietojenkäsittelytieteen laitoksella käytössä oleva ohjelmistotuotannon apuvälineitä sisältävä ohjelmistokokonaisuus, joka on ensisijaisesti tarkoitettu ohjelmistotuotannon menetelmien opetuksen tueksi. Hytky-kokonaisuuteen sisältyvät MS-DOS-ympäristössä toimivat ohjelmat, joilla tuotetaan mm. tietovuokaavioita ja käsitemalleja. Tämän lisäksi käsitemalleja voidaan muokata edelleen relaatiotietokannan määrittelyiksi. Hytkyyn kuuluu myös relaatiotietokantojen visualisoija, joka muodostaa graafisen kaavioesityksen lukemistaan SQL-tietokannanmäärittelylauseista.

Kehitettävä relaatiotietokantojen visualisoija vastaa toiminnoiltaan pääosin Hytkyn visualisoijaa. Hytky on toteutettu DOS-ympäristöön, eikä se kaikin osin toimi kovin hyvin moderneissa tietokoneissa. Ongelmia on esimerkiksi hiiren käsittelyssä. Hytkyn tuottamat kaaviot ovat joissain tilanteissa puuttellisia. Se ei myöskään osaa lukea kannanpäivityslauseita. Näistä Hytkyä vaivaavista ongelmista ja rajoitteista päästään kehitettävän järjestelmän myötä eroon.

1.2 Käsitteitä

HYTKY
Helsingin yliopiston tietojärjestelmien kehitysympäristö
JDK
Java Development Kit - Sun Microsystems:n Java kehitys- ja ajoympäristö.

2 Yleiskuvaus

2.1 Yleinen toiminta

Tarkoituksena on tuottaa graafisessa ympäristössä toimiva Hytkyn visualisoijan kaltainen järjestelmä. Kehitettävässä järjestelmässä pyritään ottamaan huomioon ja korjaamaan Hytkyssä olevat puutteet.

Kehitettävä järjestelmä esittää SQL-kielellä määritellyt taulut ja niiden väliset suhteet graafisessa muodossa. Järjestelmään luetuista SQL-lauseista jäsennetään kannan kuvaus, joka esitetään kaaviokuvana. Kaavion taulut sijoitellaan automaattisesti, mutta käyttäjä voi muokata halutessaan kuvaesitystä. Kustakin kaaviokuvan taulusta esitetään kaikki attribuutit ja avainsarakkeet, viiteavaimet esitetään taulujen välisinä viivoina. Kuvaesitys voidaan tallentaa levylle, ja se voidaan myös tulostaa.

Järjestelmä tulkitsee sekä SQL 92 -standardin [ISO92] että ainakin Oraclen murteen mukaisia relaatiotietokannan määrityslauseita.

Kaavioiden automaattinen sijoittelu toteutaan käyttäen STT-algoritmia [Kär92] tai vastaavaa. Sijoittelu toteutetaan siten, että se ottaa huomioon taulujen koon ja mahdolliset muut vaikuttavat tekijät. Sijoitteluarlgoritmi pyritään pitämään erossa muusta ohjelmakoodista siten, että sen uudelleenkäyttö muissa sovelluksissa onnistuu helposti.

2.2 Tuotteen pääasiallinen toimintaympäristö

Järjestelmä toimii Java 1.1 -yhteensopivassa virtuaalikoneessa. Ensisijainen kohdeympäristö on Win32-versio JDK 1.1.5:stä, mutta ohjelman tulee toimia kaikissa ympäristöissä, joille riittäväntasoinen virtuaalikone on saatavilla. Järjestelmää ei ole tarkoitettu käytettäväksi WWW-selaimesta käsin, se toimii itsenäisenä sovelluksena.

2.3 Tuotteen käyttäjäkunta

Kehitettävän järjestelmän käyttäjät ovat pääasiassa opiskelijoita, joten järjestelmää käytetään ainakin Informaatiojärjestelmien harjoitustyön yhteydessä. Periaatteessa järjestelmää voi käyttää kuka tahansa, joka tarvitsee kuvan tietokannan taulujen välisistä suhteista.


3 Käyttötapaukset

Tässä luvussa esitellään ohjelman toiminta käyttötapausten avulla. Käyttötapaukset on jaettu editorin käyttötapauksiin, joissa esitellään kaavioiden muokkaukseen liittyvät toiminnot, tiedosto-operaatioihin, joissa esitellään tiedostojen käsittely oheistoimintoineen, ja tulostukseen, jossa esitellään tulostusalueen valintaan ja tulostuksen käynnistämiseen liittyvät toiminnot.

3.1 Editori

Kaavioeditorissa katsellaan ja muokataan valitussa ikkunassa olevaa relaatiotietokantakaaviota. Editorissa voi olla useita ikkunoita auki samanaikaisesti. Sama kaavio voi näkyä useassa ikkunassa.

3.1.1 Tauluihin kohdistuvat toiminnot

Visualisoitavan tietokannan tauluille muodostetaan graafinen esitys. Käyttäjä voi järjestellä taulut näytölle haluamallaan tavalla.

Taulun valinta

Valinta tapahtuu siirtämällä kohdistin valittavan taulun päälle ja painamalla hiiren valintanäppäintä.

Uuden taulun valinta purkaa edellisen valinnan. Kun osoitetaan kohtaa, jossa ei ole valittavaa taulua, edellinen valinta purkautuu.

Usean taulun valinta

Uusia tauluja voidaan lisätä valintaan poistamatta aiemmin valittuja tauluja tekemällä uuden valinta CTRL-näppäin pohjassa.

Taulujoukon valinta

Joukko tauluja voidaan valita kerralla lassotoiminnolla.

Kaikkien taulujen valinta

Valintajoukkoon liitetään kaikki kaavion taulut.

Taulujoukon siirto

Valintajoukossa olevat taulut siirrettään uuteen paikkaan näytöllä.

Lisätietojen esittäminen taulusta

Taulusta esitetään sarakkeiden nimet, pituudet ja tietotyypit omassa ikkunassaan.

3.1.2 Viiteviivoihin kohdistuvat toiminnot

Viiteviivat ovat taulujen välisten viiteavainyhteyksien graafisia esityksiä.

Käännepisteen lisäys

Viiteviivaan lisätään käännepiste.

Käännepisteen poisto

Viiteviivasta poistetaan käännepiste.

Käännepisteen siirto

Käännepiste siirretään uuteen paikkaan näytöllä. Viivat, jotka kytkeytyvät siirrettävään käännepisteeseen, seuraavat mukana.

Viiteviivan suoristus

Viiteviivasta poistetaan kaikki käännepisteet.

3.1.3 Selaustoiminnot

Keskittäminen

Ikkuna-ala keskitetään käyttäjän valitseman taulun ympärille.

Lähentäminen/loitontaminen

Näkymä ikkunassa olevaan kaavioon siirretään lähemmäksi tai kauemmaksi. Kun näkymää siirretään kauemmaksi, näkyy kaaviosta suurempi osa kerrallaan.

Valittujen haku näkymään

Näkymä keskitetään valittujen taulujen kohdalle.

Taulun haku nimellä

Taulu haetaan näkymään nimen perusteella. Haussa voidaan käyttää jokerimerkkejä.

3.1.4 Kumoaminen ja palauttaminen

Muokkaustoimenpiteen kumoaminen (undo)

Peruuttaa edellisen käyttäjän suorittaman toimenpiteen. Seuraavat undo-komennot peruuttavat aikaisempia toimenpiteitä.

Kumoamisen palauttaminen (redo)

Edeltävällä undo:lla peruutettu toimenpide palautetaan. Seuraavat redo-komennot palauttavat aikaisempiin undo-komentoihin liittyviä toimenpiteitä. Redo voidaan suorittaa vain undo- tai redo-komentojen jälkeen.

3.2 Tiedosto-operaatiot

Järjestelmä käsittelee neljän tyyppisiä tiedostoja: omaa sisäistä tallennusformaattiaan (luku/kirjoitus), SQL-lausetiedostoja (luku/mahdollisesti kirjoitus), kuvatiedostoja (kirjoitus) ja HTML-avustustiedostoja (luku).

Uusi kaavio

Avataan uusi piirtoalue. Kaavionmäärityslauseet luetaan käyttäjän valitsemasta SQL- komentotiedostosta. Järjetelmä muodostaa SQL-lauseiden graafisen esityksen ja sijoittelee kaaviokuvan kohteet automaattisesti. Virheellisen tiedoston latauksessa vialliset kohdat voidaan ohittaa, jotta varsinaiset määrityslauseet saataisiin ladatuksi. Virheistä annetaan ilmoitus käyttäjälle.

Kaavion avaus

Käyttäjä valitsee kaaviotiedoston, josta kaavio ladataan. Kaavio piirretään näytölle päällimmäiseksi avautuvaan uuteen ikkunaan.

Kaavion sulkeminen

Jos kaavioon on tehty muutoksia viimeisimmän tallennuksen jälkeen, varmistetaan käyttäjältä haluaako hän tallentaa muutokset ennen kaavion sulkemista.

Kaavion tallennus

Jos kaaviolla ei ole vielä tiedostonimeä, toiminta on sama kuin käyttötapauksessa Kaavion tallennus nimellä. Muuten kaavio tallennetaan sillä tiedostonimellä, millä sitä viimeksi käsiteltiin. Tallennus tapahtuu käyttäen ohjelman omaa tiedostoformaattia.

Kaavion tallennus nimellä

Kaavio tallennetaan käyttäjän nimeämään tiedostoon käyttäen ohjelman omaa tiedostoformaattia.

Kaavionmäärityslauseiden täydentävä lataus

Kaavionmäärityslauseet luetaan käyttäjän valitsemasta SQL- komentotiedostosta. Uudet tiedot lisätään valittuun kaavioon. Lisätyt tiedot näkyvät kaaviossa erivärisenä, kunnes käyttäjä itse koskee niihin. Epäyhteensopivan tiedoston latauksessa vialliset kohdat voidaan ohittaa, jotta varsinaiset määrityslauseet saataisiin ladatuksi.

Tallennus kuvatiedostona

Valittu kaavio tallennetaan käyttäjän nimeämään tiedostoon jossain sopivassa yleisessä kuvamuodossa.

Relaatioiden luontikomentojen tallennus

Valitusta kaaviosta tallennetaan SQL-92 -standardin [ISO92] mukaiset relaatioiden luontikomennot tiedostoon.

Avusteen näyttäminen

Käyttäjä saa selattavakseen järjestelmän käyttöohjeen.

Ohjelman toiminnan lopettaminen

Ohjelman toimintaa lopetettaessa järjestelmä tallentaa tarvittaessa avoimena olevan kaaviokuvan.

3.3 Tulostaminen

Relaatiokaavio tai relaatiokaavion osa voidaan tulostaa paperille.

Tulostimen valinta

Käyttäjä valitsee laitteen, jolle kaavio tulostetaan.

Arkin koon ja orientaation valinta

Käyttäjä voi valita arkin koon sekä pysty- tai vaakasuunnan tulostettaville arkeille.

Asettelun tarkistaminen

Ennen tulostusta näytölle ilmestyy ikkuna, josta käyttäjä näkee, millaisena kaavio on tulostumassa valitulle paperikoolle.

Jos tulostettava kaavio on suurempi kuin paperikoko, ikkuna on jaettu useammaksi ruuduksi, joista nähdään, kuinka monelle arkille kaavio on tulostumassa, ja miten taulut sijoittuvat arkeille.

Ikkunasta voidaan valita tulostettavaksi joko koko kaavio tai vain jokin tietty kaavion osa. Kaaviota on tarvittaessa mahdollista suurentaa tai pienentää.

Tulostaminen

Käyttäjä käynnistää tulostustyön aseteltuaan kaavion taulut sopivasti. Kaaviokuva tulostuu valitulle tulostuslaitteelle.


4 Järjestelmän ulkoiset liittymät

Tässä luvussa kuvataan järjestelmän liittymät ulkomaailmaan.

4.1 Käyttöliittymä

Järjestelmään toteutetaan ajanmukainen graafinen käyttöliittymä. Käyttöliittymä kehitetään käyttäen JFC 1.1-luokkakirjastoa (Swing).

4.1.1 Käyttöliittymän kieli

Käyttöliittymä on englanninkielinen.

4.1.2 Tyypillinen käyttökokonaisuus

  1. Käyttäjä muodostaa SQL-kannankuvauslauseista relaatiokaavion valitsemalla SQL-lauseet sisältävän ulkopuolisen tiedoston ja saa näytölle relaatiokaavion.

    Käyttäjä lukee erillisestä tiedostosta olemassa olevaan kaavioon lisää kannanpäivityslauseita, jolloin näytöllä näkyvä kaavio päivittyy.

  2. Käyttäjä tarkastelee olemassaolevaa kaaviota. Käyttäjä hakee haluamansa taulun taulun haku nimellä -toiminnolla ja sen jälkeen keskittää ikkunassa näkyvän alueen siten, että haettu taulu on työalueen keskellä. Käyttäjä siirtää tauluja tarkoituksenmukaiseen paikkaan ja siirtää myös viiteviivoja, jotta kaavio säilyy selkeänä. Viiteviivoja siirtäessään käyttäjä joutuu lisäämään niihin käännepisteitä tai suoristamaan viiteviivaa.

    Nähdäkseen kerralla koko kaavion käyttäjä loitontaa työalueella olevaa kaaviota niin, että koko relaatiokaavio mahtuu ikkunaan.

  3. Käyttäjä tulostaa relaatiokaavion tai sen osan. Käyttäjä valitsee haluamansa alueen kaaviosta tulostamista varten.

  4. Käyttäjä tallentaa kaavion, jotta sitä voitaisiin tarkastella myöhemminkin tarvitsematta generoida sitä uudelleen SQL-lauseista.

  5. Käyttäjä tallentaa kaavion kuvamuotoiseksi esim. tekstinkäsittelyohjelmaan siirtämistä varten.

  6. Kaavion tarkastelun jälkeen käyttäjä sulkee valitun kaavioikkunan.

  7. Käyttäjän poistuessa järjestelmästä avoimena olevat kaaviot tallennetaan tarvittaessa.

4.1.3 Esimerkkikuvia käyttöliittymästä

Kuva piirtoalueesta.

Kuva tauludialogista.

4.2 Laitteistoliittymät

Kaavio tulostetaan Javan tulostuspalveluita käyttäen. Tulostukselta vaadittavia toimintoja ovat printterin valinta, paperiarkin koon ja orientaation valinta, sekä tulostustyön käynnistäminen.

4.3 Syötteet ja tulosteet

Syötteenä on SQL-lauseita sisältävä ASCII-tekstitiedosto, jonka lauseista järjestelmä käsittelee vain kannankuvauslauseet. SQL-standardin mukaisten päivityslauseiden lisäksi järjestelmä ymmärtää myös ainakin Oraclen murreominaisuuksia.

Järjestelmän tulosteet ovat kaaviokuvia.


5 Tietokuvaus

Tässä luvussa kuvataan järjestelmän tietosisältö sekä esitetään tiedon sisäinen esitystapa alustavana luokkakaaviona.

5.1 Tietosisältö

Järjestelmä lukee tietokannan muodostavia SQL-lauseita ja muodostaa jäsentäjää käyttäen kantaa kuvaavan sisäisen esityksen. Sisäisessä esityksessä käytettävät luokat:

Tietokanta
Kuvaa useasta taulusta muodostuvaa tietokantaa. Ylläpitää koko kantaa koskevaa informaatiota.
Taulu
Kuvaa yhden tietokannan taulun.
Sarake
Kuvaa taulun sarakkeen.
Yhteys
Kuvaa taulujen välisen viiteyhteyden.

Lisäksi järjestelmä ylläpitää käyttäjälle näytettävään graafiseen esitykseen liittyvää informaatiota. Järjestelmä sisältää automaattisen sijoittelijan, joka luo alustavan graafisen esityksen tietokannalle. Esitys ylläpidetään seuraavien luokkien avulla:

Piirtoalue
Kuvaa piirtoaluetta, jolle tietokantaa kuvaavat graafiset komponentit sijoitellaan.
TauluLaatikko
Taulun graafinen esitys.
YhteysViiva
Yhteyden graafinen esitys.
Käännepiste
Kuvaa pistettä, jossa viivan suunta muuttuu.

5.2 Alustava luokkakaavio

Järjestelmän alustava luokkakaavio, joka kuvaa keskeisimpien luokkien väliset suhteet. Kaaviossa on käytetty UML-tekniikkaa.


6 Muut ominaisuudet

6.1 Suorituskyky

Ohjelman tulee toimia sujuvasti Intel Pentium prosessorilla tai vastaavalla varustetussa tietokoneessa. Sujuva toiminta tarkoittaa, ettei kuvaa muokattaessa esiinny häiritsevää välkkymistä tai viiveitä. Samoin kuvan muodostaminen ei saa kestää kohtuuttoman kauan. (tavoite vähintään 10 taulua/s pienillä kaavioilla)

Samanaikaisesti voidaan pitää useita erillisiä ikkunoita, joissa kussakin on erillinen relaatiokaavio.

6.2 Virheistä toipuminen

Ohjelma opastaa tarvittaessa käyttäjää sekä estää häntä tekemästä virheellisiä toimintoja. Kumoa-Palauta -toiminoilla käyttäjä voi perua tekemänsä kuvanmuokkauksen tai palauttaa tekemänsä perumisen.

6.3 Ylläpidettävyys

Projektissa tuotettavat dokumentit tallennetaan HTML-muodossa käyttäen yhteistä mallia. Lähdekoodit kirjoitetaan yhteisen tyylioppaan mukaisesti. Dokumentit ja lähdekoodit tallennetaan projektin kotihakemistoon, josta ne ovat tarvittaessa helposti saatavissa. Dokumentit sijaitsevat hakemistossa /home/group/jasso/public_html ja lähdekoodit hakemistossa /home/group/jasso/k98/src.


7 Testaus

Tuote testataan ja testitulokset raportoidaan käyttötapauksittain. Testituloksissa on käyttötapausten toimivuuden lisäksi osoitettava, että suorituskykyvaatimukset toteutuvat.

Asiakas toimittaa testiaineistoksi mm. yli sata taulua sisältävän relaatiokannan sekä Tietojenkäsittelytieteen laitoksen kirjastojärjestelmän tietokannan. Pääosin testaus tehdään kuitenkin pienemmillä aineistoilla.


8 Rajoitteet suunnittelulle ja toteutukselle

8.1 Noudatettavat standardit

Lähdekoodissa käytetään Java 1.1:ssä määriteltyjä ominaisuuksia. Lähdekoodi kommentoidaan siten, että siitä voidaan generoida javadoc-dokumentaatio.

Järjestelmän avustustoiminnon näyttämät ohjeet ovat tallennettu HTML-muodossa.

Järjestelmään luettava syöteaineisto noudattelee SQL-standardia [ISO92], mutta järjestelmän on kyettävä tunnistamaan myös ainakin Oraclen murretta.

8.2 Ohjelmistorajoitteet

Järjestelmän toteutuksessa ei pyritä yhteensopivuuteen vanhan Hytky:n visualisoijan kanssa.

Järjestelmä on ympäristöriippumaton, kunhan Java 1.1:stä on olemassa standardinmukainen toteutus ympäristölle.

8.3 Laitteistorajoitteet

Laitteistorajoitukset muodostuvat eri ympäristöjen Java-toteutusten mahdollisesti aiheuttamista rajoituksista. Nämä eivät ole projektiryhmän hallittavissa.



Lähteet

Kär92
Kärhä, Heli: Relaatiotietokannan visualisointi. (Raportti C-1992-21 Helsingin yliopisto, tietojenkäsittelyopin laitos.)
ISO92
ISO/IEC 9075: 1992: Information technology - Database languages - SQL


Liitteet

Erikoistapausten visualisointi