SQLite-kehittäjiä kannustetaan käyttämään tiukasti tyypitettyjä tauluja

SQLite-tietokannan tiukasti tyypitetyt taulut voivat ehkäistä tavallisia tietovirheitä jo tallennusvaiheessa. Taulun määrittelyyn lisättävä STRICT-sana estää esimerkiksi tekstin lisäämisen kokonaisluvuille tarkoitettuun sarakkeeseen ja paljastaa sellaisia virheellisiä saraketyyppejä, jotka SQLite voisi tavallisesti hyväksyä.
STRICT valvoo arvoja ja sarakemäärittelyjä
SQLite tunnetaan joustavasta tyyppijärjestelmästään. Tavalliseen INTEGER-sarakkeeseen voi tallentaa tekstiä, vaikka se ei vastaisi kehittäjän tarkoitusta. Tiukassa taulussa vääräntyyppinen arvo hylätään sekä uuden rivin lisäämisen että olemassa olevan rivin päivittämisen yhteydessä. Näin sama tyyppivalvonta koskee lähdeaineiston mukaan sekä INSERT- että UPDATE-toimintoja.
STRICT otetaan käyttöön lisäämällä sana taulun määrittelyn loppuun. Tiukassa taulussa jokaiselle sarakkeelle on ilmoitettava tietotyyppi, joten esimerkiksi kokonaan ilman tyyppiä määritelty sarake ei kelpaa. Sallittuja tyyppejä ovat INT, INTEGER, REAL, TEXT, BLOB ja ANY. Rajaus estää myös keksittyjen, väärin kirjoitettujen tai SQLiten tukemia tyyppejä koskeviin väärinkäsityksiin perustuvien tyyppinimien käytön. Ilman STRICT-määritystä SQLite voi hyväksyä tällaisia määrittelyjä.
Valvonta ei kuitenkaan hylkää arvoa, jos se voidaan muuntaa oikeaan tyyppiin tietoa menettämättä. Esimerkiksi merkkijono ”123” hyväksytään INTEGER-sarakkeeseen, koska se voidaan muuntaa täsmällisesti kokonaisluvuksi. Kyse ei siis ole kaikkien eri muodossa annettujen arvojen torjumisesta, vaan sellaisen sisällön estämisestä, jota ei voida sovittaa sarakkeen ilmoitettuun tyyppiin häviöttömästi.
ANY säilyttää harkitun joustavuuden
Jos yksittäiseen sarakkeeseen tarvitaan tarkoituksella eri tyyppisiä arvoja, sille voidaan määrittää ANY-tyyppi myös tiukassa taulussa. Se sallii kaikenlaiset arvot, vaikka muut sarakkeet noudattavat STRICT-taulun rajoituksia. Näin joustavuus voidaan kohdistaa vain siihen sarakkeeseen, jossa se on tietoinen ratkaisu.
Tiukkuuden hyötynä on, että kirjoitusvirheet, virheelliset tyyppinimet ja tahattomat tallennukset muuttuvat välittömiksi virheiksi. Lähdekirjoituksen tekijä pitää vääränä esimerkiksi tekstin tallentamista kokonaislukusarakkeeseen ja suosittelee siksi STRICT-määrityksen käyttämistä taulun perustamisesta lähtien.
Vanhan taulun muuttaminen voi vaatia kopioinnin
Käyttöönotto ei välttämättä ole yhtä suoraviivaista olemassa olevissa tietokannoissa. Kirjoittaja ei tunne tapaa muuttaa tavallista taulua suoraan tiukaksi ALTER-komennolla. Hänen arvionsa mukaan tiedot täytyy tällöin kopioida vanhasta taulusta uuteen STRICT-määrityksellä luotuun tauluun. Siksi ominaisuus on helpointa valita jo tietokannan rakennetta suunniteltaessa.
Jatka aiheesta Teknologia.
Artikkeli on laadittu tekoälyavusteisesti. Lue toimitusperiaatteemme.