SQL Academy · Oppitunti

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.

Oppitunti 2/413 vaihetta

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:

  1. BIGSERIAL — monotonisesti kasvava 64-bittinen kokonaisluku
  2. UUID — maailmanlaajuisesti yksikäsitteinen 128-bittinen tunnus
  3. 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ölle
  • CITEXT — kun vertailun tulee aina olla kirjainkoosta riippumatonta (sähköpostiosoitteet!)

Saraketyypit: luvut

Numeerisia sarakkeita varten:

  • BIGINT tunnuksille ja laskureille
  • NUMERIC(p, s) rahasummille
  • REAL/DOUBLE PRECISION ainoastaan tieteellisiin laskelmiin

Saraketyypit: aika

Aikasarakkeita varten:

  • TIMESTAMPTZ tapahtumille (oletus)
  • DATE kalenteripäiville (syntymäpäivät, juhlapäivät)
  • TIME kellonajalle 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ään
  • DEFAULT, jos sarakkeen arvo on useimmiten sama
  • CHECK, 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?

Aloita maksutta

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

  1. Blogin mallintaminen: käyttäjät, julkaisut, kommentit
  2. Avainten ja tietotyyppien valinta
  3. Indeksit yleisiä kyselyitä varten
  4. Tietokannan alustaminen testidatalla
← Takaisin: SQL Academy