ÁLGU-TIETOKANTATIETOKANNAN DOKUMENTAATIO







Sisältö

1. Johdanto
1. Unicode
2. Taulut
2.1. Yleistä
2.2. Tauluesittelyt
3. Tietokannan rakenne





1. JOHDANTO

Tämä dokumentti käsittelee ÁLGU-tietokantajärjestelmän varsinaista tietokantaa. Dokumentissa selostetaan tietokannan suunnitteluperiaatteet, rakenne ja esitellään tietokantataulut.

Tietokanta on toteutettu SQL-pohjaisena MySQL-tietokantaohjelmistolla. Tietokanta on suunniteltu relaatiotietokannan periaatteiden mukaisesti. Eli eri tauluissa oleva tieto liittyy toisiinsa ja eri tietoja talletetaan vain silloin kun on tarkoitus, jolloin ei turhaan pidetä yllä ns. tyhjää tietoa.



1.1. UNICODE

Käytössä oleva MySQL:n versio on 5.0. Se tukee Unicode-standardin mukaista UTF-8 -koodausta. Unicode-tuki ei kuitenkaan ole täydellinen. MySQL ei tällä hetkellä tue Unicoden normalisointia. Tästä syystä tietokantaan tallennettu tekstidata normalisoidaan NFD-muotoon ennen tietokantaan tallentamista, jolloin normalisointiongelmasta päästään suurilta osin eroon. On kuitenkin huomioitava, että esim. vertailuja varten kaikki syötteet on aina ensin normalisoitava tai muuten vertailut eivät toimi.



2. TAULUT

2.1. YLEISTÄ

Yleistä tietoa tässä kappaleessa esiteltävistä tietokanan tauluista:

  • Tietokantatauluista esitetään attribuuttien määritykset SQL:n CREATE TABLE -lauseina.
  • Lekseemien tauluissa lekseemi_id-attribuutti viittaa lekseemi-taulun vastaavan id:n mukaiseen riviin riviin. Erillinen tieto liittyy siis näin tiettyyn lekseemiin.
  • Sanueiden tauluissa sanue_id-attribuutti viittaa sanue-taulun vastaavan id:n mukaiseen riviin riviin. Erillinen tieto liittyy siis näin tiettyyn sanueeseen.
  • Taulujen indekseinä (ja osittain muina tietoina) käytettävät INT-arvoiset attribuuteille on asetettu UNSIGNED-määre, joka poistaa käytöstä negatiiviset arvot siirtämällä tämän joukon verran arvoja positiiviselle puolelle. Eli positiivisten arvojen määrä tuplaantuu. Näin saadaan enemmän arvoja käyttöön, koska negatiivisia arvoja ei käytetä koskaan.
  • Kaikissa tauluissa indeksinä käytettävä attribuuteille on lisäksi asetettu AUTO_INCREMENT-määre, joka yksikäsitteistää jokaisen taulun rivin kasvattamalla ko. sarakkeen arvoa aina yhdellä edellisestä. Tällaiselle sarakkeelle on annettava INSERT-komennossa arvoksi 0 tai jättää ko. sarake kokonaan syöttämättä, jotta tietokannan oma seuraavaksi suurin luku asettuu.



2.2. TAULUESITTELYT

KIELI-taulu

Kieli-taulu esittää kieliä, joihin voi kuulua lekseemejä ja sanueita.

CREATE TABLE kieli (
        id              INT NOT NULL AUTO_INCREMENT,
        jarjestys       INT NOT NULL,
        nimi            VARCHAR(100) CHARACTER SET utf8 NOT NULL,
        lyhenne         VARCHAR(20) CHARACTER SET utf8 NOT NULL,
        kieliryhma      INT NOT NULL,
        valintaryhma    INT NOT NULL,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Kielen yksikäsitteistävä id-numero.

jarjestys INT NOT NULL
Kielen järjestysnumero kieliryhmän sisällä.

nimi VARCHAR(100) NOT NULL
Kielen nimi.

kieliryhma INT NOT NULL
0 = jos kyseessä normaali kieli, 1 = jos kyseessä kieliryhmä

valintaryhma INT NOT NULL
Kielivalintaryhmä, johon ko. kieli kuuluu. Järjestelmän kielivalikon valinnaiset kielet esitetään sen mukaan mikä kielivalintaryhmä on valittu. Tämä liittyy kielivalintaryhma-tauluun.

Kieli-taulu esittää kieliä, joihin voi kuulua lekseemejä ja sanueita.



KIELIVALINTARYHMA-taulu

CREATE TABLE kielivalintaryhma (
        id              INT NOT NULL,
        jarjestys       INT NOT NULL,
        nimi            VARCHAR(100) CHARACTER SET utf8 NOT NULL,
        kielijoukko     INT NOT NULL,
        PRIMARY KEY(id));

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Kielivalintaryhmän yksikäsitteistävä id-numero.

jarjestys INT NOT NULL
Kielivalintaryhmän järjestysnumero kielijoukon sisällä..

nimi VARCHAR(100) CHARACTER SET utf8 NOT NULL
Kieli-taulun kielen id, johon ko. lekseemi kuuluu.

kielijoukko INT NOT NULL
Kielijoukko, johon kielivalintaryhmä kuuluu. 1 = ieur, 2 = ural, 3 = muu.

Kielivalintaryhmät, joihin varsinaiset kielet (kieli-taulu) kuuluvat. Käytetään mm. muodostamaan hakutoiminnon kielivalikot.



LEKSEEMI-taulu

CREATE TABLE lekseemi (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        kieli_id        INT UNSIGNED NOT NULL,
        PRIMARY KEY (id),
        INDEX kieli_id_index (kieli_id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Lekseemin yksikäsitteistävä id-numero.

kieli_id INT UNSIGNED NOT NULL
Kieli-taulun kielen id, johon ko. lekseemi kuuluu.

Lekseemi-taulu on tietokannan ydin. Taulu määrittää lekseemin, sanan, johon voi kuulua lisää muuta tietoa muista tauluista id:n mukaan liitettynä. Lekseemi kuuluu aina johonkin kieleen. Muuta tietoa lekseemi ei yksistään oletusarvoisesti sisällä. Tämän katsottiin olevan järkevä ratkaisu, jotta lekseemiin voidaan tarvittaessa liittää vain ja ainoastaan tarvittavaa tietoa. Lekseemi koostuu kokonaisuudessaan tarkenteesta, ilmentymistä, merkityksistä, suhteista toisiin lekseemeihin ja ns. muusta tiedosta.



TARKENNE-taulu

CREATE TABLE tarkenne (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        tarkenne        VARCHAR(80) CHARACTER SET utf8,
        varmennettu     INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Tarkenteen yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon ko. tarkenne kuuluu.

tarkenne VARCHAR(80) CHARACTER SET utf8
Tarkenneteksti.

varmennettu INT
Tieto onko tarkenne varmennettu. 0 = ei, 1 = kyllä.

Tarkenteella lekseemin yhteyteen lisätään tarkempi tieto kieleen liittyen jos kyse on esim. jostain murteesta.



ILMENTYMA-taulu

CREATE TABLE ilmentyma (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        ortognro        INT NOT NULL,
        ilmentyma       VARCHAR(100) CHARACTER SET utf8,
        ilmentyma_p     VARCHAR(100) CHARACTER SET utf8
        homonyymi_id    INT,
        numero          VARCHAR(20) CHARACTER SET utf8,
        varmennettu     INT,
        aakk            INT UNSIGNED
        PRIMARY KEY (id),
        INDEX lid_index (lekseemi_id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Ilmentymän yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon ko. ilmentyma kuuluu.

ortognro INT NOT NULL
Ilmentymän ortografianumero. Ilmentymiä on sekä päälähteenmukaisia että lähteenmukaisia. Päälähteitä on enintään 3 kpl kieltä kohden ja kullekin päälähteelle on olemassa yksi päälähteen mukainen ilmentymä lekseemiä kohden. ortognro-attribuutin arvot 1, 2 ja 4 tarkoittavat päälähteen mukaista ilmentymää. Lisäksi lekseemillä voi olla useita lähteenmukaisia ilmentymiä, jotka esitetään ortognro-attribuutin arvolla 3. Epälooginen järjestys johtuu myöhemmin tehdystä kolmannen päälähteen lisäyksestä.

ilmentyma VARCHAR(100) CHARACTER SET utf8
Ilmentyma, eli sanan kirjoitusasu merkkijonona

ilmentyma_p VARCHAR(100) CHARACTER SET utf8
Ilmentyman pelkistetty muoto, jossa joitain merkkejä on poistettu.

homonyymi_id INT
Ilmentymän homonyymi-indeksi.

numero VARCHAR(20) CHARACTER SET utf8
Ilmentymän numeroarvoinen ilmentymä. Numeroarvoa voidaan käyttää joko varsinaisen ilmentymän sijaan tai myös sen rinnalla. Myös numeroarvolla haetaan ilmentymiä. Numeroarvo on merkkijono, koska se sisältää mahdollisesti pisteitä tai kaksoispisteitä.

varmennettu INT
Tieto onko ilmentyma varmennettu. 0 = ei, 1 = kyllä.

Ilmentyma-taululla esitetään lekseemien ortografioiden formatiivien ilmentymät.



MERKITYS-taulu

CREATE TABLE merkitys (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        ortognro        INT NOT NULL,
        kieli           VARCHAR(50) NOT NULL,
        merkitys        TEXT CHARACTER SET utf8 NOT NULL,
        varmennettu     INT,
        PRIMARY KEY (id),
        INDEX lid_index (lekseemi_id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Merkityksen yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon ko. merkitys kuuluu.

ortognro INT NOT NULL
Kuvaa mihin ortografiaan merkitys liittyy. Merkityksiä on sekä päälähteenmukaisia että lähteenmukaisia. Päälähteitä on 2 kpl kieltä kohden ja kullekin päälähteelle on olemassa yksi päälähteen mukainen merkitys lekseemiä kohden. ortognro-attribuutin arvot 1, 2 ja 4 tarkoittavat päälähteen mukaista ilmentymää. Lisäksi lekseemillä voi olla useita lähteenmukaisia merkityksiä, jotka esitetään ortognro-attribuutin arvolla 3. Epälooginen järjestys johtuu myöhemmin tehdystä kolmannen päälähteen lisäyksestä.

kieli VARCHAR(50) NOT NULL
Merkityksen kieli.

merkitys TEXT CHARACTER SET utf8 NOT NULL
Merkityks merkkijonona.

varmennettu INT
Onko merkitys varmennettu. 0 = ei, 1 = kyllä.

Merkitys esittää lekseemin sanallisen merkityksen. Merkityksen tietoihin kuuluu tieto kielestä, jolla se on esitetty. Merkityksiä voi kuulua lekseemin useita (ks ortognro-attribuutti).



SUHDE-taulu

CREATE TABLE suhde (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi1_id    INT UNSIGNED NOT NULL,
        suhdetyyppi     INT NOT NULL,
        lekseemi2_id    INT UNSIGNED NOT NULL,
        varmuusaste     INT NOT NULL,
        implisiittinen  INT NOT NULL,
        varmennettu     INT,
        PRIMARY KEY (id),
        INDEX st_index (suhdetyyppi));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT

lekseemi1_id INT UNSIGNED NOT NULL
Suhteen yhden pään lekseemin id. Ks lekseemi2_id.

suhdetyyppi INT NOT NULL
Suhdetyypin määrittelevä numero.

Suhdetyypit:

1 = vastinesuhde
2 = johtosuhde
3 = lainasuhde
5 = vertaussuhde
6 = kielteinen vastinesuhde
7 = kielteinen johtosuhde
8 = kieleinen lainasuhde
10 = kielteinen vertaussuhde

Tyypit 4 ja 9 puuttuvat, koska niillä aikanaan esitetty korrelaatiosuhde on poistettu käytöstä.

lekseemi2_id INT UNSIGNED NOT NULL
Suhteen yhden pään lekseemin id. Ks lekseemi1_id.

varmuusaste INT NOT NULL
Suhteen varmuusaste. 1 = varma, 2 = epävarma.

implisiittinen INT NOT NULL
Onko suhde implisiittinen, eli päätelty. 1 = on 0 = ei.
Suhteet (vastine- ja johtosuhteet) päätellään aina suhteen lisäyksen yhteydessä. Päätellyt suhteet tallennetaan kantaan, koska näin käyttöliittymästä saadaan nopeampi. Suhteiden päättely joka vaiheessa osoittautui turhan hitaaksi. Suhteen implisiittisyys voitaisiin selvittää myös lähdetiedoista (päätellyllä ei ole lähdettä), mutta tämäkin aiheuttaisi turhia tietokantaoperaatioita käyttöliittymässä

varmennettu INT
Onko suhde varmennettu. 0 = ei, 1 = kyllä.

Suhde on konkreettisesti suhde kahden eri lekseemin välillä. Se yhdistää kaksi lekseemiä attribuuttien lekseemi1_id ja lekseemi2_id mukaan suhdetyypin määrittelemään suhteeseen. Suhteet toimivat yleensä molemminsuuntaisesti lekseemien välillä.

Vastine- ja johtosuhteiden osalta järjestelmässä suoritetaan ko. suhteiden lisäyksen aikana päättelyä. Lekseemistä lähtevän suhdeverkon transitiivisuus selvitetään ja lisätään implisiittiset suhteet niiden lekseemien väliin, joista suhde transitiivisuuden mukaan puuttuu.



MUUTIETO-taulu

CREATE TABLE muutieto (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        tieto           VARCHAR(255) CHARACTER SET utf8,
        varmennettu     INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Muun tiedon yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon muu tieto liittyy.

tieto VARCHAR(255) CHARACTER SET utf8
Muun tiedon teksti merkkijonona.

varmennettu INT
Onko muu tieto varmennettu. 0 = ei, 1 = kyllä.

Muu tieto esittää lekseemin jotain muuta tietoa, jota ei muulla tavalla voida esittää.



SANUE-taulu

CREATE TABLE sanue (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        kieli_id        INT UNSIGNED NOT NULL,
        eduslekseemi    INT UNSIGNED NOT NULL,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Sanueen yksikäsitteistävä id.

kieli_id INT UNSIGNED NOT NULL
Sanueen kieli. Viittaa kieli-tauluun.

eduslekseemi INT UNSIGNED NOT NULL
Sanueen eduslekseemi, jonka mukaan sanueelle tulee ilmentymä. Viittaa lekseemi-tauluun.

Sanue on lekseemiin verrattava kokonaisuus. Taulu määrittää sanueen, johon voi kuulua lisää muuta tietoa muista tauluista id:n mukaan liitettynä. Sanue kuuluu aina johonkin kieleen. Muuta tietoa sanue ei yksistään oletusarvoisesti sisällä. Sanue koostuu kokonaisuudessaan tarkenteesta, ilmentymistä, merkityksistä, suhteista toisiin sanueisiin ja ns. muusta tiedosta.



SANUELIITOS-taulu

CREATE TABLE sanueliitos (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        sanue_id        INT UNSIGNED NOT NULL,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Sanueliitoksen id.

lekseemi_id INT UNSIGNED NOT NULL
Sanueeseen liittyvä lekseemi. Viittaa lekseemi-tauluun.

sanue_id INT UNSIGNED NOT NULL
Mihin sanueeseen lekseemi_id:n viittaama lekseemi kuuluu.

Taulu esittää sanueisiin kuuluvat lekseemit.



SANUE_ILMENTYMA-taulu

CREATE TABLE sanue_ilmentyma (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        sanue_id        INT UNSIGNED NOT NULL,
        ilmentyma       VARCHAR(255) CHARACTER SET utf8,
        varmennettu     INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Ilmentymän yksikäsitteistävä id-numero.

sanue_id INT UNSIGNED NOT NULL
Sanue id, johon ko. ilmentyma kuuluu. Viittaa sanue-tauluun.

ilmentyma VARCHAR(255) CHARACTER SET utf8
Ilmentyma, eli sanan kirjoitusasu merkkijonona

varmennettu INT
Tieto onko ilmentyma varmennettu. 0 = ei, 1 = kyllä.

Sanue_ilmentyma-taulussa esitetään sanueiden lähteenmukaiset ilmentymät.



SANUE_MERKITYS-taulu

CREATE TABLE sanue_merkitys (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        sanue_id        INT UNSIGNED NOT NULL,
        kieli           VARCHAR(50) NOT NULL,
        merkitys        TEXT CHARACTER SET utf8,
        toimittaja      INT,
        varmennettu     INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Merkityksen yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon ko. merkitys kuuluu.

ortognro INT NOT NULL
Kuvaa mihin ortografiaan merkitys liittyy. Merkityksiä on sekä päälähteenmukaisia että lähteenmukaisia. Päälähteitä on 2 kpl kieltä kohden ja kullekin päälähteelle on olemassa yksi päälähteen mukainen merkitys lekseemiä kohden. ortognro-attribuutin arvot 1 ja 2 tarkoittavat päälähteen mukaista merkitystä. Lisäksi lekseemillä voi olla useita lähteenmukaisia merkityksiä, jotka esitetään ortognro-attribuutin arvolla 3.

kieli VARCHAR(50) NOT NULL
Merkityksen kieli.

merkitys TEXT CHARACTER SET utf8
Merkityks merkkijonona.

varmennettu INT
Onko merkitys varmennettu. 0 = ei, 1 = kyllä.

Merkitys esittää sanueen sanallisen merkityksen. Merkityksen tietoihin kuuluu tieto kielestä, jolla se on esitetty.



SANUE_SUHDE-taulu

CREATE TABLE sanue_suhde (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        sanue1_id       INT UNSIGNED NOT NULL,
        suhdetyyppi     INT NOT NULL,
        sanue2_id       INT UNSIGNED NOT NULL,
        lainakieli      INT NOT NULL DEFAULT 0,
        varmuusaste     INT NOT NULL,
        implisiittinen  INT NOT NULL,
        varmennettu     INT,
        PRIMARY KEY (id),
        INDEX st_index (suhdetyyppi));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT

sanue1_id INT UNSIGNED NOT NULL
Suhteen yhden pään sanueen id. Ks sanue2_id.

suhdetyyppi INT NOT NULL
Suhdetyypin määrittelevä numero.

Suhdetyypit:

1 = vastinesuhde
3 = lainasuhde
5 = vertaussuhde
6 = kielteinen vastinesuhde
8 = kieleinen lainasuhde
10 = kielteinen vertaussuhde

Tyypit samat kuin lekseemin suhde-taulussa. Sanueilla ei käytössä johtosuhdetta.

sanue2_id INT UNSIGNED NOT NULL
Suhteen yhden pään sanueen id. Ks sanue1_id.

lainakieli INT NOT NULL DEFAULT 0
Lainasuhteen lainakieliryhmä.

varmuusaste INT NOT NULL
Suhteen varmuusaste. 1 = varma, 2 = epävarma.

implisiittinen INT NOT NULL
Onko suhde implisiittinen, eli päätelty. 1 = on 0 = ei.
Suhteet (vastine) päätellään aina suhteen lisäyksen yhteydessä. Päätellyt suhteet tallennetaan kantaan, koska näin käyttöliittymästä saadaan nopeampi. Suhteiden päättely joka vaiheessa osoittautui turhan hitaaksi. Suhteen implisiittisyys voitaisiin selvittää myös lähdetiedoista (päätellyllä ei ole lähdettä), mutta tämäkin aiheuttaisi turhia tietokantaoperaatioita käyttöliittymässä

varmennettu INT
Onko suhde varmennettu. 0 = ei, 1 = kyllä.

Suhde on konkreettisesti suhde kahden eri sanueen välillä. Se yhdistää kaksi sanuetta attribuuttien sanue1_id ja sanue2_id mukaan suhdetyypin määrittelemään suhteeseen. Suhteet toimivat yleensä molemminsuuntaisesti sanueiden välillä.

Vastinesuhteiden osalta järjestelmässä suoritetaan ko. suhteiden lisäyksen aikana päättelyä. Sanueesta lähtevän suhdeverkon transitiivisuus selvitetään ja lisätään implisiittiset suhteet niiden sanueiden väliin, joista suhde transitiivisuuden mukaan puuttuu.



LAINALAAJENNUS-taulu

CREATE TABLE lainalaajennus (
        suhde_id        INT UNSIGNED NOT NULL,
        sanue_id        INT UNSIGNED NOT NULL,
        PRIMARY KEY(suhde_id,sanue_id));

Attribuuttien selitys:

suhde_id INT UNSIGNED NOT NULL
Suhteen id-numero, jota lainalaajennus koskee.

sanue_id INT UNSIGNED NOT NULL
Sanueen id, jota lainalaajennus koskee.

Lainalaajennus-taulussa esitetään lainasuhteiden laajennukset, eli lainasuhteeseen lainatahoon liittyvät sanueet.



SANUE_MUUTIETO-taulu

CREATE TABLE sanue_muutieto (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        sanue_id        INT UNSIGNED NOT NULL,
        tieto           VARCHAR(255) CHARACTER SET utf8,
        varmennettu     INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Muun tiedon yksikäsitteistävä id-numero.

sanue_id INT UNSIGNED NOT NULL
Sanueen id, johon muu tieto liittyy. Viittaa sanue-tauluun.

tieto VARCHAR(255) CHARACTER SET utf8
Muun tiedon teksti merkkijonona.

varmennettu INT
Onko muu tieto varmennettu. 0 = ei, 1 = kyllä.

Muu tieto esittää sanueen jotain muuta tietoa, jota ei muulla tavalla voida esittää.



LAHDETIETO-taulu

CREATE TABLE lahdetieto (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        taulu           INT NOT NULL,
        taulu_id        INT UNSIGNED NOT NULL,
        lahde           INT UNSIGNED NOT NULL,
        sivunro         VARCHAR(20),
        PRIMARY KEY (id),
        INDEX t_index (taulu,taulu_id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Lähdetiedon yksikäsitteistävä id-numero.

Määrittelee taulun, johon lähdetieto liittyy.
0 = lekseemi
1 = ilmentyma
2 = merkitys
3 = suhde
4 = lisatieto
5 = lahde

taulu_id INT UNSIGNED NOT NULL
Taulu-attribuutin määrittelemän taulun id, johon lähdetieto liittyy.

lahde INT UNSIGNED NOT NULL
Lähdetiedon lähde, viite lahde-tauluun.

sivunro VARCHAR(15)
Lähdetiedon sivunumero merkkijonona. Voi olla tyhjä.

INDEX t_index (taulu,taulu_id)
Kahden avaimen indeksi, joka nopeuttaa taulusta hakuja etenkin varmennuksessa.

Lähdetieto yhdistää tiedon sisältävän taulun ja sen lähteen ja kertoo lähteen mahdollisen sivunumeron.



LAHDE-taulu

CREATE TABLE lahde (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        tekija_lyhenne  VARCHAR(80) CHARACTER SET utf8 NOT NULL,
        ilmestymisvuosi VARCHAR(20) CHARACTER SET utf8 NOT NULL,
        teoslyhenne     VARCHAR(30) CHARACTER SET utf8 NOT NULL,
        bibliotieto     INT,
        kayttajalahde   INT,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Lähdelyhenteen yksikäsitteistävä id-numero.

tekija_lyhenne VARCHAR(80) CHARACTER SET utf8 NOT NULL
Lähdelyhenteessä tekijän lyhenne.

ilmestymisvuosi VARCHAR(20) CHARACTER SET utf8 NOT NULL
Lähdelyhenteessä lähteen ilmestymisvuosi.

teoslyhenne VARCHAR(30) CHARACTER SET utf8 NOT NULL
Lähdelyhenteessä teoksen lyhenne.

bibliotieto INT
Kertoo mihin bibliografiatietoon lähdelyhenne liittyy.

kayttajalahde INT
Onko kyseessä käyttäjälähde. 0 = ei, 1 = kyllä.

Lahde-taulu kuvaa tietokannassa lähdelyhenteitä. Lyhenteet liittyvät bibliografian teoksiin ja niitä myös määritellään lähteiksi tietokantaan lisättäviin lähteenmukaisiin tietoihin.



KOMMENTTI

CREATE TABLE kommentti (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        lekseemi_id     INT UNSIGNED NOT NULL,
        kommentoija     VARCHAR(50) NOT NULL,
        aika            DATETIME NOT NULL,
        teksti          TEXT CHARACTER SET utf8,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Kommentin yksikäsitteistävä id-numero.

lekseemi_id INT UNSIGNED NOT NULL
Lekseemin id, johon kommentti liittyy.

kommentoija VARCHAR(50) NOT NULL
Kommentoija.

aika DATETIME NOT NULL
Aika, jolloin kommentti talletettiin.

teksti TEXT CHARACTER SET utf8
Kommentin teksti.

Kommentti-taulu sisältää lekseemeihin kuuluvia käyttäjien lisäämiä kommentteja.



TALLENNUS-taulu

CREATE TABLE tallennus (
        id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
        taulu           INT NOT NULL,
        taulu_id        INT UNSIGNED NOT NULL,
        tallentaja      INT UNSIGNED NOT NULL,
        aika            DATETIME NOT NULL,
        PRIMARY KEY (id),
        INDEX t_index (taulu,taulu_id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Tallennustiedon yksikäsitteistävä id-numero.

taulu INT NOT NULL
Taulu, johon tallennustieto liitty.
0 = lekseemi
1 = ilmentyma
2 = merkitys
3 = suhde
4 = lisatieto
5 = lahde
6 = tarkenne

taulu_id INT UNSIGNED NOT NULL
Taulu-attribuutin määrittelemän taulun id, johon tallennustieto liittyy.

tallentaja INT UNSIGNED NOT NULL
Tallentajan tunnus.

aika DATETIME NOT NULL
Aika, jolloin tieto tallennettin.

INDEX t_index (taulu,taulu_id)
Kahden avaimen indeksi, joka nopeuttaa hakuja.

Tallennus-tauluun kerätään tietokantaan talletettujen tietojen tallennusaikoja ja tallentajien nimiä. Taulun perusteella selvitetään mm. järjestelmän lekseemien varmennukseen liittyviä tietoja. Lisäksi saadaan tarvittaessa myös muuten selville kuka mitäkin tietoa on lisännyt/muokannut ja milloin.



KAYTTAJA-taulu

CREATE TABLE kayttaja (
        id                  INT UNSIGNED NOT NULL AUTO_INCREMENT,
        nimi                VARCHAR(50),
        tunnus              VARCHAR(30) NOT NULL,
        salasana            VARCHAR(30) NOT NULL,
        edellogin           DATETIME,
        syottoja            INT UNSIGNED DEFAULT 0,
        muutoksia           INT UNSIGNED DEFAULT 0,
        varmennuksia        INT UNSIGNED DEFAULT 0,
        attr_syottaja       INT,
        attr_varmentaja     INT,
        attr_korjaaja       INT,
        attr_yllapitaja     INT,
        attr_eikaytossa     INT,
        kattr_kaikkilahteet INT
        lahdelyhenne        VARCHAR(30)
        lahteet             VARCHAR(80),
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT UNSIGNED NOT NULL AUTO_INCREMENT
Käyttäjän yksikäsitteistävä id-numero.

nimi VARCHAR(50)
Käyttäjän koko nimi.

tunnus VARCHAR(30) NOT NULL
Käyttäjän tunnus.

salasana VARCHAR(30) NOT NULL
Käyttäjän salasana.

edellogin DATETIME
Edellisen järjestelmään kirjautumisen ajankohta.

syottoja INT UNSIGNED DEFAULT 0
Tehtyjen syöttöjen määrä.

muutoksia INT UNSIGNED DEFAULT 0
Tehtyjen muutosten määrä.

varmennuksia INT UNSIGNED DEFAULT 0
Tehtyjen varmennusten määrä.

attr_syottaja INT
Onko käyttäjä syöttäjä. 0 = ei, 1 = kyllä.

attr_varmentaja INT
Onko käyttäjä varmentaja. 0 = ei, 1 = kyllä.

attr_korjaaja INT
Onko käyttäjä korjaaja. 0 = ei, 1 = kyllä.

attr_yllapitaja INT
Onko käyttäjä ylläpitäjä. 0 = ei, 1 = kyllä.

attr_eikaytossa INT
Onko käyttäjätunnus käytössä. 0 = ei, 1 = kyllä.

kattr_kaikkilahteet INT
Onko käyttäjällä asetuksena näyttää lähteenmukaiset tiedot oletuksena tilassa "kaikki lähteet". 0 = ei, 1 = kyllä.

lahdelyhenne VARCHAR(30)
Käyttäjän lähdelyhenne. Käytetään kun käyttäjä lisää tietoja käyttäen itseään lähteenä.

lahteet VARCHAR(80)
Käyttäjän viimeksi käyttämien lähteiden id:t stringinä järjestyksessä pilkulla erotettuna.

Käyttäjä-taulu määrittää järjestelmän käyttäjät. Käyttäjille voidaan määritellä erilaisia oikeuksia attr_-alkuisten attribuuttien mukaan.



KAYTTAJA_STAT-taulu

CREATE TABLE kayttaja_stat (
        kayttaja        INT NOT NULL,
        vuosi           INT NOT NULL,
        syottoja        INT UNSIGNED DEFAULT 0,
        muutoksia       INT UNSIGNED DEFAULT 0,
        varmennuksia    INT UNSIGNED DEFAULT 0,
        PRIMARY KEY (kayttaja,vuosi));

Attribuuttien selitys:

kayttaja INT NOT NULL

Käyttäjän id, jolla tiedetään kenen tiedoista on kyse. Muodostaa taulun pääavaimen yhdessä vuosi-attribuutin kanssa.

vuosi INT NOT NULL

Minkä vuoden statistiikasta on kyse. Muodostaa taulun pääavaimen yhdessä kayttaja-attribuutin kanssa.

syottoja INT UNSIGNED DEFAULT 0

Käyttäjän tekemien syöttöjen yhteismäärä.

muutoksia INT UNSIGNED DEFAULT 0

Käyttäjän tekemien muutosten yhteismäärä.

varmennuksia INT UNSIGNED DEFAULT 0

Käyttäjän tekemien varmennusten yhteismäärä.

Käyttäjän vuosittaiset työskentelystatistiikat. Tietoja kerätään syötöistä, muutoksista ja varmennuksista.



BIBLIOGRAFIA-taulu

CREATE TABLE bibliografia (
        id              INT NOT NULL AUTO_INCREMENT,
        tyyppi          INT,
        vuosiluku       VARCHAR(20) CHARACTER SET utf8,
        teoksen_nimi    VARCHAR(255) CHARACTER SET utf8,
        ilmestymispaikka        VARCHAR(50) CHARACTER SET utf8,
        niteiden_maara  VARCHAR(10) CHARACTER SET utf8,
        sarjalyhenne    VARCHAR(20) CHARACTER SET utf8,
        sarjanide       VARCHAR(30) CHARACTER SET utf8,
        sarjasivut      VARCHAR(10) CHARACTER SET utf8,
        sijainti        VARCHAR(255) CHARACTER SET utf8,
        lisatieto       TEXT CHARACTER SET utf8,
        kommentti       TEXT CHARACTER SET utf8,
        PRIMARY KEY(id));

Bibliografian tiedot.

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Bibliografiatiedon yksikäsitteistävä id.

tyyppi INT
Bibliografiatiedon tyyppi: 1 = artikkeli/monografia, 2 = hakuteos/sanakirja, 3 = sarja

vuosiluku VARCHAR(20) CHARACTER SET utf8
Vuosiluku

teoksen_nimi VARCHAR(255) CHARACTER SET utf8
Teoksen nimi

ilmestymispaikka VARCHAR(50) CHARACTER SET utf8
Ilmestymispaikka

niteiden_maara VARCHAR(10) CHARACTER SET utf8
Niteiden määrä

sarjalyhenne VARCHAR(20) CHARACTER SET utf8
Sarjan lyhenne. Sarja ja muu bibliografiatieto yhdistetään samanlaisten lyhenteiden mukaan.

sarjanide VARCHAR(30) CHARACTER SET utf8
Sarjan nide

sarjasivut VARCHAR(10) CHARACTER SET utf8
Sarjan sivut

sijainti VARCHAR(255) CHARACTER SET utf8
Sijaintitieto

lisatieto TEXT CHARACTER SET utf8
Lisätietoja

kommentti TEXT CHARACTER SET utf8
Kommentteja



KIRJOITTAJA-taulu

CREATE TABLE kirjoittaja (
        id              INT NOT NULL AUTO_INCREMENT,
        nimi            VARCHAR(100) CHARACTER SET utf8,
        variantti1      VARCHAR(100) CHARACTER SET utf8,
        variantti2      VARCHAR(100) CHARACTER SET utf8,
        variantti3      VARCHAR(100) CHARACTER SET utf8,
        variantti4      VARCHAR(100) CHARACTER SET utf8,
        PRIMARY KEY (id));

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Kirjoittajan yksikäsitteistävä id.

nimi VARCHAR(100) CHARACTER SET utf8
Kirjoittajan ensisijainen nimi.

variantti1 VARCHAR(100) CHARACTER SET utf8
Kirjoittajan nimen vaihtoehtoinen esitysmuoto.

variantti2 VARCHAR(100) CHARACTER SET utf8
Kirjoittajan nimen vaihtoehtoinen esitysmuoto.

variantti3 VARCHAR(100) CHARACTER SET utf8
Kirjoittajan nimen vaihtoehtoinen esitysmuoto.

variantti4 VARCHAR(100) CHARACTER SET utf8
Kirjoittajan nimen vaihtoehtoinen esitysmuoto.

Bibliografian teosten kirjoittajia. Kullekin kirjoittajalle voidaan määritellä 5 nimen kirjoitusasua tai nimimuotoa.



KIRJOITTAJALIITOS-taulu

CREATE TABLE kirjoittajaliitos (
        id              INT NOT NULL AUTO_INCREMENT,
        kirjoittaja_id  INT,
        bibliografia_id INT,
        monesnimi       INT,
        PRIMARY KEY(id));

Attribuuttien selitys:

id INT NOT NULL AUTO_INCREMENT
Kirjoittajaliitoksen yksikäsitteistävä id.

kirjoittaja_id INT
Kirjoittajan id.

bibliografia_id INT
Bibliografiateoksen id.

monesnimi INT
Kuinka monetta nimimuotoa käytetään ko. teokselle.

Taulu liittää tietyn kirjoittajan bibliografian teokseen.



3. TIETOKANNAN RAKENNE

Tietokannan rakenne esitetään tässä UML-tyylisinä kaavioina, joista nähdään tietokantataulujen väliset yhteydet. Rakenne on jaettu useampiin osarakenteiden kaaviokuviin selvyyden vuoksi. Todellisuudessa kaikki kaaviot kuuluvat samaan rakenteeseen. Tarkemmat selitykset kuvien yhteydessä.

Huom: Taulujen yhteyksien määrät ovat esitetty niin kuin ne ovat järjestelmän toimintatavan kannalta mahdollisia. Pelkän tietokannan kannalta yhteyksien määrät voisivat olla muutakin, mutta tietokantaa käyttävä järjestelmä huolehtii oikeista yhteyksien määrästä.

Lekseemi

Lekseemin taulurakenne. Lahdetieto-taulusta on yhteys eteenpäin, katso lisää lähdetietot. Osasta tauluista tallennetaan myös tallennustiedot, katso lisää tallennustiedot.

Sanue

Sanueen taulurakenne. Sanueeseen liitetään lekseemejä sanueliitos-taulun avulla. Lahdetieto-taulusta on yhteys eteenpäin, katso lisää lähdetietot. Osasta tauluista tallennetaan myös tallennustiedot, katso lisää tallennustiedot.

Lähdetiedot

Kullakin taululla, jolla on lähteenmukaista tietoa, on viitte lahdetieto-taulun (lekseemi- ja sanuekaavioissa esitetty vain lahdetieto-taulu) kautta tiettyyn lähdelyhenteeseen lahde-taulussa. Lahde-taulu puolestaan yhdistää lähdelyhenteen bibliografian johonkin teokseen. Bibliografiaan puolestaan liitetään kirjoittajaliitos-taulun avulla teoksen kirjoittajia kirjoittaja-taulusta. Lähdetietoa voivat saada seuraavat taulut: ilmentyma, merkitys, suhde, muutieto, sanue_ilmentyma, sanue_merkitys, sanue_suhde, sanue_muutieto. Bibliografia-taulun tiedoista tallennetaan tallennustieto, katso lisää tallennustiedot.

Tallennustieto

Kullakin taululla, joihin lisätään tietoa käyttäjän syöttämänä, on ns. tallennustieto tallennus-taulussa. Taulun rivillä on viite tauluun, jonka tallennustietoja se kuvaa. Lisäksi tallennus-taulusta on viite kayttaja-taluun, jolla yhdistetään syötetty tieto tietyn käyttäjän syöttämäksi. Tallennustietoja voi olla useampia tiettyä syötettyä tietoa kohde. Kyseessä on nk. tallennushistoria. Tallennustietoja käytetään käyttöliittymässä selvittämään kuka saa muokata syötettyä tietoa sekä varmentamistoiminnossa. Tallennustietoa voivat saada seuraavat taulut: tarkenne, ilmentyma, merkitys, suhde, muutieto, sanue_tarkenne, sanue_ilmentyma, sanue_merkitys, sanue_suhde, sanue_muutieto.