Normalisointi?

Hieman tuo normalisointi hakusessa joten voiskos joku viisaampi auttaa vähäsen. Tässä on erään tapahtumakalenterin tauluja.

Tapahtuma
id | tapatuma

Paikka
id | paikka

Tapahtumat
id | tapahtuma_id | paikka_id | alkaa | loppuu

Tuollee on tällähetkellä, mutta kun katselee dataa niin alkaa ja loppuu (molemmat datetime) ovat aika usein toistoja (noin 45% toistoja), jotenka olisikos parempa tehdä näin


Tapahtuma
id | tapatuma

Paikka
id | paikka

Aika
id | aika

Tapahtumat
id | tapahtuma_id | paikka_id | alkaad(aika_id) | loppuu(aika_id)

Vai onko tuo jo liioittelua normalisoinnissa?

Mutta mimmosella kyselyllä saan sitten tapahtumat jotka alkaa vaikkapa 2.3.2007 jälkeen sekä loppuu ennen 27.3.2007?
5706
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Ja muutenkin otetaan vinkkejä miten tuo oikeaoppisesti kuuluisi tehdä.

Äänestä
  • Mielestäni suunnitelma yksi ihan hyvä. Riippuen mitä infoa tapahtumiin liittyy, eli jos ihan keraluontoisia, voisi erillisen tapahtumataulunkin jätää pois.

    Äänestä

  • normalisoida kirjoitti:

    Mielestäni suunnitelma yksi ihan hyvä. Riippuen mitä infoa tapahtumiin liittyy, eli jos ihan keraluontoisia, voisi erillisen tapahtumataulunkin jätää pois.

    Kiitoksia vastauksesta, sama tapahtuma saattaa toistua useastikin eriaikoina ja paikoissa. Tässä tän hetkist tietoa paljon dataa noissa tauluissa on jotta saa käsityksen paljon noita toistoja onpi.

    Tapahtumat: 3458kpl
    Tapahtuma: 206kpl
    Paikka: 187kpl

    Kokeilimpa huvikseni tehdä seuraavanlaisen taulun
    Ajat
    aika_id | alkaa | loppuu

    Jolloin erillaisia tietoja tuli
    2669kpl

    Mutta taitaa tuo ensinmäinen suunnitelma olla yhä se parhain?

    Mistäs löytyisi kunnon tietoa normalisoinnista?
    Googlella kyl yritin mut eipä pahemmin mitään löytynyt, kaik semmosia ylimalkasia ja perusteit.

    Äänestä

Toi suunnitelma 1 on ihan hyvä... se alkamis ja loppumisaika kannattaa tehdä timestampilla jos haluut esim minuuttien tarkkuudella tai sitten jos päivän tarkkuus riittää niin määrität sen alkamisen ja loppumisen alkioiden tyypiksi päivämäärän. Jälkimmäisellä tavalla myöskin tietyn päivän jälkeen tapahtuneet asiat on helppo hakea perus kyselyillä... esimerkiksi näin "select *; from tapahtumat; where alkaa > 2-3-2007 and loppuu < 27-3-2007;" Syntaksi sitten vaihtelee tietokanta ohjelmittain mutta periaate tosta varmasti selviää... :)

Äänestä
  • Kiitoksia vastauksest. Juu nuo alkamis ja loppumis ajat ovat datetime tyyppisiä joilla toimii myös nuo aikajutut.

    Tietokantana on MySQL 5

    Äänestä

Kommentoi aloitusta


-------- kirjoitti:

Hieman tuo normalisointi hakusessa joten voiskos joku viisaampi auttaa vähäsen. Tässä on erään tapahtumakalenterin tauluja.

Tapahtuma
id | tapatuma

Paikka
id | paikka

Tapahtumat
id | tapahtuma_id | paikka_id | alkaa | loppuu

Tuollee on tällähetkellä, mutta kun katselee dataa niin alkaa ja loppuu (molemmat datetime) ovat aika usein toistoja (noin 45% toistoja), jotenka olisikos parempa tehdä näin


Tapahtuma
id | tapatuma

Paikka
id | paikka

Aika
id | aika

Tapahtumat
id | tapahtuma_id | paikka_id | alkaad(aika_id) | loppuu(aika_id)

Vai onko tuo jo liioittelua normalisoinnissa?

Mutta mimmosella kyselyllä saan sitten tapahtumat jotka alkaa vaikkapa 2.3.2007 jälkeen sekä loppuu ennen 27.3.2007?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu