Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL relaatiot

Hennkka [07.01.2011 22:05:08]

#

Saakos MySQL:ässä sillein, että kun toisesta taulusta tuhoaa rivin, niin toisestakin tuhoutuu rivi? Tai mitä hyötyä relaatioista ylipäätänsä on?

Metabolix [07.01.2011 22:19:12]

#

No juuri niillä relaatioilla tuo onnistuu, kunhan taulut käyttävät uudempaa InnoDB-moottoria vanhan ja raihnaisen MyISAMin sijaan. Automaattinen poisto onnistuu lisäämällä FOREIGN KEY -määreen perään ON DELETE CASCADE.

Grez [07.01.2011 23:17:43]

#

Hennkka kirjoitti:

Tai mitä hyötyä relaatioista ylipäätänsä on?

Relaatioista on ennenkaikkea se hyöty, että ne varmistavat tietojen eheyttä. Eli ei voi olla taulussa sellaista arvoa, jota ei löydy vierastaulusta.

Jos ei laitta delete ja update casceja niin sitten se tietokanta huutaa jos yrittää vahingossa laittaa arvon jota ei ole tai poistaa tietueen johon viitataan. Jos taas laittaa cascadet, niin se päivittää poistot ja muutokset. Itse suosin ilman cascadea.

Hennkka [08.01.2011 21:31:42]

#

Kiitos. Niin minulle sanottiinkin ja sain toimimaan kotikoneella. Harmiksi vain kaverin palvelimella ei ole InnoDB-moottoria:(

Kuinka voisin muuttaa MySQL palvelimen aikavyöhykkeen? Kaverini palvelin lienee Amerikassa, mutta aikavyöhyke tuntuisi olevan UTC. Käytän MySQL:än NOW()-funktiota viestin ajan tallentamiseen, joten saisinko muutettua sen siten, että se palauttaa ajan Suomen ajassa ilman, että muutan kyselyä? Miten tämä onnistuis php:ssä?

ps. Grez: käytinkin SET NULL:ia, jottei tiedot katoa

Grez [08.01.2011 21:37:58]

#

Eikö järkevintä olisi tallentaa ne ajat kantaan UTC-muodossa ja sitten näyttää kulloisellekin käyttäjälle tämän omassa aikavyöhykkeessä? Jos tallennat suomen kesä/talvi-ajassa niin pitäisi muutenkin tallentaa tieto kummasta on kysymys, tai muuten tulee päällekkäisiä aikoja kun kelloja siirretään tunti taaksepäin.

Hennkka [08.01.2011 21:45:52]

#

Ajattelinkin, että aika kannattaa tallentaa UTC:nä ja tulkita sitten. Niin miten sen aikavyöhykkeen saa muutettua php:ssä. Siis siten, että aika funktiot palauttavat suoraan oikeassa ajassa? Ja kuinka saan selville käyttäjän aikavyöhykkeen?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta