Mikä on tietokanta? Opas sovellusten rakentajille
Tietokanta on järjestetty tietovarasto, johon sovellus tallentaa tietoja ja josta se lukee niitä: käyttäjät, tilaukset, varaukset, viestit. Toisin kuin selaimen välilehdelle jäävä tieto, tietokannan tieto on tallessa päivityksen tai uudelleenkäynnistyksen jälkeen, ja kaikki sovelluksen käyttäjät näkevät samat tietueet. Useimmat tietokannat järjestävät tiedot tauluihin, aivan kuin taulukkolaskennan välilehdet, mutta niissä on tiukat säännöt, jotka pitävät tiedot johdonmukaisina.
Miksi tämä on tärkeää, kun rakennat tekoälyllä
Yleisin yllätys tekoälyllä rakentavilla on sovellus, joka näyttää valmiilta mutta unohtaa kaiken. Lisäät asiakkaan, päivität sivun ja asiakas on poissa. Tämä tarkoittaa yleensä sitä, että sovellus säilytti tietoja selaimen muistissa eikä tietokannassa.
Tietokanta on myös paikka, jossa monet tärkeimmistä päätöksistäsi elävät, huomasitpa tai et:
- Mitä kirjaat. Jos et tallenna varauksen tilaa, et voi näyttää, mitkä varaukset on peruttu.
- Miten asiat liittyvät toisiinsa. Se, voiko yksi asiakas tehdä monta varausta vai yksi varaus monta palvelua, muokkaa koko sovellusta.
- Kuka näkee mitä. Useimmat yksityisyysvirheet liittyvät siihen, mitä tietueita käyttäjä saa lukea.
Tietokantaa ei tarvitse suunnitella itse. Perusteiden ymmärtäminen kuitenkin auttaa kuvaamaan tietosi selkeästi ja huomaamaan ongelmat ajoissa.
Arkinen vertauskuva
Kuvittele hyvin järjestetty arkistokaappi pienessä toimistossa.
Jokaisessa laatikossa on yhdenlaista tavaraa: yksi laatikko asiakkaille, yksi ajanvarauksille, yksi laskuille. Jokaisessa laatikon kansiossa on sama muoto ja samat kentät täytettyinä. Jokaisella kansiolla on yksilöllinen viitenumero, ja kun lasku kuuluu asiakkaalle, laskun kansio mainitsee asiakkaan numeron sen sijaan, että kopioitaisiin koko asiakastiedosto.
Tämä on relaatiotietokanta. Laatikot ovat tauluja, kansiot ovat rivejä, kentät ovat sarakkeita, viitenumerot ovat pääavaimia (primary key) ja toiseen kansioon osoittavat merkinnät ovat vierasavaimia (foreign key). Hyvä toimistopäällikkö valvoo myös sääntöjä, kuten „ei ajanvarausta ilman päivää” tai „kahdella asiakkaalla ei saa olla samaa numeroa”, aivan kuten tietokanta tekee.
Esimerkki: kampaamon varaussovellus
Oletetaan, että pyydät tekoälyä rakentamaan varaussivuston kampaamolle. Järkevässä tietokannassa olisi neljä taulua.
services (palvelut)
| id | name | duration_minutes | price |
|---|---|---|---|
| 1 | Hiustenleikkaus | 45 | 40,00 |
| 2 | Värjäys | 90 | 95,00 |
staff (henkilökunta)
| id | name | |
|---|---|---|
| 1 | Sara | sara@example.com |
| 2 | Omar | omar@example.com |
customers (asiakkaat)
| id | name | phone | |
|---|---|---|---|
| 101 | Lena Park | lena@example.com | 555-0100 |
bookings (varaukset)
| id | customer_id | service_id | staff_id | starts_at | status |
|---|---|---|---|---|---|
| 5001 | 101 | 1 | 2 | 2026-10-03 14:00 | confirmed |
Katso taulua bookings. Se ei kopioi Lenan nimeä ja puhelinnumeroa jokaiseen varaukseen, vaan tallentaa customer_id = 101. Jos Lena vaihtaa puhelinnumeronsa, se muuttuu yhteen paikkaan, ja jokainen varaus näyttää uuden numeron. Tämä on relaatiotietokannan ydinajatus: tallenna jokainen tieto kerran ja viittaa siihen.
Sama rakenne vastaa hyödyllisiin kysymyksiin:
- „Mitkä ajat ovat vapaita Omarilla perjantaina?” Katso Omarin varaukset sinä päivänä.
- „Paljonko värjäykset tuottivat tässä kuussa?” Yhdistä varaukset palveluihin ja laske hinnat yhteen.
- „Ketkä asiakkaat eivät ole varanneet 90 päivään?” Vertaa asiakkaita heidän viimeisimpään varaukseensa.
Keskeiset termit
| Termi | Mitä se tarkoittaa |
|---|---|
| Taulu | Kokoelma yhdenlaisia tietueita, kuten asiakkaita tai varauksia. |
| Rivi (tietue) | Yksi kohde taulussa: yksi asiakas, yksi varaus. |
| Sarake (kenttä) | Yksi tietotyyppi, joka jokaisella rivillä on, kuten sähköposti tai hinta. |
| Pääavain | Jokaisen rivin yksilöllinen tunniste, yleensä numero tai satunnainen merkkijono. |
| Vierasavain | Sarake, joka osoittaa toisen taulun riviin, kuten customer_id varauksissa. |
| Skeema | Koko suunnitelma: mitkä taulut ovat olemassa, niiden sarakkeet ja miten ne liittyvät. |
| Kysely (query) | Pyyntö lukea tai muuttaa tietoja, kuten „kaikki huomisen varaukset”. |
| SQL | Structured Query Language, relaatiotietokantojen yleinen kyselykieli. |
| Migraatio | Tallennettu, toistettavissa oleva muutos skeemaan, kuten uuden sarakkeen lisääminen. |
| Indeksi | Hakurakenne, joka nopeuttaa haun saraketta, kuten kirjan hakemisto. |
| CRUD | Create, Read, Update, Delete: neljä perusasiaa, joita sovellukset tekevät tiedoille. |
| Varmuuskopio | Kopio tiedoista, jonka voi palauttaa, jos jotain menee pieleen. |
Tietokantatyypit
| Tyyppi | Miten se tallentaa tiedot | Esimerkkejä | Hyvä |
|---|---|---|---|
| Relaatio (SQL) | Taulut kiinteillä sarakkeilla ja niiden välisillä yhteyksillä | Postgres, MySQL, SQLite | Useimmat liiketoimintasovellukset: varaukset, kaupat, asiakkuudenhallinta, SaaS |
| Dokumentti (NoSQL) | Joustavat JSON-tyyppiset dokumentit | MongoDB, Firestore | Tiedot, joiden muoto vaihtelee paljon tietueesta toiseen |
| Avain-arvo | Arvo tallennettuna avaimen alle | Redis | Välimuisti, lyhytaikaiset tiedot kuten istunnot |
Kaikelle, minkä perustaja tai pieni yritys rakentaa ensin, relaatiotietokanta on turvallinen oletus.
Missä tietokanta sijaitsee sovelluksessasi
Käyttäjät eivät puhu tietokannan kanssa suoraan. Selaimessa oleva sivu (frontend, käyttöliittymä) pyytää palvelimelta (backend) tietoja, yleensä API:n kautta. Palvelin tarkistaa, kuka pyytää ja onko hänellä lupa, kysyy sitten tietokannasta ja lähettää takaisin vain sen, minkä kyseisen henkilön pitää nähdä.
Tämä välivaihe on tärkeä. Jos selain voisi kysyä tietokantaa suoraan täydellä käyttöoikeudella, kuka tahansa voisi avata kehittäjätyökalut ja lukea kaiken.
Yleisiä virheitä ja väärinkäsityksiä
- Tietojen säilyttäminen vain selaimessa. Selaimen tallennustila (kuten localStorage) asuu yhdellä laitteella ja yhdessä selaimessa. Se sopii muistettuun suodattimeen, ei tilauksiin.
- Kaiken tunkeminen yhteen tauluun. Yksi „varaukset”-taulu, johon asiakkaan nimi, puhelin ja palvelun hinta on kopioitu jokaiselle riville, menee nopeasti epäsynkroniin.
- Salasanojen tallentaminen selkokielisinä. Salasanat pitää tiivistää (hash), ei tallentaa luettavina. Katso mitä todennus on.
- Ei sääntöjä tiedoille. Ilman pakollisia kenttiä ja yksilöllisyyssääntöjä saat varauksia ilman päivää ja kaksoiskappaleita asiakkaista.
- Poistamisen unohtaminen. Päätä, poistaako asiakkaan poisto myös hänen varauksensa, säilyttääkö se ne vai estääkö se poiston.
- Tuotantotietojen käyttäminen kokeiluihin. Testaa riskialtisia muutoksia turvallisessa paikassa ja pidä varmuuskopiot.
- Taulukkolaskennan pitäminen tietokantana ikuisesti. Taulukot sopivat hyvin alkuun, mutta ne kärsivät, kun käyttäjiä on monta samanaikaisesti tai oikeuksia tarvitaan. Katso miten muutat taulukon sovellukseksi.
Mitä pyytää tekoälyrakentajalta
- „Tallenna tämä tietokantaan, älä selaimeen. Kerro, mitkä taulut luot.”
- „Näytä skeema yksinkertaisena taulukkona: jokainen taulu, sen sarakkeet ja niiden väliset yhteydet.”
- „Asiakkaalla voi olla monta varausta. Jokaisella varauksella on täsmälleen yksi palvelu ja yksi henkilökunnan jäsen.”
- „Tee asiakkaan sähköpostista pakollinen ja yksilöllinen.”
- „Estä kahta varausta samalle henkilökunnan jäsenelle menemästä päällekkäin.”
- „Vain kirjautunut omistaja saa lukea kaikki varaukset. Asiakkaat näkevät vain omansa. Varmista se palvelimella.”
- „Kun poistan palvelun, älä poista menneitä varauksia. Merkitse palvelu sen sijaan passiiviseksi.”
Tietokannat Mythexissä
Kun sovelluksesi täytyy tallentaa tietoja, Mythex lisää projektiin oman Postgres-tietokannan. Voit pyytää sitä chatissa („tallenna odotuslistan rekisteröitymiset tietokantaan”) tai käyttää komentoa /database. Yhteystiedot annetaan sovellukselle automaattisesti, ja agentti luo taulut. Tietokanta nukkuu viiden tyhjäkäyntiminuutin jälkeen ja herää seuraavalla pyynnöllä. Julkaistun käytön hinta lasketaan ajasta, jolloin tietokanta oli hereillä, samasta krediittisaldosta kuin rakentaminen. Se on saatavilla Free- ja Pro-tasoilla. Tietokantadokumentaatio kertoo lisää, ja sovellusmallit tarjoavat datalähtöisiä aloituskohtia.
Kysymykset
Mikä on tietokanta yksinkertaisesti selitettynä?
Tietokanta on järjestetty tietovarasto, johon sovellus tallentaa tietoja ja josta se lukee niitä, kuten käyttäjiä, tilauksia tai varauksia. Toisin kuin selaimen välilehdelle jäävä tieto, tietokannan tieto säilyy päivityksen, uudelleenkäynnistyksen tai toisella laitteella avaamisen jälkeen.
Onko taulukkolaskenta tietokanta?
Taulukkolaskenta voi pitää samanlaista tietoa, mutta sitä ei ole tehty sovelluksia varten. Oikea tietokanta valvoo sääntöjä siitä, mitä kukin sarake sisältää, yhdistää taulut luotettavasti, käsittelee monen ihmisen kirjoituksia samanaikaisesti ja hallitsee, kuka saa lukea mitäkin.
Mikä on ero SQL- ja NoSQL-tietokantojen välillä?
SQL-tietokannat (relaatiotietokannat), kuten Postgres ja MySQL, tallentavat tiedot tauluihin, joissa on määritellyt sarakkeet ja niiden väliset yhteydet. NoSQL-tietokannat, kuten MongoDB, tallentavat joustavampia dokumentteja. Useimmat liiketoimintasovellukset, kuten varaukset, asiakkuudenhallinta ja kaupat, sopivat relaatiomalliin hyvin.
Tarvitseeko sovellukseni tietokannan?
Jos sen täytyy muistaa jotain, mitä ihmiset syöttävät, kuten rekisteröitymisiä, tilauksia, viestejä tai asetuksia, ja näyttää sen myöhemmin tai jollekin toiselle, tarvitsee. Pelkästään tietoa esittävä sivusto ilman tietoja tallentavia lomakkeita ei yleensä tarvitse.