Avainten ja tietotyyppien valinta
Valitkaa BIGSERIAL- ja UUID-pääavainten välillä, päättäkää TEXT- ja VARCHAR(n)-tyyppien välillä ja valitkaa oikea tyyppi jokaiselle sarakkeelle.
Avainten ja tietotyyppien valinta on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Perusavaimen valitseminen
Kolme käytännön vaihtoehtoa:
- BIGSERIAL — monotonisesti kasvava 64-bittinen kokonaisluku
- UUID — maailmanlaajuisesti yksikäsitteinen 128-bittinen tunnus
- Luonnollinen avain — todellisen maailman tunniste, kuten sähköpostiosoite tai ISBN
Milloin BIGSERIAL on paras valinta
Oletusvalinta useimmissa sovelluksissa:
- Pieni koko (8 tavua), nopea indeksi ja hyvä välimuistiystävällisyys
- Monotonisuus → uudet tiedot sijoittuvat indeksin loppuun
- Helppo lukea URL-osoitteissa, esimerkiksi
/posts/42
Milloin UUID on paras valinta
Valitkaa UUID, kun:
- Tarvitsette maailmanlaajuisesti yksikäsitteiset tunnukset (useita datakeskuksia tai offline-first-sovelluksia)
- Ette halua tunnusten paljastavan liiketoiminnan volyymia URL-osoitteissa
- Haluatte luoda tunnuksen asiakaspuolella ennen lisäystä
Haittapuoli: 16 tavua (BIGINT-arvon 8 tavun sijaan), ja v4 UUID:t hajauttavat lisäykset indeksissä satunnaisesti.
Miksi luonnolliset avaimet ovat riskialttiita
Sähköpostiosoitteet muuttuvat. SKU-tunnuksia nimetään uudelleen. Maakoodit jakautuvat. Käyttäkää PK:na korvaavaa avainta ja määrittäkää luonnolliselle avaimelle UNIQUE-rajoite.
Saraketyypit: merkkijonot
Useimpia tekstisarakkeita varten:
VARCHAR(n)— kun yläraja on ehdoton (sähköpostiosoitteet, koodit)TEXT— vapaamuotoiselle ja pitkälle sisällölleCITEXT— kun vertailun tulee aina olla kirjainkoosta riippumatonta (sähköpostiosoitteet!)
Saraketyypit: luvut
Numeerisia sarakkeita varten:
BIGINTtunnuksille ja laskureilleNUMERIC(p, s)rahasummilleREAL/DOUBLE PRECISIONainoastaan tieteellisiin laskelmiin
Saraketyypit: aika
Aikasarakkeita varten:
TIMESTAMPTZtapahtumille (oletus)DATEkalenteripäiville (syntymäpäivät, juhlapäivät)TIMEkellonajalle ilman päivämäärää (liikkeen aukioloajat)
Boolean-arvo vai tila
Jos sarakkeella voi tulevaisuudessa olla enemmän kuin kaksi tilaa, käyttäkää mieluummin tilatekstiä ja CHECK-rajoitetta kuin boolean-arvoa:
-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))
-- vs the trap of "is_published BOOLEAN" when you later need a third state.Rajoitteet samalla kertaa
Jokaisella sarakkeella tulisi olla:
- Sopiva mahdollisimman suppea tyyppi
NOT NULL, ellei NULL-arvolla ole omaa merkitystäänDEFAULT, jos sarakkeen arvo on useimmiten samaCHECK, jos arvoille on toimialueen sääntö- Indeksi, jos saraketta käytetään WHERE-, JOIN- tai ORDER-lauseissa
Tallennustilan vaikutukset
Suppeat tyypit = pienemmät rivit = enemmän rivejä sivua kohden = parempi välimuistin osumaprosentti. Vaihtaminen tyypistä TEXT tyyppiin VARCHAR(20) ei säästä tilaa (tallennustila on sama). Vaihtaminen tyypistä BIGINT tyyppiin INT puolittaa sarakkeen leveyden.
Vierasavainten tyyppien on oltava samat
Vierasavainsarakkeiden tyyppien on vastattava viitatun PK:n tyyppiä täsmälleen:
-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id) -- where users.id is BIGINT
-- Right:
user_id BIGINT REFERENCES users(id)Kertaus
Tyypin valinta on osa suunnittelua.
- BIGSERIAL tai UUID PK:lle
- NUMERIC rahasummille
- TIMESTAMPTZ tapahtumille
- TEXT ja CHECK muuttuville tiloille
- NOT NULL oletuksena
Pikatarkistus
Tallennatte tapahtumien aikaleimoja käyttäjille, jotka ovat useilla aikavyöhykkeillä. Mitä tyyppiä käytätte?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”Avainten ja tietotyyppien valinta” ilmainen?
Kyllä – oppitunnin ”Avainten ja tietotyyppien valinta” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Avainten ja tietotyyppien valinta”?
Valitkaa BIGSERIAL- ja UUID-pääavainten välillä, päättäkää TEXT- ja VARCHAR(n)-tyyppien välillä ja valitkaa oikea tyyppi jokaiselle sarakkeelle. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Avainten ja tietotyyppien valinta”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Blogin mallintaminen: käyttäjät, julkaisut, kommentit
- Avainten ja tietotyyppien valinta
- Indeksit yleisiä kyselyitä varten
- Tietokannan alustaminen testidatalla