Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta



Samankaltaiset tiedostot
Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

SQL - STRUCTURED QUERY LANGUAGE

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Tietokannat II -kurssin harjoitustyö

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

CSE-A1200 Tietokannat

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

HELIA 1 (14) Outi Virkki Tiedonhallinta

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Treenitietokannan suunnitteludokumentti

HELIA 1 (11) Outi Virkki Tiedonhallinta

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Tietokannat II -kurssin harjoitustyö

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

2. Käsiteanalyysi ja relaatiomalli

Ylläpitodokumentti Labra

TIETOKANTOJEN PERUSTEET MARKKU SUNI

3. Taulujen määrittely ja muuttaminen

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

POISSAOLOJEN SEURANTAJÄRJESTELMÄ

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Tietokantojen suunnittelu, relaatiokantojen perusteita

LINUX-HARJOITUS, MYSQL

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

Opintopiiritehtävä 3: Verkkohuutokauppa

Käyttöohje. Labra. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

T Testiraportti TR-3. ETL-työkalu

HELIA 1 (12) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

RADAR - RANDOM DATA GENERATOR

SELECT-lauseen perusmuoto

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

HELIA 1 (14) Outi Virkki Tiedonhallinta

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

SQL-kielen perusteet. Tietokantojen perusteet

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Tietokantakurssit / TKTL

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokantasovellus: drinkkiarkisto

Ylläpitodokumentti. PLAYOFF Jari Anttila Sanna Fröblom Aarno Sandvik Tommi Paavilainen Miikka Kohijoki. Päivi Pääkkö, ohjaaja

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Opus SMS tekstiviestipalvelu

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

OpenOffice.org Base 3.1.0

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Access-kyselyt. Luetteloinnin kehittämispäivä Mia Kujala

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

Ohjelmoinnin jatkokurssi, kurssikoe

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Lohdutus - tietokantadokumentti

Opiskeluoikeuksien maaran tiedonkeruu

Aditro Tikon versio SP1

TEHTÄVÄN NIMI YHDELLE TAI USEAMMALLE RIVILLE FONTTIKOKO 24 Tarvittaessa alaotsikko fonttikoko 20

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

ALMU-järjestelmä Suunnitteludokumentti

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testidatan generointi

Maiju Mykkänen Susanna Sällinen

Turun seudun TAPAHTUMAKALENTERI

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Transkriptio:

Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010

Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset Harjoitustyön tarkoituksena oli luoda tietokanta koulun sähköistä kulunvalvontaa varten. Alla on listattu kulunvalvonnan toteutus sekä vaatimukset: - Oviin on asennettu sähkölukot, jotka sisältävät tiedon lukon numerosta ja sen ryhmänumerosta. - Lukon ryhmänumero kertoo, minä päivinä ja kellonaikoina ovi on auki. - Avainkortit sisältävät mikrosirun, jossa on avainkortin numero sekä sen ryhmänumero. - Käyttäjän yrittäessä ovesta sisään sähkölukko lukee kortin tiedot ja vertaa kortissa olevan ryhmäkoodin omaan listaansa ryhmistä, jotka voivat käyttää ovea sinä kellonaikana ja päivänä. - Kaikki korttien käytöt rekisteröidään loki-tiedostoon, jotta voidaan selvittää keitä kiinteistön missäkin osassa on milloinkin ollut. - Kulunvalvonta on myös toimittava silloin, kun yhteys tietokantaan ei toimi. Edellä mainitun kulunvalvonnan toteutuksen ja asiakkaan vaatimusten mukaisesti luodaan seuraavalla sivulla olevan kuvan 1. mukainen ER-malli.

Mikko Haapanen 15.3.2010 2(7) Kuva 1: ER-mallinnus

Mikko Haapanen 15.3.2010 3(7) 2. ER-malli Kuva 1. siis esittelee asiakkaan vaatimuksien perusteella suunniteltua ER-mallinnusta eli näkemystä siitä, miten tietokannan pitäisi loogisesti rakentua ja toimia. Jokainen taulukko sisältää perusavaimen, joka on merkitty taulukkoon alleviivauksella ja perusavaimen nimen perässä olevalla tähdellä. Kaikessa yksinkertaisuudessaan kuvan ER-malli kertoo meille, että jokaisella käyttäjällä on yksi avainkortti. Avainkortit kuuluvat johonkin tiettyyn korttiryhmään, jolla puolestaan voi olla rajoitettuja oikeuksia tiettyihin lukkoryhmiin. Lukkoryhmät sisältävät useita lukkoja. Edellä mainittujen lisäksi löytyy erillinen logi -taulu, joka pitää kirjaa ovien avaus tapahtumista. Alla on vielä tarkemmin selvitetty ER-mallin sisältö. Tietokanta pitää kirjaa kaikista käyttäjistä, jotka omistavat avainkortin. Tietokantaan siis luodaan käyttäjä -niminen taulukko, joka sisältää tiedot henkilötunnuksesta (hid), etunimestä (enimi), sukunimestä (snimi) sekä käyttäjän omistamasta kortista (korttinro). Yhden käyttäjän nimissä voi olla vain yksi avainkortti, mikä on merkattu ER-malliin käyttäjä ja kortti -taulukon väliin yhden suhde yhteen (1:1). Kortti-taulukko sisältää tiedot jokaisesta avainkortista, eli korttien numerosta (korttinro) sekä korttien ryhmänumerosta (kryhmanro). Yhteen korttiryhmään voi kuulua monta avainkorttia ja tämä on merkitty ER-malliin n:n suhde yhteen (n:1). Jokaisella korttiryhmällä on oman numeronsa lisäksi merkattu nimi (kryhmanimi) selventämään mistä ryhmästä on kyse. Tällaisia ryhmiä voi olla esimerkiksi opettajat ja oppilaat. Jokainen korttiryhmä liitetään lukkoryhmään oikeudet -taulukossa. Oikeudet -taulukossa kerrotaan millä korttiryhmillä on oikeudet käyttää mitäkin lukkoryhmää. Lisäksi tässä taulukossa voidaan vielä erikseen määritellä päivät (aukipaiva) ja aikavälit (aukiaika ja kiinniaika) milloin mikäkin korttiryhmän käyttäjä voi kulkea mistäkin lukkoryhmän määrittämästä ovesta. Koska korttiryhmiin voi kuulua monta lukkoryhmää ja päinvastoin, on tämä merkattu ER-malliin n:n suhde n:ään (n:n). Lukkoryhmä -taulukosta löytyy lista lukkoryhmien numeroista (lryhmanro) ja näiden ryhmien nimistä (lryhmanimi), jonka tarkoitus on korttiryhmän nimen tapaan selventää ryhmien sisältöä. Lukko -taulukosta löytyy lista lukoista (lukkonro) sekä lukoille asetettujen lukkoryhmien numeroista (lryhmanro). ER-mallin ala-vasemmalta löytyy vielä erillinen logi-taulukko, joka kirjaa tiedot tapahtumista. Se sisältää tapahtumanumeron (tid), tapahtuma-ajan (aika), tapahtumassa käytetyn kortin numeron (korttinro), lukon numeron (lukkonro) sekä käytetyn kortin omistajan henkilötunnuksen (hid).

Mikko Haapanen 15.3.2010 4(7) Asiakkaan vaatimuksissa oli vielä maininta, että kulunvalvonnan tulisi toimia ns. offline tilassa. Tämä toteutetaan ylläpidon toimesta, joko automatisoidulla menetelmällä tai käsin siirtämällä oikeudet -taulun tarvittava sisältö sähköisiin lukkoihin. Eli jokainen lukko saa listan niistä korttiryhmistä ja näiden ryhmien oikeuksista tähän lukkoon. 3. Relaatiomalli Tietokannan luonnissa seuraava vaihe on relaatiomallin luominen. Relaatiomalli kertoo käyttäjälle taulukoiden väliset yhteydet, jotka auttavat myöhempiä SQL-kyselyjen tekoa. Alla on kuva kulunvalvonnan relaatiomallista. Kuva 2: Relaatiomalli Relaatiomallista löytyy taulukot, joiden päältä löytyy paksunnettuna taulukon nimi. Taulikoiden nimien alapuolelta löytyy lista taulukon kentistä, joista ensimmäisenä on tähdellä merkattu kunkin taulukon pääavain. Kukin taulu on linkitetty mustalla viivalla seuraavaan taulukkoon, kertoen mitkä kentät tarkoittavat samaa asiaa.

Mikko Haapanen 15.3.2010 5(7) 4. SQL-lauseet taulukoiden luomiseen Alta löytyy tarvittavat komennot tietokannan luontia varten # Luodaan kortti- ja lukkoryhmä -taulukot CREATE TABLE korttiryhma ( # NOT NULL = kenttä ei saa olla tyhjä # AUTO_INCREMENT = rivin luonnin yhteydessä tämä kenttä saa automaattisesti arvon # PRIMARY KEY = pääavain kryhmanro INT NOT NULL AUTO_INCREMENT PRIMARY KEY, kryhmanimi VARCHAR(30) CREATE TABLE lukkoryhma ( lryhmanro INT NOT NULL AUTO_INCREMENT PRIMARY KEY, lryhmanimi VARCHAR(30) # Luodaan oikeudet -taulu CREATE TABLE oikeudet ( kryhmanro INT, lryhmanro INT, # FOREIGN KEY = vierasavain, jolla viitataan (REFERENCE) taulun(avaimeen) FOREIGN KEY (kryhmanro) REFERENCES korttiryhma(kryhmanro), FOREIGN KEY (lryhmanro) REFERENCES lukkoryhma(lryhmanro), aukiaika TIME, kiinniaika TIME, aukipaiva VARCHAR(2) # luodaan kortti, käyttäjät, lukko -taulut CREATE TABLE kortti ( korttinro INT NOT NULL AUTO_INCREMENT PRIMARY KEY, # REFERENCE = viitataan taulun(kenttään) kryhmanro INT REFERENCES korttiryhma(kryhmanro) CREATE TABLE kayttajat ( hid VARCHAR(11) NOT NULL PRIMARY KEY, enimi VARCHAR(15), lnimi VARCHAR(15), korttinro INT REFERENCES kortti(korttinro)

Mikko Haapanen 15.3.2010 6(7) CREATE TABLE lukko ( lukkonro INT NOT NULL AUTO_INCREMENT PRIMARY KEY, lryhmanro INT REFERENCES lukkoryhma(lryhmanro) # luodaan logi-taulu CREATE TABLE logi ( tid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, khid INT REFERENCES kayttajat(hid), korttinro INT REFERENCES kortti(korttinro), lukkonro INT REFERENCES lukko(lukkonro), # saa päivämäärän ja kellonajan arvoksi lisättäessä tapahtuman logiin # GETDATE() funktiolla kirjausaika datetime NOT NULL DEFAULT 0 /* Muutetaan AUTO_INCREMENT arvot taulukoille, * jotta taulukoiden pääavainten erottaminen * toisistaan olisi helpompaa esimerkiksi kirjanpidossa. */ ALTER TABLE korttiryhma AUTO_INCREMENT=10000; ALTER TABLE kortti AUTO_INCREMENT=20000; ALTER TABLE lukkoryhma AUTO_INCREMENT=40000; ALTER TABLE lukko AUTO_INCREMENT=60000; SQL-lauseet uusien ryhmien, avainten, jne lisäämistä varten: # luodaan uusi lukkoryhmä INSERT INTO lukkoryhma(lukkoryhma.lryhmanimi) # luodaan esimerkkiryhmät VALUES ('Aula'), ('Yläkerta'), ('Alakerta'), ('Labrat') # luodaan uusi korttiryhmä INSERT INTO korttiryhma(korttiryhma.kryhmanimi) # luodaan esimerkkiryhmät VALUES ('Opettajat'), ('Oppilaat'), ('Siivoojat'), ('Vartijat') # luodaan uusi lukko INSERT INTO lukko(lryhmanro) SELECT lukkoryhma.lryhmanro FROM lukkoryhma WHERE lukkoryhma.lryhmanro = 40001 # valitaan lukkoryhmä 4001 käyttöön

Mikko Haapanen 15.3.2010 7(7) # luodaan uusi kortti INSERT INTO kortti(kryhmanro) SELECT korttiryhma.kryhmanro FROM korttiryhma WHERE korttiryhma.kryhmanro = 10001 # sijoitetaan kortti ryhmään 10001 # luodaan uusi kortti INSERT INTO kayttajat VALUES ('130365','Matti','Meikäläinen', (SELECT kortti.korttinro FROM kortti WHERE kortti.korttinro = 20000)) # annetaan käyttäjälle kortti 20000 käyttöön # luodaan oikeudet eri käyttäjä- ja lukkoryhmien välille INSERT INTO oikeudet VALUES ( # korttiryhmä 10000 (SELECT korttiryhma.kryhmanro FROM korttiryhma WHERE korttiryhma.kryhmanro = 10000), # lukkoryhmä 40000 (SELECT lukkoryhma.lryhmanro FROM lukkoryhma WHERE lukkoryhma.lryhmanro = 40000), # Aukiaika '05:30:00', # Kiinniaika '18:00:00', ) # Aukipäivä (maanantai) 'MA' Sähköisten lukkojen ns. offline tilaa varten täytyy lukkojen muistiin ladata lista milloin mikäkin käyttäjäryhmä voi ovea käyttää. Tämä tapahtuu alla olevalla SQL-kyselyllä: # Ladataan lukolle numero 60000 käyttäjäoikeustiedot SELECT lukko.lukkonro, oikeudet.* FROM lukko, oikeudet WHERE lukko.lryhmanro = oikeudet.lryhmanro AND lukko.lukkonro = 60000