Opintopiiritehtävä 3: Verkkohuutokauppa



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

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

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Tietokannat II -kurssin harjoitustyö

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

Tietokantojen perusteet, s 2005, Opintopiiritehtävä

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

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

SQL - STRUCTURED QUERY LANGUAGE

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

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

CSE-A1200 Tietokannat

Tietokannat II -kurssin harjoitustyö

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

Treenitietokannan suunnitteludokumentti

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokantakurssit / TKTL

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

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

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

Yrityksen sisäinen tunnus Henkilönumero tai muu yrityskohtainen tunniste, mikäli tieto on tallennettu verkkopalveluun.

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

2. Käsiteanalyysi ja relaatiomalli

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

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

Sinkka Projekti Sivu 1 (6) Projektin tiedostokuvaus dokumentti

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

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

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

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

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

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

Ratkaisut harjoitusviikon 2 tehtäviin

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

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Ristijärven metsästysseura tysseura osti lisenssin jahtipaikat.fi verkkopalveluun, jotta seuran

SQL-kielen perusteet. Tietokantojen perusteet

T Testiraportti TR-3. ETL-työkalu

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

Lohdutus - tietokantadokumentti

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

VINKKEJÄ CV-NETIN KÄYTTÖÖN.

Liitokset - haut useaan tauluun

opiskelijan ohje - kirjautuminen

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

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

VINKKEJÄ CV-NETIN KÄYTTÖÖN.

OUTER JOIN se vanha kunnon kaveri

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

Kuva 7.2 vastaustaulu harjoitukseen 7.2

Metropolia ammattikorkeakoulu TU00BS : ICT-teknologiaosaaminen Tuntitehtävät 5 Pasi Ranne

Ajoneuvotietopalvelun käyttöohje Päivitetty

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

Nettiposti. Nettiposti käyttöohje

Tietokantasovellus: drinkkiarkisto

Käyttäjätunnus Användarnamn Username. Salasana Lösenord Password. Kieli Språk Language. Kirjaudu sisään / Logga in / Login

Luento 2: Tiedostot ja tiedon varastointi

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

FACEBOOK.

3. Taulujen määrittely ja muuttaminen

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

Relaation tyhjyyden testaaminen

Tietokantasovelluksen määrittelydokumentti

OpenOffice.org Base 3.1.0

Käsiteanalyysi prosessina ja tarveanalyysi

WinhaWilho 8.9. Käyttöohje. Opiskelijapalvelukeskus / ja. X:\Yhteiset\OPHJ-ohjeet\Wilho\PHKK\Salpaus\Wilho_huoltajanohje_Winha89_

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

Opiskeluoikeuksien maaran tiedonkeruu

CSE-A1200 Tietokannat

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Uuden Peda.netin käyttöönotto

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

SELECT-lauseen perusmuoto

Yrityksen sisäinen tunnus Henkilönumero tai muu yrityskohtainen tunniste, mikäli tieto on tallennettu verkkopalveluun.

Vaasan kaupungin nuorten kesätyöt haetaan Kuntarekry.fi työnhakuportaalin kautta.

Työtapaturmainfo: Työtapaturman ilmoittaminen 2016->

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

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

2. Kirjoita sähköpostiosoitteesi sille varattuun kenttään ja paina Lähetä varmistusviesti -painiketta.

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Transkriptio:

Opintopiiritehtävä 3: Verkkohuutokauppa Jarmo Vestola, Tommi Voss, Perttu Määttä, Tia Määttänen, Satu Salekari, Henry Kari Helsingin yliopisto Tietojenkäsittelytieteen laitos Tietokantojen perusteet -kurssi Kevät 2007 Harjoitusryhmä 2 Ohjaaja Linda Hellman Ryhmä Rämä

Sisällysluettelo 1. Ongelmaesittely...3 1.1 Verkkohuutokauppa...3 2. Tietosisältökartoitus...3 2.1 UML-luokkakaavio...3 3. Tietokannan taulujen kuvaukset...4 3.1 Relaatiokaavio...4 3.1.1 Relaatiokaavio kuvana...4 3.1.2 Relaatiokaavio sanallisesti...4 3.2 Tietokannan SQL-luontilauseet...5 4. Suunnitelman laadun varmistus...8 4.1 Esimerkkejä taulujen sisällöstä...8 4.2 Taulujen funktionaaliset riippuvuudet...9 4.3 Käyttötapauksiin liittyvät kyselyt...10 4.3.1 Tuotteen haku...10 4.3.2 Ketkä käyttäjät ovat myyjiä...10 4.3.3 Millä käyttäjillä negatiivista palautetta...10 4.3.4 Tuoteryhmät joissa yli 100 tuotetta...10 4.3.5 Suurin tuoteryhmä...11 4.3.6 Tuotteiden poisto...11 4.4 Havaitut ongelmat...11

1. Ongelmaesittely 1.1 Verkkohuutokauppa Verkkohuutokauppa tarjoaa rekisteröityneille asiakkaille mahdollisuuden laittaa tuotteitaan tarjolle huutokauppaan. Tuotteet jakautuvat tuoteryhmiin. Kunkin tuoteryhmän alaisuudessa on useita listoja. Asiakas kirjaa tuotteensa johonkin listaan, määrittää huutokaupan alkamis- ja päättymisajan ja asettaa minimihinnan. Asiakas voi liittää tuotteeseensa kuvia ja muita dokumentteja. Asiakas voi myös pyytää verkkohuutokaupan pitäjältä arviota tuotteesta. Huutokaupan pitäjä voi tehdä arvion dokumenttien perusteella tai tutustuttuaan tuotteeseen. Arvion peruste näkyy arviodokumentissa. Arviot ovat maksullisia. Kuka tahansa webbikäyttäjä voi tehdä tarjouksen tuotteesta. Tarjouksen yhteydessä tarjoaja antaa yhteystietonsa. Tuotteesta kiinnostunut voi myös lähettää kysymyksiä myyjälle. Hän ei kuitenkaan näe myyjän osoitetietoja, vaan kysymykset välitetään järjestelmän kautta samoin kuin myyjän niihin antamat vastaukset. Myyjä voi halutessaan merkitä kysymyksen ja vastauksen julkiseksi, jolloin ne julkaistaan tuotteen tietojen yhteydessä. Tarjousajan päätyttyä myyjä saa korkeimman tarjouksen tehneen asiakkaan yhteystiedot. Jos kauppaa ei jostain syystä synny, annetaan seuraavaksi korkeimman tarjouksen tehneen tiedot. 2. Tietosisältökartoitus 2.1 UML-luokkakaavio UML-luokkakaavio yhteyksineen ja moniarvoisuusmääreineen.

3. Tietokannan taulujen kuvaukset 3.1 Relaatiokaavio 3.1.1 Relaatiokaavio kuvana Relaatiokaavio verkkohuutokaupan tietosisällöstä ja yhteyksistä. Alleviivatut ja paksunnetut attribuutit ovat relaation avaimia ja siniset attribuutit viiteavaimia. 3.1.2 Relaatiokaavio sanallisesti Yksinkertaisesti sanottuna tehtävänä olevan verkkohuutokaupan relaatiokaavio noudattaa Huuto.netverkkohuutokaupan toimintaa, lisättynä arvio-toiminnalla, jonka tuotteen myyjä voi liittää maksua vastaan tuotteeseensa. Kaikki tuotteet on relaatiokaaviossa jaoteltu seuraavasti: yliryhmä --> tuoteryhmä --> yksittäinen tuote, eli esim. polkupyörä --> maastopyörä --> yksittäinen tuote. Yliryhmä vastaa siis tehtäväkuvauksen tuoteryhmää ja tuoteryhmä taas listaa. Termit on nimetty uudestaan selkeyden vuoksi. Kaikki tuotteet voidaan erottaa toisistaan yksilöllisellä tuotetunnuksella. Tavaraa voi myydä ja ostaa vain järjestelmään tietonsa antaneet henkilöt, joista tässä käytetään termiä käyttäjä. Käyttäjä yksilöidään käyttäjätunnuksen avulla. Henkilötietojen ja sähköpostin lisäksi käyttäjältä tallennetaan osoitetiedot. Erillinen OSOITErelaatio on tehty funktionaalisen riippuvuuden välttämiseksi. Jokaiseen tuotteeseen liittyy tuotetunnuksen lisäksi lyhyt nimi ja tarkempi kuvaus. Käyttäjä voi määrätä minimihinnan, jolla tuote laitetaan huudettavaksi ja minimikorotuksen, jolla ostajan on pakko huutoaan korottaa. Aikaleima kertoo, milloin tuote on asetettu myyntiin ja milloin huutokaupan on tarkoitus päättyä. Jotta Tuote-relaatio ei kasvaisi lian isoksi, arviot ja kuvat on jaettu omiin relaatioihin. Yhteen

tuotteeseen on mahdollista laittaa useita kuvia, jotka pitää kuitenkin nimetä eri nimillä. Tuotteeseen voi liittää vain yhden maksullisen arvion. Tuotteista tulevat huudot erotetaan toisistaan tuotetunnuksen ja arvon perusteella. Sekä myyjän, että ostajan on mahdollista antaa toisilleen palautetta kauppoihin liittyen. Palaute voi olla sanallinen tai kuvattavissa jollakin erillisellä asteikolla. Ostajat voivat tehdä kysymyksiä pelkästään tuotetta tai sen toimitusta koskien. KYSYMYS-relaation NäkyvyydenTila-attribuutti määrittelee, näytetäänkö kysymys vain myyjälle, vai annetaanko sen näkyä kaikille tuotetta selaaville käyttäjille. Halutessaan myyjä voi antaa yhden vastauksen jonkin käyttäjän kysymykseen. Vastauksen näkyvyys riippuu tällöin kysymyksen näkyvyydestä. 3.2 Tietokannan SQL-luontilauseet Taulussa Tuote esitellään myynnissä oleviin tuotteisiin liittyviä tietoja. create table Tuote ( tuotetunnus varchar(20) primary key not null, // tuotteen yksilöivä tunnusnumero nimi varchar(20) not null, // lyhyt ja selkeä nimi, joka kuvaa tuotetta kuvaus varchar(5 000), // tarkka selostus tuotteen ominaisuuksista tuoteryhman_tunnus varchar(20) not null, // minkä tuoteryhmän alle tuote kuuluu kayttajatunnus varchar(20) not null, // yksilöi tuotteen myyjän käyttäjätunnuksella minimihinta decimal(6,2) not null, // alkuhinta joka tuotteella on kaupan alussa minimikorotus decimal(6,2) not null, // summa jolla huutoa pitää vähintään korottaa alku timestamp(0) not null, // huutokaupan alkamisaika loppu timestamp(0) not null, // huutokaupan loppumisaika foreign key tuoteryhman_tunnus references Tuoteryhma.tuoteryhman_tunnus, foreign key kayttajatunnus references Kayttaja.kayttajatunnus Taulussa Käyttäjä esitellään rekisteröityneiden käyttäjien tunnistetietoja. Kaikki verkkohuutokaupan käyttäjät näkevät vain muiden käyttäjien käyttäjätunnuksen. Huutokaupan loputtua järjestelmä antaa myyjälle ja huutajalle toistensa yhteystiedot. create table Kayttaja ( kayttajatunnus varchar(20) primary key not null, // yksilöi käyttäjän salasana varchar(20) not null, // varmistaa, että käyttäjä on se, kuka väittää etunimi varchar(20) not null, // käyttäjän etunimi sukunimi varchar(50) not null, // käyttäjän sukunimi katuosoite varchar(100) not null, // käyttäjän osoitetieto, johon tuote toimitetaan postinumero varchar(5) not null, // käyttäjän osoitetieto, johon tuote toimitetaan sahkoposti varchar(50) not null, / / osoite, johon järjestelmän viestit toimitetaan foreign key postinumero references Osoite.postinumero Taulussa Arvio esitellään huutokaupan pitäjältä mahdollisesti pyydetyn arviodokumentin tietoja. Arvio on aina maksullinen ja sen sisältö on rajoitettu tietyn kokoiseksi.

create table Arvio ( tuotetunnus varchar(20) primary key not null, aikaleima timestamp(0) not null, sisalto varchar(2 000) not null, hinta decimal(6,2) not null, foreign key tuotetunnus references Tuote.tuotetunnus // liittää arvion yhteen tuotteeseen // milloin arvio on tehty // pitempi selostus arviosta ja sen perusteista // arvioon liittyvä hinta Palaute taulu sisältää annetun palautteen joka voi olla 1000 merkin pituinen teksti. Palautteen arvo voi olla negatiivinen=-1, neutraali=0 ja positiivinen=1. create table Palaute( tuotetunnus varchar(20) not null, // liittää palautteen yhteen tuotteeseen antajankayttajatunnus varchar(20) not null, // palautteen antajan tunnus saajankayttajatunnus varchar(20) not null, // palautteen saajan tunnus aikaleima timestamp(0) not null, // aika, jolloin palaute on annettu palautteenarvo int not null, // arvo, joka palautteella on palautteensisalto varchar(1000), // tarkempi palautteen sisältö primary key(tuotetunnus,antajankayttajatunnus), foreign key tuotetunnus references Tuote.tuotetunnus, foreign key antajankayttajatunnus references Käyttäjä.Käyttäjätunnus Kuva-relaatio sisältää tiettyyn tuotteeseen liitetyn kuvan/kuvia jonka koko maksimissaan saa olla 1000 kb. Kuvalla on aina nimi ja avaimina tuotetunnus ja kuvannimi. create table Kuva( tuotetunnus varchar(20) not null, // tuote, johon kuva liittyy kuvannimi varchar(50) not null, // nimi, joka kuvalla on kuva blob(1000k) not null, // Kuvan maksimikoko 1000kb primary key(tuotetunnus,kuvannimi), foreign key tuotetunnus references Tuote.tuotetunnus Tuoteryhma-relaatio on periaatteessa tuotteiden ylitaulu joka sisältää ryhmän nimen, yliryhmän nimen ja tunnuksen. Avaimena käytetään tuoteryhmän tunnusta. create table Tuoteryhma( tuoteryhmantunnus varchar(20) primary key not null, // tunnus, joka tuoteryhmänimellä on tuoteryhmannimi varchar(20) not null, // ryhmän nimi, johon tuote kuuluu yliryhmantunnus varchar(20) not null, // kokonaisuus, johon tuoteryhmä kuuluu foreign key yliryhmantunnus references Yliryhma.yliryhmantunnus Yliryhma taulu on kaikkien tuoteryhma-taulujen ylitaulu eli laajin kokonaisuus, taulun avaimena on tunnus ja relaatiosta löytyy tämän lisäksi vain yliryhmän nimi. create table Yliryhma( yliryhmantunnus varchar(20) primary key not null, // tunnus, joka yliryhmän nimellä on yliryhmannimi varchar(20) not null // kokonaisuuden nimi, johon tuoteryhmä kuuluu

Osoite taulusta löytyy postinumero ja postitoimipaikka, jotta normalisointi toimii. Avaimena postinumero. create table Osoite( postinumero varchar(5) primary key not null, // suomalainen postinumero postitoimipaikka varchar(20) not null, // toimipaikka, johon postinumero liittyy Huuto-taulu toimii käyttäjiä ja tuotteita yhdistävänä tauluna, johon tarjoukset tallennetaan. create table Huuto( tuotetunnus varchar(20) not null, // viittaa huudettavan tuotteen tunnukseen arvo decimal(6,2) not null, // hinta, jolla tuote yritetään huutaa aikaleima timestamp(0) not null, // aika jolloin huuto on annettu kayttajatunnus varchar(20) not null, // viittaa huudon antaneen käyttäjän tunnukseen primary key(tuotetunnus,arvo), foreign key tuotetunnus references Tuote.tuotetunnus, foreign key kayttajatunnus references Kayttaja.kayttajatunnus Sekä julkiset, että yksityiset kysymykset tietyistä tuotteista tallennetaan tähän relaatioon aikaleiman ja juoksevan kysymysnumeron kanssa. create table Kysymys( kysymysnro int primary key not null, // numero jolla kysymys tunnistetaan tietokannassa tuotetunnus varchar(20) not null, // viittaa tuotteeseen josta kysymys on tehty aikaleima timestamp(0) not null, // aika jolloin kysymys on esitetty kayttajatunnus varchar(20) not null, // käyttäjän tunnus, joka on esittänyt kysymyksen kysymys varchar(1000) not null, // kysymyksen sisältö, max 1000 merkkiä julkinen boolean, // kysymyksen näkyvyys, true, jos julkinen foreign key tuotetunnus references Tuote.tuotetunnus, foreign key kayttajatunnus references Kayttaja.kayttajatunnus Kysymykseen liittyvät vastaukset. Yhteen kysymykseen voi olla vain yksi vastaus. create table Vastaus( kysymysnro int primary key not null, // sen kysymyksen numero, jolle vastaus on annettu aikaleima timestamp(0) not null, // aika jolloin vastaus on annettu vastaus varchar(1000) not null, // vastauksen sisältö, max 1000 merkkiä foreign key kysymysnro references Kysymys.kysymysnro

4. Suunnitelman laadun varmistus 4.1 Esimerkkejä taulujen sisällöstä Alla joitakin esimerkkejä muutamien tärkeiden taulujen sisällöstä. Kaikkien taulujen sisältöjä ei ole kuvattu, koska niiden sisältö on triviaalia ja periaatteessa niiden sisältö voidaan ajatella myös tyhjänä. TUOTERYHMÄ TuoteryhmänTunnus Tuoteryhmän Nimi 010 kannettavat 001 011 pöytäkoneet 001 020 PlayStation 2 002 038 sukat 003 062 putkitelevisiot 006 036 kengät 003 YliryhmänTunnus YLIRYHMÄ YliryhmänTunnus YliryhmänNimi 001 tietokoneet 002 pelikoneet 003 vaatteet 006 televisiot 007 huonekalut KYSYMYS kysymysnro tuotetunnus aikaleima käyttäjätunnus kysymys näkyvyydentila 0001 000 001 15.4.07 21:02 tiramisu Onko modattu? julkinen 0002 000 006 9.5.07 10:13 mariobros84 Onko takuuta? julkinen 0003 000 003 18.5.07 16:59 haisuli Myytkö 188 eurolla? yksityinen VASTAUS kysymysnro aikaleima vastaus 0001 16.4.07 21:13 On modattu viime talvena. 0002 11.5.07 10:10 Takuuta jäljellä tämä vuosi. 0003 18.5.07 17:46 En myy. Katsotaan huutokauppa loppuun. TUOTE tuotetunnus nimi kuvaus tuoteryhmän Tunnus käyttäjätunnus minimihinta minimik orotus AikaleimaAlku AikaleimaLoppu 000 001 PS2+pelejä tekstiä... 020 tombe 50 5 10.4.07 16:30 20.4.07 16:30 000 002 Kivat sukat tekstiä... 038 jobbe 5 1 20.4.07 9:00 28.4.07 9:00 000 003 Philips-tv 28 tekstiä... 062 mvnet 200 20 5.5.07 21:22 5.5.07 21:22 000 004 Acer 2 Ghz tekstiä... 011 akumies 300 10 2.4.07 21:24 5.5.07 21:24 000 005 Nike-tossut tekstiä... 036 repe22 20 2 21.4.07 11:10 21.4.07 11:14 000 006 Apple ibook tekstiä... 010 viivi 500 10 14.5.07 10:00 22.5.07 10:00 PALAUTE tuotetunnus Antajan käyttäjätunnus SaajanKäyttäjätunnus aikaleima PalautteenArvo PalautteenSisältö 000 002 tombe jobbe 10.5.07 20:00 positiivinen Hyvät kaupat 000 002 jobbe tombe 9.5.07 10:13 positiivinen Nopea maksu 000 003 haisuli mvnet 10.5.07 16:22 positiivinen Hyvät kaupat 000 004 akumies haisuli 30.5.07 9:09 neutraali Hidas maksu 000 005 mariobros84 repe22 28.4.07 9:00 positiivinen Nopea myyjä 000 006 mariobros viivi 30.5.07 12:44 negatiivinen huijari

KÄYTTÄJÄ käyttäjätunnus salasana etunimi sukunimi sähköposti katuosoite postinumero tombe ******* Tommi Bärt tommi.bärt@hut.fi Ratakatu 4 04557 jobbe ********* Joonas Nummi joonas22@mbnet.fi Töyssytie 12 B 3 02995 mvnet ********* Kari Nettilä kari@mvnet.fi Alamyllyntie 19 02990 haisuli ******** Harri Haapa happi@mbnet.fi Kuusikuja 1 34550 repe22 ******** Jaana Järventie jaanaj@kuutamo.fi Iittalan kumpu 89000 viivi ******** Pauliina Ström ström@ström.fi Viitakaari 3 11223 OSOITE postinumero postitoimipaikka 04557 Tornio 02995 Espoo 02990 Espoo 89000 Äetsä 11223 Helsinki 49222 Turku HUUTO tuotetunnus arvo aikaleima käyttäjätunnus 000 001 55 20.4.07 16:20:31 jobbe 000 001 60 20.4.07 16:22:01 haisuli 000 001 65 20.4.07 16:22:40 jobbe 000 002 6 22.4.07 10:02:39 tombe 4.2 Taulujen funktionaaliset riippuvuudet Tuoteryhmä TuoteryhmänTunnus --> TuoteryhmänNimi, YliryhmänTunnus Yliryhmä YliryhmänTunnus --> YliryhmänNimi Tuote Tuotetunnus --> Nimi, Kuvaus, TuoteryhmänTunnus, Käyttäjätunnus, Minimihinta, Minimikorotus, AikaleimaAlku, AikaleimaLoppu Kuva Tuotetunnus, KuvanNimi --> Kuva Arvio Tuotetunnus --> Aikaleima, Sisältö, Hinta Palaute Tuotetunnus, AntajanKäyttäjätunnus --> SaajanKäyttäjätunnus, Aikaleima, PalautteenArvo, PalautteenSisältö Käyttäjä Käyttäjätunnus --> Salasana, Etunimi, Sukunimi, Katuosoite, Postinumero, Sähköposti Kysymys KysymysNro --> Tuotetunnus, Aikaleima, Käyttäjätunnus, Kysymys, NäkyvyydenTila Vastaus KysymysNro --> Aikaleima, Vastaus Osoite Postinumero --> Postitoimipaikka

Huuto Tuotetunnus, Arvo --> Aikaleima, Käyttäjätunnus Koska kaikkien taulujen riippuvuuksien vasemmalla puolella on taulun avain, ovat kaikki järjestelmän taulut täten Boyce-Codd normaalimuodossa. 4.3 Käyttötapauksiin liittyvät kyselyt 4.3.1 Tuotteen haku Henkilö haluaa ostaa polkupyörän. Hän avaa webbihuutokaupan sivut ja katsoo millaisia polkupyöriä huutokaupassa on tarjolla. Laaditaan taulu Tuotteen haku, joka antaa myynnissä olevat tuotteet sulkeutumispäivämäärän mukaisesti laskevassa järjestyksessä. Select T.nimi, T.kuvaus, T.kayttäjatunnus, T.minimihinta, T.minimikorotus, T.aikaleimaloppu, K.kuva, A.sisalto From TUOTE T, KUVA K, ARVIO A, TUOTERYHMA TR Where TR.tuoteryhmanNimi = Polkupyörät order by T.aikaleimaLoppu 4.3.2 Ketkä käyttäjät ovat myyjiä Webhuutokaupan pitäjä haluaa tietää ketkä käyttäjät ovat myyjiä. Laaditaan taulu Myyjät sukunimen mukaan aakkosjärjestyksessä. Select distinct K.Etunimi, K.Sukunimi, T.Käyttäjätunnus From TUOTE T, KÄYTTÄJÄ K Where T.Käyttäjätunnus = K.Käyttäjätunnus order by K.Sukunimi 4.3.3 Millä käyttäjillä negatiivista palautetta Webhuutokaupan pitäjä haluaa tietää ketkä käyttäjät ovat saaneet negatiivista palautetta. Laaditaan taulu Negatiivinen palaute, joka järjestää negatiivisen palautteen saaneet käyttäjät sukunimen mukaan aakkosjärjestyksessä. Select K.Etunimi, K.Sukunimi, P.Saajankäyttäjätunnus From PALAUTE P, KÄYTTÄJÄ K Where P.palautteen arvo = negatiivinen order by K.sukunimi 4.3.4 Tuoteryhmät joissa yli 100 tuotetta Laaditaan taulu Tuotteita>100, johon otetaan mukaan tuoteryhmät, joissa on myynnissä yli 100 tuotetta. select t.tuoteryhmäntunnus, tr.tuoteryhmännimi, t.tuotekoodi, count (*) from tuoteryhmä tr, tuote t

where tr.tuoteryhmäntunnus = t.tuoteryhmäntunnus having count (*)>100 4.3.5 Suurin tuoteryhmä Laaditaan taulu Suurimmat tuoteryhmät. Tauluun otetaan mukaan tuoteryhmät, joissa on suurin keskimääräinen ryhmäkoko, ja missä yliryhmässä ne sijaitsevat. select yr.yliryhmännimi, tr.tuoteryhmännimi, tuotteita/ryhmä from Yliryhmä yr, Tuoteryhmä tr, tuote t (select count(t.tuotekoodi) from tuoteryhmä tr) as tuotteita tuotteita/ryhmä = (select max(tuotteita/ryhmä) from tuoteryhmä tr) where t.tuoteryhmäntunnus = tr.tuoteryhmäntunnus 4.3.6 Tuotteiden poisto Verkkohuutokaupan kapasiteetin pitämiseksi siedettävissä rajoissa kaupasta poistuvat tuotteet, joiden huutopäivämäärä on mennyt umpeen kuukausi sitten. Tiedot säilytetään kuitenkin kuukauden verran, jotta tuotteen ostaja saa vielä tarvittaessa myyjän yhteystiedot tai voi jättää palautetta. Delete from Tuote where aikaleimaloppu > sysdate - 30 4.4 Havaitut ongelmat Projektin toteutuksessa ei havaittu suoranaisia ongelmia. Normalisoinnin seurauksena alkuperäiseen suunnitelmaan lisättiin kuitenkin Osoite-taulu, jotta relaatiokaavio olisi Boyce-Codd normaalimuodossa. Alkuperäisessä suunnitelmassa nykyiset Tuoteryhmä- ja Yliryhmä-relaatiot oli myös yhdistetty toisiinsa yhdeksi tauluksi, joka sisälsi sisäisiä viitteitä. Ratkaisu kuitenkin hylättiin, koska varmuutta kyselyiden toimivuudesta ei ollut. Koska tuotteeseen liittyvä tekstimuotoinen kuvaus vie paljon tietoa, voisi olla järkevää erottaa kuvaus kokonaan omaksi relaatiokseen, kuten Kuva- ja Arvio-relaatioiden kanssa onkin toimittu. Oikeasti verkkohuutokaupasta ei myöskään kannattaisi tuhota kaikkia vanhaksi menneitä tuotteita, kuten kohdassa 6.6, vaan järkevämpää olisi esim. siirtää kuukauden vanhat tiedot toiseen tietokantaan ja poistaa pelkät kuvat ja tuotteisiin liittyvät kuvaukset. Näin järjestelmä ei hyydy koko ajan lisääntyvän kuorman alle ja käyttäjillä on vielä mahdollisuus saada järjestelmältä tietoja ja raportteja vanhoistakin ostoista ja myynneistä.